Always pass basename to install_p
Currently, when called with one argument, dst is set to self, i.e. the directory into which the source file should be moved. When called with a second argument (for renames), dst is the full path, including the basename, to the moved file. Instead, let's always pass the full path, which means we can remove the branching logic around computing dst.
This commit is contained in:
		
							parent
							
								
									453990f1aa
								
							
						
					
					
						commit
						6f0efd6f3d
					
				@ -21,28 +21,23 @@ class Pathname
 | 
			
		||||
          opoo "tried to install empty array to #{self}"
 | 
			
		||||
          return
 | 
			
		||||
        end
 | 
			
		||||
        src.each {|s| install_p(s) }
 | 
			
		||||
        src.each { |s| install_p(s, File.basename(s)) }
 | 
			
		||||
      when Hash
 | 
			
		||||
        if src.empty?
 | 
			
		||||
          opoo "tried to install empty hash to #{self}"
 | 
			
		||||
          return
 | 
			
		||||
        end
 | 
			
		||||
        src.each {|s, new_basename| install_p(s, new_basename) }
 | 
			
		||||
        src.each { |s, new_basename| install_p(s, new_basename) }
 | 
			
		||||
      else
 | 
			
		||||
        install_p(src)
 | 
			
		||||
        install_p(src, File.basename(src))
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def install_p src, new_basename = nil
 | 
			
		||||
  def install_p(src, new_basename)
 | 
			
		||||
    raise Errno::ENOENT, src.to_s unless File.symlink?(src) || File.exist?(src)
 | 
			
		||||
 | 
			
		||||
    if new_basename
 | 
			
		||||
      new_basename = File.basename(new_basename) # rationale: see Pathname.+
 | 
			
		||||
      dst = self+new_basename
 | 
			
		||||
    else
 | 
			
		||||
      dst = self
 | 
			
		||||
    end
 | 
			
		||||
    dst = join(new_basename)
 | 
			
		||||
 | 
			
		||||
    src = src.to_s
 | 
			
		||||
    dst = dst.to_s
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,6 @@
 | 
			
		||||
module InstallRenamed
 | 
			
		||||
  def install_p _, new_basename = nil
 | 
			
		||||
  def install_p(_, new_basename)
 | 
			
		||||
    super do |src, dst|
 | 
			
		||||
      dst += "/#{File.basename(src)}" if File.directory? dst
 | 
			
		||||
 | 
			
		||||
      if File.directory? src
 | 
			
		||||
        Pathname.new(dst).install Dir["#{src}/*"]
 | 
			
		||||
        next
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user