Module: Milc::Base

Includes:
Dsl::Ansible, Dsl::Gcloud, Dsl::Mgcloud
Defined in:
lib/milc/base.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Dsl::Ansible

#ansible_playbook

Methods included from Dsl::Mgcloud

#mgcloud

Methods included from Dsl::Gcloud

#gcloud, #json_gcloud

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



41
42
43
# File 'lib/milc/base.rb', line 41

def config
  @config
end

#projectObject (readonly)

Returns the value of attribute project.



42
43
44
# File 'lib/milc/base.rb', line 42

def project
  @project
end

Instance Method Details

#command_optionsObject



65
66
67
# File 'lib/milc/base.rb', line 65

def command_options
  "nVc:" # n と V と c: は必須
end

#dry_runObject



44
45
46
# File 'lib/milc/base.rb', line 44

def dry_run
  Milc.dry_run
end

#execute(cmd) ⇒ Object



31
32
33
34
# File 'lib/milc/base.rb', line 31

def execute(cmd)
  res = LoggerPipe.run(logger, cmd, dry_run: Milc.dry_run)
  block_given? ? yield(res) : res
end

#help_messageObject



58
59
60
61
62
63
# File 'lib/milc/base.rb', line 58

def help_message
  ## スクリプト名
  cmdname = File.basename($0) # $PROGRAM_NAME を推奨
  ## シェルスクリプトのUsage
  "Usage: #{cmdname} -c CONF_FILE"
end

#load_configObject



48
49
50
# File 'lib/milc/base.rb', line 48

def load_config
  @project = config['PROJECT'] || ENV['PROJECT']
end

#load_from_yaml(yaml_path) ⇒ Object



36
37
38
39
# File 'lib/milc/base.rb', line 36

def load_from_yaml(yaml_path)
  @config = YAML.load_file_with_erb(yaml_path)
  load_config
end

#load_options(options) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/milc/base.rb', line 69

def load_options(options)
  if options["c"]
    load_from_yaml(options["c"])
  else
    show_help_and_exit1
  end
end

#loggerObject



27
28
29
# File 'lib/milc/base.rb', line 27

def logger
  Milc.logger
end

#run(args) ⇒ Object



91
92
93
94
95
# File 'lib/milc/base.rb', line 91

def run(args)
  setup(args)
  process
  # exit 0
end

#setup(args) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/milc/base.rb', line 77

def setup(args)
  # ARGV.getopts については以下を参照
  # http://d.hatena.ne.jp/zariganitosh/20140819/ruby_optparser_true_power
  # http://docs.ruby-lang.org/ja/2.1.0/method/OptionParser=3a=3aArguable/i/getopts.html
  args.extend(OptionParser::Arguable) unless args.is_a?(OptionParser::Arguable)
  options = args.getopts(command_options)
  show_help_and_exit1 unless args.empty?

  Milc.dry_run = !!options["n"]
  Milc.verbose = !!options["V"]

  load_options(options)
end

#show_help_and_exit1Object



52
53
54
55
56
# File 'lib/milc/base.rb', line 52

def show_help_and_exit1
  ## シェルスクリプトのUsage
  $stderr.puts help_message
  exit 1
end