class Envo::CmdCopy
Constants
- Name
Attributes
source[RW]
target[RW]
Public Class Methods
new(source, target)
click to toggle source
# File lib/envo/cmd_copy.rb, line 30 def initialize(source, target) @source = source @target = target end
parse_cli(args)
click to toggle source
# File lib/envo/cmd_copy.rb, line 20 def self.parse_cli(args) opts = CliParser.filter_opts(args) parse_tokens(args, opts) end
parse_tokens(tokens, opts)
click to toggle source
# File lib/envo/cmd_copy.rb, line 25 def self.parse_tokens(tokens, opts) raise Envo::Error.new "copy: provide two names to copy. Use 'copy <source-name> <target-name>'" if tokens.size != 2 ParsedCmd.new(CmdCopy.new(tokens[0], tokens[1]), opts) end
register_cli_parser(parser)
click to toggle source
# File lib/envo/cmd_copy.rb, line 11 def self.register_cli_parser(parser) parser.add_cmd(Name, ->(cmd, args) { parse_cli(args) }) parser.add_cmd('cp', ->(cmd, args) { parse_cli(args) }) end
register_help(help)
click to toggle source
# File lib/envo/cmd_copy.rb, line 4 def self.register_help(help) help.add_cmd 'copy <source-name> <target-name>', <<~EOF copy value of source to target shorthand: 'cp' EOF end
register_script_parser(parser)
click to toggle source
# File lib/envo/cmd_copy.rb, line 16 def self.register_script_parser(parser) parser.add_cmd(Name, ->(cmd, tokens, opts) { parse_tokens(tokens, opts) }) end
Public Instance Methods
execute(ctx)
click to toggle source
# File lib/envo/cmd_copy.rb, line 37 def execute(ctx) esrc = ctx.expand_name(@source) raw_src = ctx.raw_get(esrc) raise Envo::Error.new "copy: no such var '#{esrc}'" if !raw_src && !ctx.force? return if !raw_src etarget = ctx.expand_name(@target) raw_target = ctx.raw_get(etarget) ok = !raw_target ok ||= ctx.ask("'#{etarget}' already exists. Overwrite?") raise Envo::Error.new "'#{etarget}' exists" if !ok return if esrc == etarget # copy something over itself... return if !raw_src && !raw_target # no point in doing anything if they don't exist ctx.raw_set(etarget, raw_src) end