class Grouik::Helpers::Cli

Cli helper, see “Grouik::Cli“

Public Instance Methods

host_os() click to toggle source

@return [String]

# File src/lib/grouik/helpers/cli.rb, line 84
def host_os
  RbConfig::CONFIG['host_os']
end
license() click to toggle source

Get the license

@return [String]

# File src/lib/grouik/helpers/cli.rb, line 68
def license
  Grouik.version_info[:license].to_s.gsub(/\n{3}/mi, "\n\n")
end
make_parser(options = {}) click to toggle source

Provide an “OptionParser“

@param [Hash] options @return [OptionParser]

# File src/lib/grouik/helpers/cli.rb, line 17
def make_parser(options = {})
  parser = OptionParser.new

  {
    basedir: ['--basedir=BASEDIR', 'Basedir [%s]' % options[:basedir]],
    output: ['-o=OUTPUT', '--output=OUTPUT', 'Output [/dev/stdout]'],
    require: ['-r=REQUIRE', '--require=REQUIRE',
              'Required file on startup'],
    ignores: ['--ignores x,y,z', Array, 'Ignores'],
    paths: ['--paths x,y,z', Array, 'Paths'],
    stats: ['--[no-]stats', 'Display some stats'],
    version: ['--version', 'Display the version and exit']
  }.each do |k, v|
    parser.on(*v) { |o| options[k] = o }
  end

  parser
end
prepare_options(options) click to toggle source

Prepare options

Process values in order to easify their use

@param [Hash] options @return [Hash]

# File src/lib/grouik/helpers/cli.rb, line 42
def prepare_options(options)
  [:require, :output].each do |k|
    next unless options[k]
    begin
      options[k] = Pathname.new(options[k])
    rescue TypeError
      next
    end
    unless options[k].absolute?
      options[k] = Pathname.new(Dir.pwd).join(options[k])
    end
  end

  [:ignores, :paths].each do |k|
    next unless options[k]
    options[k] = [options[k]] if options[k].is_a? String

    options[k] = options[k].to_a.map { |s| /#{s}/ } if :ignores == k
  end

  options
end
read_config(path) click to toggle source

Read a config file

@param [String] path @return [Hash]

# File src/lib/grouik/helpers/cli.rb, line 92
def read_config(path)
  file = Pathname.new(path.to_s)
  config = YAML.safe_load(file.read)

  h = config.each_with_object({}) do |(k, v), n|
    n[k.intern] = v
  end

  h
end
version_chapter() click to toggle source

Get a displayable version

Some inspiration taken from “wget –version“

@return [String]

# File src/lib/grouik/helpers/cli.rb, line 77
def version_chapter
  ['%s %s on %s' % [Grouik.name, Grouik::VERSION, host_os],
   nil,
   license].join("\n")
end