Skip to content

Instantly share code, notes, and snippets.

@KamilLelonek
Last active August 29, 2015 14:07
Show Gist options
  • Save KamilLelonek/02e38e90a86fae7c8bfd to your computer and use it in GitHub Desktop.
Save KamilLelonek/02e38e90a86fae7c8bfd to your computer and use it in GitHub Desktop.
Cookbook CLI creator
#!/usr/bin/env ruby
require 'optparse'
require 'ostruct'
class CookbookCreator
COMPANY_NAME = 'COMPANY_NAME'
EMAIL = '[email protected]'
COOKBOOK_NAME = 'COOKBOOK_NAME'
class << self
def parse(args)
parse_args(args).tap do |options|
create_cookbook(options.name, options.email, options.company)
end
end
private
def option_parser(options)
OptionParser.new do |opts|
opts.banner = 'Usage: create-cookbook.rb [options]'
opts.separator ''
opts.separator 'Specific options:'
opts.on('-n', '--name Cookbook name') { |name| options.name = name }
opts.on('-c', '--company Company name') { |company| options.company = company }
opts.on('-e', '--email Creator email') { |email| options.email = email }
end
end
def parse_args(args)
default_options.tap { |options| option_parser(options).parse! args }
end
def default_options
OpenStruct.new(
company: COMPANY_NAME,
email: EMAIL,
name: COOKBOOK_NAME
)
end
def create_cookbook(name, email, company)
%x(knife cookbook create #{name} -o site-cookbooks -m #{email} -C #{company})
end
end
end
CookbookCreator.parse(ARGV)
@KamilLelonek
Copy link
Author

➜ chmod +x create-cookbook.rb
➜ ./create-cookbook.rb -h

Usage: create-cookbook.rb [options]

Specific options:
    -n, --name    Cookbook name
    -c, --company Company name
    -e, --email   Creator email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment