orca 0.3.3 → 0.3.4
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 +1 -1
- data/README.md +15 -10
- data/lib/orca/cli.rb +5 -1
- data/lib/orca/runner.rb +4 -2
- data/orca.gemspec +1 -1
- metadata +4 -4
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -70,7 +70,7 @@ This will create a config/orca.rb file for you to get started with.
|
|
70
70
|
|
71
71
|
To ship run a command the syntax is as follows...
|
72
72
|
|
73
|
-
orca [command] [package] [
|
73
|
+
orca [command] [package] [group_or_node]
|
74
74
|
|
75
75
|
So here are some examples (assuming you have a package called "app" and a node called "server" defined in your orca.rb)...
|
76
76
|
|
@@ -78,7 +78,7 @@ So here are some examples (assuming you have a package called "app" and a node c
|
|
78
78
|
orca remove app server
|
79
79
|
orca validate app server
|
80
80
|
|
81
|
-
If you have a package with the same name as a group or
|
81
|
+
If you have a package with the same name as a group or node you can abreviate this to...
|
82
82
|
|
83
83
|
orca apply server
|
84
84
|
orca remove server
|
@@ -101,13 +101,18 @@ Options, all commands support the following optional parameters...
|
|
101
101
|
The Orca DSL
|
102
102
|
------------
|
103
103
|
|
104
|
-
Orca packages are written in a Ruby based DSL. It's really simple to learn in less than 5 mins.
|
104
|
+
Orca packages are written in a Ruby based DSL. It's really simple to learn in less than 5 mins. Below is an example orca.rb file with some hints to help you get started. A more complete WIP example can be found in this gist... https://gist.github.com/andykent/5814997
|
105
|
+
|
106
|
+
group 'web' do # groups are collections of nodes that can be referenced by name
|
107
|
+
node 'web-1.mysite.com' # nodes are usually machines or VMs that you intend to configure
|
108
|
+
includes 'uploaders' # groups are composable so a group can contain nodes from another group
|
109
|
+
end # orca will execute tasks concurrently across all nodes in a group
|
105
110
|
|
106
111
|
# define a new pacage called 'gem' that provides some actions for managing rubygems
|
107
112
|
package 'gem' do
|
108
|
-
depends_on 'ruby-1.9.3'
|
109
|
-
action 'exists' do |gem_name|
|
110
|
-
run("gem list -i #{gem_name}") =~ /true/
|
113
|
+
depends_on 'ruby-1.9.3' # this package depends on another package called ruby-1.9.3
|
114
|
+
action 'exists' do |gem_name| # define an action that other packages can trigger called 'exists'
|
115
|
+
run("gem list -i #{gem_name}") =~ /true/ # execute the command, get the output and check it contains 'true'
|
111
116
|
end
|
112
117
|
action 'install' do |gem_name|
|
113
118
|
run "gem install #{gem_name} --no-ri --no-rdoc"
|
@@ -121,17 +126,16 @@ Orca packages are written in a Ruby based DSL. It's really simple to learn in le
|
|
121
126
|
package 'bundler' do
|
122
127
|
depends_on 'gem'
|
123
128
|
apply do # apply gets called whenever this package or a package that depends on it is applied
|
124
|
-
trigger('gem:install', 'bundler') # trigger triggers defined actions, in this case the action '
|
129
|
+
trigger('gem:install', 'bundler') # trigger triggers defined actions, in this case the action 'install' on 'gem'
|
125
130
|
end
|
126
131
|
remove do # remove gets called whenever this package or a package that depends on it is removed
|
127
|
-
trigger('gem:
|
132
|
+
trigger('gem:uninstall', 'bundler')
|
128
133
|
end
|
129
134
|
validate do # validate is used internally to check if the package is applied correctly or not
|
130
|
-
trigger('gem:exists', 'bundler')
|
135
|
+
trigger('gem:exists', 'bundler') # validate should return true if the package is applied correctly
|
131
136
|
end
|
132
137
|
end
|
133
138
|
|
134
|
-
A more complete WIP example can be found in this gist... https://gist.github.com/andykent/5814997
|
135
139
|
|
136
140
|
|
137
141
|
Extensions
|
@@ -145,6 +149,7 @@ Some example extensions are included in this repo and can be required into your
|
|
145
149
|
|
146
150
|
`relative "orca/extensions/file_sync"` - Adds support for syncing and converging local/remove files with the `file` action.
|
147
151
|
|
152
|
+
*Note: these extensions are likely to be removed to their own 'contrib' project at some point in the future*
|
148
153
|
|
149
154
|
Extras
|
150
155
|
------
|
data/lib/orca/cli.rb
CHANGED
@@ -47,10 +47,14 @@ class Orca::Cli < Thor
|
|
47
47
|
if options[:throw]
|
48
48
|
raise e
|
49
49
|
else
|
50
|
-
puts "!!! ERROR !!! [#{e.class.name}] #{e.message}".red.bold
|
50
|
+
$stderr.puts "!!! ERROR !!! [#{e.class.name}] #{e.message}".red.bold
|
51
|
+
exit(1)
|
51
52
|
end
|
52
53
|
ensure
|
54
|
+
$stdout.print "Disconnecting...".green
|
53
55
|
suite.cleanup
|
56
|
+
$stdout.puts "Done!".green
|
57
|
+
exit(0)
|
54
58
|
end
|
55
59
|
end
|
56
60
|
|
data/lib/orca/runner.rb
CHANGED
@@ -15,8 +15,10 @@ class Orca::Runner
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def execute(command_name)
|
18
|
-
|
19
|
-
|
18
|
+
pkgs = packages
|
19
|
+
pkgs.reverse! if command_name.to_sym == :remove
|
20
|
+
@log.say pkgs.map(&:name).join(', ').yellow
|
21
|
+
pkgs.each do |pkg|
|
20
22
|
send(:"execute_#{command_name}", pkg)
|
21
23
|
end
|
22
24
|
end
|
data/orca.gemspec
CHANGED
@@ -10,7 +10,7 @@ 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.3.
|
13
|
+
gem.version = '0.3.4'
|
14
14
|
gem.add_dependency('colored')
|
15
15
|
gem.add_dependency('net-ssh')
|
16
16
|
gem.add_dependency('net-sftp')
|
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.3.
|
4
|
+
version: 0.3.4
|
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-06-
|
12
|
+
date: 2013-06-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colored
|
@@ -133,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '0'
|
134
134
|
segments:
|
135
135
|
- 0
|
136
|
-
hash:
|
136
|
+
hash: 565408569363101895
|
137
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
142
|
version: '0'
|
143
143
|
segments:
|
144
144
|
- 0
|
145
|
-
hash:
|
145
|
+
hash: 565408569363101895
|
146
146
|
requirements: []
|
147
147
|
rubyforge_project:
|
148
148
|
rubygems_version: 1.8.23
|