class Envo::CmdClean

Constants

Name

Attributes

names[R]

Public Class Methods

new(names) click to toggle source
# File lib/envo/cmd_clean.rb, line 29
def initialize(names)
  raise Error.new 'clean: no names provided' if names.empty?
  @names = names
end
parse_cli(args) click to toggle source
# File lib/envo/cmd_clean.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_clean.rb, line 25
def self.parse_tokens(tokens, opts)
  ParsedCmd.new(CmdClean.new(tokens), opts)
end
register_cli_parser(parser) click to toggle source
# File lib/envo/cmd_clean.rb, line 12
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_clean.rb, line 4
    def self.register_help(help)
      help.add_cmd "clean <name> ...", <<~EOF
        cleans environent variables
        unsets empty strings, non-existing paths, empty lists
        removes duplicates from lists and non-existing paths from path lists
      EOF
    end
register_script_parser(parser) click to toggle source
# File lib/envo/cmd_clean.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_clean.rb, line 36
def execute(ctx)
  @names.each do |name|
    ename = ctx.expand_name(name)

    if ctx.raw?
      val = ctx.raw_get(ename)
      ctx.unset(ename) if val && val.empty?
    else
      val = ctx.smart_get(ename)
      if val.type != :empty
        val.clean!
        ctx.smart_set(ename, val)
      end
    end
  end
end