Top Level Namespace

Includes:
GLI::App

Defined Under Namespace

Modules: Jetel, Kernel

Constant Summary collapse

LOADERS =
Jetel::Loaders.loaders
MODULES =
Jetel::Modules.modules
MODULES_ACTIONS =
{
  sources: {
    params: [
      {
        desc: 'Format',
        default_value: nil,
        arg_name: 'format=format',
        flag: [:format]
      }
    ]
  },
  download: nil,
  extract: nil,
  transform: nil,
  load: {
    params: [
      {
        desc: 'Column type',
        default_value: nil,
        arg_name: 'column-name=column-type',
        flag: [:column_type]
      },
      {
        desc: 'Num Lines to analyze',
        default_value: 1000,
        arg_name: 'num',
        flag: [:analyze_num_rows]
      }
    ]
  }
}
DOWNLOADERS =
Jetel::Downloaders.downloaders

Instance Method Summary collapse

Instance Method Details

#get_module_name(m) ⇒ String

Gets module name

Parameters:

  • m (Hash)

    Module info

Returns:

  • (String)

    Module name



66
67
68
# File 'lib/jetel/cli/cmd/modules_cmd.rb', line 66

def get_module_name(m)
  m[:name]
end

#launch(argv = ARGV) ⇒ Object



30
31
32
# File 'lib/jetel/cli/app.rb', line 30

def launch(argv = ARGV)
  run(argv)
end

#register_module(m) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/jetel/cli/cmd/modules_cmd.rb', line 96

def register_module(m)
  module_name = get_module_name(m)

  desc "Module #{module_name}"
  command(m[:name], m[:class_name]) do |c|
    module_instance = m[:klass].new

    MODULES_ACTIONS.each do |name, spec|
      next unless module_instance.respond_to?(name)

      register_module_action(c, m, name, spec) do |global_options, options, args|
        module_instance.send(name, global_options, options, args)
      end
    end
  end
end

#register_module_action(c, modul, name, spec, &block) ⇒ Object

Register module (CLI) action

Parameters:

  • c

    Parent command

  • m (Module)

    Module instance

  • action_command (String)

    Nested command name

  • action_desc (String)

    Nested command action description

Returns:

  • (Object)

    Return value



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/jetel/cli/cmd/modules_cmd.rb', line 77

def register_module_action(c, modul, name, spec, &block)
  module_name = modul[:name]
  action_description = spec && spec[:description] || "#{name} #{module_name}"

  params = spec && spec[:params] || []


  c.desc(action_description)
  c.command(name) do |cmd|
    params.each do |param|
      param.each do |name, val|
        cmd.send name, val
      end
    end

    cmd.action(&block)
  end
end