class Envo::CmdSwap

Constants

Name

Attributes

name_a[RW]
name_b[RW]

Public Class Methods

new(name_a, name_b) click to toggle source
# File lib/envo/cmd_swap.rb, line 26
def initialize(name_a, name_b)
  @name_a = name_a
  @name_b = name_b
end
parse_cli(args) click to toggle source
# File lib/envo/cmd_swap.rb, line 16
def self.parse_cli(args)
  opts = CliParser.filter_opts(args)
  parse_tokens(args, opts)
end
parse_tokens(args, opts) click to toggle source
# File lib/envo/cmd_swap.rb, line 21
def self.parse_tokens(args, opts)
  raise Envo::Error.new "swap: provide two names to swap. Use 'swap <name1> <name2>'" if args.size != 2
  ParsedCmd.new(CmdSwap.new(args[0], args[1]), opts)
end
register_cli_parser(parser) click to toggle source
# File lib/envo/cmd_swap.rb, line 8
def self.register_cli_parser(parser)
  parser.add_cmd(Name, ->(cmd, args) { parse_cli(args) })
end
register_help(help) click to toggle source
# File lib/envo/cmd_swap.rb, line 4
def self.register_help(help)
  help.add_cmd 'swap <name1> <name2>', "swap values of two environment variables"
end
register_script_parser(parser) click to toggle source
# File lib/envo/cmd_swap.rb, line 12
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_swap.rb, line 33
def execute(ctx)
  ea = ctx.expand_name(@name_a)
  raw_a = ctx.raw_get(ea)
  raise Envo::Error.new "swap: no such var '#{ea}'" if !raw_a && !ctx.force?

  eb = ctx.expand_name(@name_b)
  raw_b = ctx.raw_get(eb)
  raise Envo::Error.new "swap: no such var '#{eb}'" if !raw_b && !ctx.force?

  return if ea == eb # swap something with itself...
  return if !raw_a && !raw_b # no point in doing anything if they don't exist

  ctx.raw_set(ea, raw_b)
  ctx.raw_set(eb, raw_a)
end