Created
September 24, 2018 02:52
-
-
Save FilBot3/4173fd13872775a94f24ab69555d9976 to your computer and use it in GitHub Desktop.
An example of a Ruby DSL for my reference.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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