Module: SSHKit::Custom::DSL::ConfigStore

Defined in:
lib/sshkit/custom/dsl/config_store.rb

Class Method Summary collapse

Class Method Details

._envsObject



41
42
43
# File 'lib/sshkit/custom/dsl/config_store.rb', line 41

def _envs
  Thread.current[:_envs] ||= []
end

._user_groupsObject



57
58
59
# File 'lib/sshkit/custom/dsl/config_store.rb', line 57

def _user_groups
  Thread.current[:_user_groups] ||= []
end

.add_env(env) ⇒ Object



45
46
47
48
49
50
# File 'lib/sshkit/custom/dsl/config_store.rb', line 45

def add_env(env)
  old_env =  backends.first.env.clone
  _envs << old_env
  env = old_env.merge(env)
  backend.env = env
end

.add_pwd(directory) ⇒ Object



33
34
35
# File 'lib/sshkit/custom/dsl/config_store.rb', line 33

def add_pwd(directory)
  backend.pwd ||= [];  backend.pwd << directory
end

.add_user_group(user, group) ⇒ Object



61
62
63
64
# File 'lib/sshkit/custom/dsl/config_store.rb', line 61

def add_user_group(user, group)
  _user_groups << {user: backend.user, group:  backend.group }
  backend.user = user; backend.group = group
end

.backendObject



71
72
73
# File 'lib/sshkit/custom/dsl/config_store.rb', line 71

def backend
  SSHKit::Runner::Abstract.active_backend
end

.backendsObject



29
30
31
# File 'lib/sshkit/custom/dsl/config_store.rb', line 29

def backends
  @backends ||= []
end

.backends=(hosts) ⇒ Object



25
26
27
# File 'lib/sshkit/custom/dsl/config_store.rb', line 25

def backends=(hosts)
  @backends = hosts.map { |host| SSHKit.config.backend.new(host) }
end

.pop_envObject



52
53
54
55
# File 'lib/sshkit/custom/dsl/config_store.rb', line 52

def pop_env
  old_env = _envs.pop || {}
  backends.each {|backend| backend.env = old_env}
end

.pop_pwdObject



37
38
39
# File 'lib/sshkit/custom/dsl/config_store.rb', line 37

def pop_pwd
  backend.pwd ||= [];  backend.pwd.pop
end

.pop_user_groupObject



66
67
68
69
# File 'lib/sshkit/custom/dsl/config_store.rb', line 66

def pop_user_group
  old_user_group = _user_groups.pop || {}
  backend.user = old_user_group[:user]; backend.group = old_user_group[:group]
end

.runnerObject



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/sshkit/custom/dsl/config_store.rb', line 13

def runner
  @runner ||= case @runner_opts[:in]
                when :parallel then SSHKit::Runner::Parallel
                when :sequence then SSHKit::Runner::Sequential
                when :groups then SSHKit::Runner::Group
                else
                  raise RuntimeError, "Don't know how to handle run style #{@runner_opts[:in].inspect}"
              end.new(nil, @runner_opts)

  @runner.tap{|r| r.backends = backends}
end

.runner_opts=(opts) ⇒ Object



8
9
10
11
# File 'lib/sshkit/custom/dsl/config_store.rb', line 8

def runner_opts=(opts)
  @runner = nil
  @runner_opts = { in: :parallel }.merge(opts)
end