Skip to content

Instantly share code, notes, and snippets.

@FilBot3
Created September 24, 2018 02:52
Show Gist options
  • Select an option

  • Save FilBot3/4173fd13872775a94f24ab69555d9976 to your computer and use it in GitHub Desktop.

Select an option

Save FilBot3/4173fd13872775a94f24ab69555d9976 to your computer and use it in GitHub Desktop.
An example of a Ruby DSL for my reference.
#!/usr/bin/env ruby
module PhilDsl
def self.spork(&block)
if block_given?
if block.arity == 1
yield self
else
instance_eval(&block)
end
end
end
def self.cookbook_upload(&block)
#
PhilDsl::ChefCookbook.new(&block)
end
def self.repository_upload(&block)
#
PhilDsl::ChefRepository.new(&block)
end
class ChefCookbook
def initialize(&block)
if block_given?
if block.arity == 1
yield self
else
instance_eval(&block)
end
end
end
def cookbook_name(cbook_name = 'example')
# Place holder
puts 'Cookbook Name: ' + cbook_name
end
def chef_server(cserver_name = 'https://chef.dev.com')
# Place holder
puts 'Chef-Server: ' + cserver_name
end
def cookbook_version(cbook_version = '= 0.1.0')
# Place holder
puts 'Cookbook Version: ' + cbook_version
end
def scm_url(scm_url_name = 'https://github.com/')
#
puts 'SCM URL: ' + scm_url_name
end
def scm_branch(scm_branch_name = 'master')
#
puts 'SCM Branch: ' + scm_branch_name
end
def scm_version(scm_version_id = '0.1.0')
#
puts 'SCM Version: ' + scm_version_id
end
#private
def perform_cookbook_upload
#
puts 'Uploading Chef-Cookbook!'
puts ''
end
end
class ChefRepository
def initialize(&block)
if block_given?
if block.arity == 1
yield self
else
instance_eval(&block)
end
end
perform_repository_upload
end
def repository_name(chef_repo_name = 'example_chef-repo')
#
puts 'Chef-Repo Name: ' + chef_repo_name
end
def chef_server(cserver_name = 'https://chef.dev.com/')
#
puts 'Chef-Server Name: ' + cserver_name
end
def scm_url(scm_url_name = 'https://github.com/')
#
puts 'SCM URL: ' + scm_url_name
end
def scm_branch(scm_branch_name = 'master')
#
puts 'SCM Branch: ' + scm_branch_name
end
def scm_version(scm_version_id = '0.1.0')
#
puts 'SCM Version Id: ' + scm_version_id
end
private
def perform_repository_upload
#
puts 'Uploading Chef-Repository!'
puts ''
end
end
end
#
#
#
PhilDsl.spork do
cookbook_upload do
cookbook_name 'test_cookbook'
chef_server 'chef.dev.com'
cookbook_version '= 1.0.0'
scm_url 'https://github.com/predatorian3/test_cookbook'
scm_branch 'master'
scm_version '1.0.1'
end.perform_cookbook_upload
repository_upload do
repository_name 'phil_chef-repo'
chef_server 'chef.dev.com'
scm_url 'https://github.com/predatorian3/phil_chef-repo'
scm_branch 'master'
scm_version '1.0.0'
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment