orca 0.3.6 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +4 -2
- data/lib/orca.rb +1 -1
- data/lib/orca/cli.rb +3 -1
- data/lib/orca/execution_context.rb +4 -0
- data/lib/orca/extensions/file_sync.rb +12 -3
- data/lib/orca/template.rb +32 -0
- data/orca.gemspec +2 -1
- metadata +21 -4
data/Gemfile.lock
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
orca (0.
|
4
|
+
orca (0.4.0)
|
5
5
|
colored
|
6
6
|
net-sftp
|
7
7
|
net-ssh
|
8
8
|
thor
|
9
|
+
tilt
|
9
10
|
|
10
11
|
GEM
|
11
12
|
remote: https://rubygems.org/
|
@@ -17,9 +18,10 @@ GEM
|
|
17
18
|
metaclass (~> 0.0.1)
|
18
19
|
net-sftp (2.1.2)
|
19
20
|
net-ssh (>= 2.6.5)
|
20
|
-
net-ssh (2.6.
|
21
|
+
net-ssh (2.6.8)
|
21
22
|
rake (10.0.4)
|
22
23
|
thor (0.18.1)
|
24
|
+
tilt (1.4.1)
|
23
25
|
|
24
26
|
PLATFORMS
|
25
27
|
ruby
|
data/lib/orca.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'colored'
|
3
|
-
require 'thor'
|
4
3
|
|
5
4
|
module Orca
|
6
5
|
def verbose(val=nil)
|
@@ -46,6 +45,7 @@ require_relative "./orca/group"
|
|
46
45
|
require_relative "./orca/runner"
|
47
46
|
require_relative "./orca/trigger_runner"
|
48
47
|
require_relative "./orca/resolver"
|
48
|
+
require_relative "./orca/template"
|
49
49
|
require_relative "./orca/execution_context"
|
50
50
|
require_relative "./orca/local_file"
|
51
51
|
require_relative "./orca/remote_file"
|
data/lib/orca/cli.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
1
3
|
class Orca::Cli < Thor
|
2
4
|
include Thor::Actions
|
3
5
|
|
@@ -44,7 +46,7 @@ class Orca::Cli < Thor
|
|
44
46
|
suite = Orca::Suite.new(options)
|
45
47
|
suite.load_file(orca_file)
|
46
48
|
suite.run(group, package, cmd)
|
47
|
-
rescue => e
|
49
|
+
rescue Exception => e
|
48
50
|
err = e
|
49
51
|
ensure
|
50
52
|
$stdout.print "Disconnecting...".green
|
@@ -61,6 +61,10 @@ class Orca::ExecutionContext
|
|
61
61
|
Orca::RemoteFile.new(self, path)
|
62
62
|
end
|
63
63
|
|
64
|
+
def template(path)
|
65
|
+
Orca::Template.new(@node, path)
|
66
|
+
end
|
67
|
+
|
64
68
|
def trigger(action_ref, *args)
|
65
69
|
pkg_name, action_name = *action_ref.split(':', 2)
|
66
70
|
pkg = Orca::PackageIndex.default.get(pkg_name)
|
@@ -11,7 +11,7 @@ class Orca::FileSync
|
|
11
11
|
@parent = parent
|
12
12
|
@config = config
|
13
13
|
@after_apply = blk
|
14
|
-
raise ArgumentError.new('A file :source must be provided') unless local_path
|
14
|
+
raise ArgumentError.new('A file :source or template must be provided') unless local_path or template_path
|
15
15
|
raise ArgumentError.new('A file :destination must be provided') unless remote_path
|
16
16
|
end
|
17
17
|
|
@@ -19,6 +19,15 @@ class Orca::FileSync
|
|
19
19
|
@config[:source]
|
20
20
|
end
|
21
21
|
|
22
|
+
def template_path
|
23
|
+
@config[:template]
|
24
|
+
end
|
25
|
+
|
26
|
+
def local_path_for_node(node)
|
27
|
+
return local_path if local_path
|
28
|
+
Orca::Template.new(node, template_path).render_to_tempfile
|
29
|
+
end
|
30
|
+
|
22
31
|
def remote_path
|
23
32
|
@config[:destination]
|
24
33
|
end
|
@@ -62,7 +71,7 @@ class Orca::FileSync
|
|
62
71
|
sudo("mkdir -p #{mk_dir}")
|
63
72
|
sudo("chown #{fs.user}:#{fs.group || fs.user} #{mk_dir}") if fs.user
|
64
73
|
end
|
65
|
-
local_file = local(fs.
|
74
|
+
local_file = local(fs.local_path_for_node(node))
|
66
75
|
tmp_path = "orca-upload-#{local_file.hash}"
|
67
76
|
local_file.copy_to(remote(tmp_path))
|
68
77
|
sudo("mv #{tmp_path} #{fs.remote_path}")
|
@@ -74,7 +83,7 @@ class Orca::FileSync
|
|
74
83
|
end
|
75
84
|
|
76
85
|
package.command :validate do
|
77
|
-
local(fs.
|
86
|
+
local(fs.local_path_for_node(node)).matches?(remote(fs.remote_path))
|
78
87
|
end
|
79
88
|
end
|
80
89
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'tilt'
|
3
|
+
|
4
|
+
class Orca::Template
|
5
|
+
def initialize(node, path)
|
6
|
+
@node = node
|
7
|
+
@path = resolve(path)
|
8
|
+
@template = Tilt.new(@path)
|
9
|
+
end
|
10
|
+
|
11
|
+
def render(locals={})
|
12
|
+
@template.render(@node, locals)
|
13
|
+
end
|
14
|
+
|
15
|
+
def render_to_tempfile(locals={})
|
16
|
+
basename = File.basename(@path).gsub('.', '-')
|
17
|
+
file = Tempfile.new(basename)
|
18
|
+
file.write render(locals)
|
19
|
+
file.close
|
20
|
+
file.path
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def resolve(path)
|
26
|
+
if path =~ /^\//
|
27
|
+
path
|
28
|
+
else
|
29
|
+
File.join(Orca.root, path)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/orca.gemspec
CHANGED
@@ -10,9 +10,10 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
11
11
|
gem.name = "orca"
|
12
12
|
gem.require_paths = ["lib"]
|
13
|
-
gem.version = '0.
|
13
|
+
gem.version = '0.4.0'
|
14
14
|
gem.add_dependency('colored')
|
15
15
|
gem.add_dependency('net-ssh')
|
16
16
|
gem.add_dependency('net-sftp')
|
17
17
|
gem.add_dependency('thor')
|
18
|
+
gem.add_dependency('tilt')
|
18
19
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colored
|
@@ -75,6 +75,22 @@ dependencies:
|
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: tilt
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
78
94
|
description: Orca is a super simple way to build and configure servers
|
79
95
|
email:
|
80
96
|
- andy.kent@me.com
|
@@ -108,6 +124,7 @@ files:
|
|
108
124
|
- lib/orca/resolver.rb
|
109
125
|
- lib/orca/runner.rb
|
110
126
|
- lib/orca/suite.rb
|
127
|
+
- lib/orca/template.rb
|
111
128
|
- lib/orca/trigger_runner.rb
|
112
129
|
- orca.gemspec
|
113
130
|
- test/dsl_test.rb
|
@@ -133,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
150
|
version: '0'
|
134
151
|
segments:
|
135
152
|
- 0
|
136
|
-
hash: -
|
153
|
+
hash: -951848962071421734
|
137
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
155
|
none: false
|
139
156
|
requirements:
|
@@ -142,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
159
|
version: '0'
|
143
160
|
segments:
|
144
161
|
- 0
|
145
|
-
hash: -
|
162
|
+
hash: -951848962071421734
|
146
163
|
requirements: []
|
147
164
|
rubyforge_project:
|
148
165
|
rubygems_version: 1.8.23
|