class Envo::CmdReset

Constants

Name

Attributes

helper[RW]
name[RW]

Public Class Methods

new(name, helper) click to toggle source
# File lib/envo/cmd_reset.rb, line 46
def initialize(name, helper)
  @name = name
  @helper = helper
end
parse_cli(args) click to toggle source
# File lib/envo/cmd_reset.rb, line 19
def self.parse_cli(args)
  opts = CliParser.filter_opts(args)
  parse_tokens(args, opts)
end
parse_script(args) click to toggle source
# File lib/envo/cmd_reset.rb, line 42
def self.parse_script(args)
  puts "#{Name} parse_script"
end
parse_tokens(args, opts) click to toggle source
# File lib/envo/cmd_reset.rb, line 24
def self.parse_tokens(args, opts)
  raise Envo::Error.new "reset: missing name. Use 'reset <name> [= [<val>]]'" if args.empty? || args[0][0] == '='
  if args.size == 1
    arg = args[0]
    cnt = arg.count('=')
    return ParsedCmd.new(CmdReset.new(arg, nil), opts) if cnt == 0
    if cnt == 1 && arg[-1] == '='
      split = arg.split('=')
      return ParsedCmd.new(CmdReset.new(split[0], nil), opts) if split.size == 1
    end
  elsif args.size == 2
    return ParsedCmd.new(CmdReset.new(args[0], nil), opts) if args[1] == '='
  end

  helper = CmdSet.parse_cli(args).cmd
  ParsedCmd.new(CmdReset.new(helper.name, helper), opts)
end
register_cli_parser(parser) click to toggle source
# File lib/envo/cmd_reset.rb, line 11
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_reset.rb, line 4
    def self.register_help(help)
      help.add_cmd 'reset <name>[=[<val>]]', <<~EOF
        set or unset value of an existing environment variable
        produce an error if the variable doesn't exist
      EOF
    end
register_script_parser(parser) click to toggle source
# File lib/envo/cmd_reset.rb, line 15
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_reset.rb, line 53
def execute(ctx)
  ename = ctx.expand_name(@name)

  raise Envo::Error.new "reset: no such var '#{ename}'" if !ctx.raw_get(ename)

  if !@helper
    ctx.unset(ename)
  else
    @helper.name = @name
    @helper.execute(ctx)
  end
end