Class: Grouik::Helpers::Cli

Inherits:
Object
  • Object
show all
Defined in:
src/lib/grouik/helpers/cli.rb

Overview

Cli helper, see Grouik::Cli

Instance Method Summary collapse

Instance Method Details

#host_osString

Returns:

  • (String)


84
85
86
# File 'src/lib/grouik/helpers/cli.rb', line 84

def host_os
  RbConfig::CONFIG['host_os']
end

#licenseString

Get the license

Returns:

  • (String)


68
69
70
# 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 = {}) ⇒ OptionParser

Provide an OptionParser

Parameters:

  • options (Hash) (defaults to: {})

Returns:

  • (OptionParser)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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) ⇒ Hash

Prepare options

Process values in order to easify their use

Parameters:

  • options (Hash)

Returns:

  • (Hash)


42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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) ⇒ Hash

Read a config file

Parameters:

  • path (String)

Returns:

  • (Hash)


92
93
94
95
96
97
98
99
100
101
# 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_chapterString

Get a displayable version

Some inspiration taken from wget --version

Returns:

  • (String)


77
78
79
80
81
# 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