Module: Kdeploy::DSL
- Included in:
- CLI
- Defined in:
- lib/kdeploy/dsl.rb
Class Method Summary collapse
Instance Method Summary collapse
- #get_task_hosts(task_name) ⇒ Object
- #host(name, **options) ⇒ Object
- #inventory ⇒ Object
- #kdeploy_hosts ⇒ Object
- #kdeploy_roles ⇒ Object
- #kdeploy_tasks ⇒ Object
- #role(name, hosts) ⇒ Object
- #run(command) ⇒ Object
- #task(name, on: nil, roles: nil, &block) ⇒ Object
- #upload(source, destination) ⇒ Object
- #upload_template(source, destination, variables = {}) ⇒ Object
Class Method Details
.extended(base) ⇒ Object
5 6 7 8 9 |
# File 'lib/kdeploy/dsl.rb', line 5 def self.extended(base) base.instance_variable_set(:@kdeploy_hosts, {}) base.instance_variable_set(:@kdeploy_tasks, {}) base.instance_variable_set(:@kdeploy_roles, {}) end |
Instance Method Details
#get_task_hosts(task_name) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/kdeploy/dsl.rb', line 75 def get_task_hosts(task_name) task = kdeploy_tasks[task_name] return kdeploy_hosts.keys if !task || (!task[:hosts] && !task[:roles]) hosts = Set.new # 添加指定的主机 if task[:hosts] task[:hosts].each do |host| hosts.add(host) if kdeploy_hosts.key?(host) end end # 添加角色中的主机 if task[:roles] task[:roles].each do |role| next unless role_hosts = kdeploy_roles[role] role_hosts.each do |host| hosts.add(host) if kdeploy_hosts.key?(host) end end end hosts.to_a end |
#host(name, **options) ⇒ Object
23 24 25 |
# File 'lib/kdeploy/dsl.rb', line 23 def host(name, **) kdeploy_hosts[name] = .merge(name: name) end |
#inventory ⇒ Object
71 72 73 |
# File 'lib/kdeploy/dsl.rb', line 71 def inventory(&) instance_eval(&) if block_given? end |
#kdeploy_hosts ⇒ Object
11 12 13 |
# File 'lib/kdeploy/dsl.rb', line 11 def kdeploy_hosts @kdeploy_hosts ||= {} end |
#kdeploy_roles ⇒ Object
19 20 21 |
# File 'lib/kdeploy/dsl.rb', line 19 def kdeploy_roles @kdeploy_roles ||= {} end |
#kdeploy_tasks ⇒ Object
15 16 17 |
# File 'lib/kdeploy/dsl.rb', line 15 def kdeploy_tasks @kdeploy_tasks ||= {} end |
#role(name, hosts) ⇒ Object
27 28 29 |
# File 'lib/kdeploy/dsl.rb', line 27 def role(name, hosts) kdeploy_roles[name] = hosts end |
#run(command) ⇒ Object
51 52 53 54 |
# File 'lib/kdeploy/dsl.rb', line 51 def run(command) @kdeploy_commands ||= [] @kdeploy_commands << { type: :run, command: command } end |
#task(name, on: nil, roles: nil, &block) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/kdeploy/dsl.rb', line 31 def task(name, on: nil, roles: nil, &block) kdeploy_tasks[name] = { hosts: if on.is_a?(Array) on else (on ? [on] : nil) end, roles: if roles.is_a?(Array) roles else (roles ? [roles] : nil) end, block: lambda { @kdeploy_commands = [] instance_eval(&block) @kdeploy_commands } } end |
#upload(source, destination) ⇒ Object
56 57 58 59 |
# File 'lib/kdeploy/dsl.rb', line 56 def upload(source, destination) @kdeploy_commands ||= [] @kdeploy_commands << { type: :upload, source: source, destination: destination } end |
#upload_template(source, destination, variables = {}) ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/kdeploy/dsl.rb', line 61 def upload_template(source, destination, variables = {}) @kdeploy_commands ||= [] @kdeploy_commands << { type: :upload_template, source: source, destination: destination, variables: variables } end |