Sha256: 4841d2c964ae0da84c2318d31ab6733fabbbf59985d8294c5abc4fcc3335a79b

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

#!/usr/bin/env ruby

require 'shell_helpers/pathname'
require 'shell_helpers/options'

opts = Slop.parse(ARGV) do |o|
	o.bool "-v", "--verbose", "verbose"
	o.int "--verbose-level", "verbose level"
	o.bool "-t", "--test", "test"
	o.symbol "-m", "--mode", "Conversion mode", default: :rel
	o.symbol "--rm", "rm options", default: :noclobber
	o.symbol "--dereference-mode", "dereference mode for dest"
	o.bool "-L", "--dereference", "dereference dest"
	o.bool "-f", "--force", "force remove"
	o.on '--help' do
		puts o
		exit
	end
end

if opts[:force]
	opts[:rm] ||= :all
else
	opts[:rm] ||= :noclobber
end
#dereference-mode can also take the values 'simple' and 'none'
opts[:"dereference-mode"] ||= opts[:dereference]

pathname=ShellHelpers::Pathname
if opts[:verbose] and opts[:test]
	pathname=ShellHelpers::Pathname::DryRun
elsif opts[:verbose] and !opts[:test]
	pathname=ShellHelpers::Pathname::Verbose
elsif opts[:test]
	pathname=ShellHelpers::Pathname::NoWrite
end

*args,dest=opts.args
dest=pathname.new(dest)
if args.empty?
	warn "You should specify at least two arguments"
	exit 1
end
if args.length > 1 and !dest.directory?
	warn "When specifying more than one target, dest should be a directory"
	exit 1
end
args.each do |f|
	f=pathname.new(f)
	t=dest.directory? ? dest+f.basename : dest
	t=f.rel_path_to(t, mode: opts[:mode])
	puts "#{f} -> #{t}" if opts[:verbose]
	dest.on_mv(f, mode: opts[:rm], verbose: opts[:verbose], dereference: opts[:"dereference-mode"]) and f.on_ln_s(t, verbose: opts[:verbose])
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shell_helpers-0.7.1 bin/mv_and_ln.rb
shell_helpers-0.7.0 bin/mv_and_ln.rb
shell_helpers-0.6.0 bin/mv_and_ln.rb