Class: Envo::CmdReset

Inherits:
Object
  • Object
show all
Defined in:
lib/envo/cmd_reset.rb

Constant Summary collapse

Name =
'reset'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, helper) ⇒ CmdReset

Returns a new instance of CmdReset.



46
47
48
49
# File 'lib/envo/cmd_reset.rb', line 46

def initialize(name, helper)
  @name = name
  @helper = helper
end

Instance Attribute Details

#helperObject

Returns the value of attribute helper.



51
52
53
# File 'lib/envo/cmd_reset.rb', line 51

def helper
  @helper
end

#nameObject

Returns the value of attribute name.



51
52
53
# File 'lib/envo/cmd_reset.rb', line 51

def name
  @name
end

Class Method Details

.parse_cli(args) ⇒ Object



19
20
21
22
# 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) ⇒ Object



42
43
44
# File 'lib/envo/cmd_reset.rb', line 42

def self.parse_script(args)
  puts "#{Name} parse_script"
end

.parse_tokens(args, opts) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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) ⇒ Object



11
12
13
# 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) ⇒ Object



4
5
6
7
8
9
# 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) ⇒ Object



15
16
17
# 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

Instance Method Details

#execute(ctx) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# 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