class Charmkit::CLI

Public Instance Methods

generate(name) click to toggle source
# File lib/charmkit/cli.rb, line 11
def generate(name)
  pn = Pathname(name)
  if pn.directory?
    puts "#{name} directory exists, please choose a different charm name."
    exit 1
  else
    pn.mkpath
    pn.join('hooks').mkpath
  end
  Helpers.inline_template 'config.yaml', pn/'config.yaml'
  Helpers.inline_template 'metadata.yaml', pn/'metadata.yaml', name: name
  Helpers.inline_template 'README.md', pn/'README.md', name: name
  Helpers.inline_template 'Gemfile', pn/'Gemfile'

  # Write the install hook
  hook_path = pn.join('hooks/install')
  Helpers.inline_template 'install-hook', hook_path
  hook_path.chmod 0755

  # Write other hooks
  hooks = ['config-changed',
           'upgrade-charm',
           'start',
           'stop',
           'leader-elected',
           'leader-settings-changed',
           'update-status']
  hooks.each do |hook|
    hook_path = pn.join("hooks/#{hook}")
    Helpers.inline_template 'generic-hook', hook_path, hook: hook.underscore
    hook_path.chmod 0755
  end

  Helpers.inline_template 'Rakefile', pn/'Rakefile'
end