screwcap 0.1
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 +14 -0
- data/Gemfile.lock +49 -0
- data/History.txt +4 -0
- data/Manifest.txt +37 -0
- data/README.rdoc +50 -0
- data/Rakefile +25 -0
- data/bin/screwcap +35 -0
- data/lib/exts.rb +11 -0
- data/lib/screwcap.rb +29 -0
- data/lib/screwcap/base.rb +56 -0
- data/lib/screwcap/command_set.rb +56 -0
- data/lib/screwcap/deployer.rb +104 -0
- data/lib/screwcap/sequence.rb +18 -0
- data/lib/screwcap/server.rb +55 -0
- data/lib/screwcap/task.rb +139 -0
- data/lib/trollop.rb +782 -0
- data/screwcap.gemspec +22 -0
- data/spec/command_set_spec.rb +51 -0
- data/spec/deployer_spec.rb +76 -0
- data/spec/sequence_spec.rb +21 -0
- data/spec/server_spec.rb +44 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +25 -0
- data/spec/task_spec.rb +75 -0
- data/tasks/rspec.rake +21 -0
- data/test/config/command_sets.rb +87 -0
- data/test/config/expect.rb +23 -0
- data/test/config/gateway.rb +8 -0
- data/test/config/no_server.rb +3 -0
- data/test/config/rails_tasks.rb +37 -0
- data/test/config/simple_recipe.rb +40 -0
- data/test/config/undefined_command_set.rb +9 -0
- data/test/config/undefined_item.rb +4 -0
- data/test/config/undefined_server.rb +3 -0
- data/test/config/unknown_use.rb +1 -0
- data/test/config/use.rb +1 -0
- data/test/test_command_set.rb +40 -0
- metadata +171 -0
@@ -0,0 +1,8 @@
|
|
1
|
+
gateway :gateway1, :address => "slashdot.org", :user => "root"
|
2
|
+
server :test, :addresses => ["bongo.org","bangler.com"], :user => "root", :gateway => :gateway1
|
3
|
+
server :test2, :address => "bangler.com", :user => "root", :gateway => :gateway1
|
4
|
+
|
5
|
+
task_for :task1, :server => :test do
|
6
|
+
run "ls"
|
7
|
+
end
|
8
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
command_set :create_directory_structure do
|
2
|
+
run "mkdir -p #{release_dir}"
|
3
|
+
run "mkdir -p #{deploy_dir}/shared/pids"
|
4
|
+
run "mkdir -p #{deploy_dir}/shared/system"
|
5
|
+
run "mkdir -p #{deploy_dir}/shared/log"
|
6
|
+
end
|
7
|
+
|
8
|
+
command_set :after_checkout do
|
9
|
+
run "chmod -R g+w #{release_dir}"
|
10
|
+
run "rm -rf #{release_dir}/log"
|
11
|
+
run "ln -nfs #{deploy_dir}/shared/log #{release_dir}/log"
|
12
|
+
run "ln -nfs #{deploy_dir}/shared/system #{deploy_dir}/system"
|
13
|
+
run "TZ=UTC find #{release_dir}/public/images -exec touch -t #{stamp};"
|
14
|
+
run "TZ=UTC find #{release_dir}/public/stylesheets -exec 'touch -t #{stamp};"
|
15
|
+
run "TZ=UTC find #{release_dir}/public/javascripts -exec touch -t #{stamp};"
|
16
|
+
end
|
17
|
+
|
18
|
+
command_set :svn_check_out do
|
19
|
+
create_directory_structure
|
20
|
+
run "svn co #{svn_url} --username=#{svn_user} --password=#{svn_password} -q #{release_dir}"
|
21
|
+
after_checkout
|
22
|
+
end
|
23
|
+
|
24
|
+
command_set :git_check_out do
|
25
|
+
create_directory_structure
|
26
|
+
run "git clone --depth 10 git@#{git_url}:#{git_project} #{release_dir}"
|
27
|
+
after_checkout
|
28
|
+
end
|
29
|
+
|
30
|
+
command_set :symlink do
|
31
|
+
run "rm -f #{deploy_dir}/current", "deploy[:dir]"
|
32
|
+
run "ln -s #{release_dir} #{deploy_dir}/current"
|
33
|
+
end
|
34
|
+
|
35
|
+
command_set :restart_mongrels do
|
36
|
+
run "for file in #{mongrel_pid_dir}/*.pid; do mongrel_rails stop -P ${file} 2&>1; sleep 5; done"
|
37
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
set :deploy_var, "tester"
|
2
|
+
set :deploy_var_2, "bongo"
|
3
|
+
set :deploy_var_3, ["one","two"]
|
4
|
+
server :test, :addresses => ["slashdot.org","google.com"], :user => "root"
|
5
|
+
server :test2, :addresses => ["bongo.org","bangler.com"], :user => "root"
|
6
|
+
|
7
|
+
task_for :task1, :server => :test do
|
8
|
+
set :deploy_var_2, "shasta"
|
9
|
+
set :bango, "bongo"
|
10
|
+
run "deploy dir = #{deploy_var}"
|
11
|
+
run "command 2"
|
12
|
+
run "command 3"
|
13
|
+
run :deploy_var
|
14
|
+
run :deploy_var_2
|
15
|
+
run :bango
|
16
|
+
end
|
17
|
+
|
18
|
+
task_for :task2, :server => :test do
|
19
|
+
set :deploy_var_2, "purple"
|
20
|
+
set :deploy_var_3, "mountain dew"
|
21
|
+
end
|
22
|
+
|
23
|
+
task_for :task3, :servers => [:test, :test2] do
|
24
|
+
run "ls"
|
25
|
+
local "ls" #empty in tests so it doesn't pollute
|
26
|
+
end
|
27
|
+
|
28
|
+
task_for :seq1, :server => :test do
|
29
|
+
run "1"
|
30
|
+
end
|
31
|
+
|
32
|
+
task_for :seq2, :server => :test do
|
33
|
+
run "2"
|
34
|
+
end
|
35
|
+
|
36
|
+
task_for :non_parallel, :server => :test, :parallel => false do
|
37
|
+
run "ls"
|
38
|
+
end
|
39
|
+
|
40
|
+
sequence :deploy, :tasks => [:seq1, :seq2]
|
@@ -0,0 +1 @@
|
|
1
|
+
use :unknown_file
|
data/test/config/use.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
use :simple_recipe
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestCommandSet < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
Net::SSH.stubs(:start).yields(SSHObject.new(:return_stream => :stdout, :return_data => "hostname = asdf\n"))
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_command_sets
|
10
|
+
deployer = Deployer.new(:recipe_file => "./test/config/command_sets.rb", :silent => true)
|
11
|
+
assert deployer
|
12
|
+
|
13
|
+
task = deployer.__tasks.find {|t| t.name == :use_command_set_no_override }
|
14
|
+
assert task
|
15
|
+
|
16
|
+
task.__command_sets.first.instance_eval(&task.__command_sets.first.__block)
|
17
|
+
assert_equal ["tester","run with tester", "bongo"], task.__commands
|
18
|
+
|
19
|
+
task = deployer.__tasks.find {|t| t.name == :use_command_set_with_override }
|
20
|
+
assert task
|
21
|
+
|
22
|
+
assert_equal ["shasta","run with shasta", "bongo"], task.__commands
|
23
|
+
|
24
|
+
task = deployer.__tasks.find {|t| t.name == :use_command_set_complex_override }
|
25
|
+
assert task
|
26
|
+
assert_equal ["dingle"], task.__commands
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_nested_command_sets
|
30
|
+
deployer = Deployer.new(:recipe_file => "./test/config/command_sets.rb", :silent => true)
|
31
|
+
|
32
|
+
task = deployer.__tasks.find {|t| t.name == :nested_command_set }
|
33
|
+
assert task
|
34
|
+
assert_equal %w(1 2 3 4), task.__commands
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_undefined_value_in_command_set
|
38
|
+
assert_raise(NoMethodError) { Deployer.new(:recipe_file => "./test/config/undefined_command_set.rb", :silent => true) }
|
39
|
+
end
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: screwcap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: "0.1"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Grant Ammons
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-10-22 00:00:00 -04:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: net-ssh
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 33
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 0
|
32
|
+
- 23
|
33
|
+
version: 2.0.23
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: net-ssh-gateway
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 21
|
45
|
+
segments:
|
46
|
+
- 1
|
47
|
+
- 0
|
48
|
+
- 1
|
49
|
+
version: 1.0.1
|
50
|
+
type: :runtime
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: rubyforge
|
54
|
+
prerelease: false
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 7
|
61
|
+
segments:
|
62
|
+
- 2
|
63
|
+
- 0
|
64
|
+
- 4
|
65
|
+
version: 2.0.4
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: hoe
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 19
|
77
|
+
segments:
|
78
|
+
- 2
|
79
|
+
- 6
|
80
|
+
- 2
|
81
|
+
version: 2.6.2
|
82
|
+
type: :development
|
83
|
+
version_requirements: *id004
|
84
|
+
description: |-
|
85
|
+
Screwcap is a library that wraps Net::SSH and makes it easy to perform actions on remote servers. It's not smart and does not make any assumptions about your setup.
|
86
|
+
|
87
|
+
The most obvious task you could use screwcap for is deploying rails applications to remote servers.
|
88
|
+
email:
|
89
|
+
- grant@pipelinedeals.com
|
90
|
+
executables:
|
91
|
+
- screwcap
|
92
|
+
extensions: []
|
93
|
+
|
94
|
+
extra_rdoc_files:
|
95
|
+
- History.txt
|
96
|
+
- Manifest.txt
|
97
|
+
files:
|
98
|
+
- Gemfile
|
99
|
+
- Gemfile.lock
|
100
|
+
- History.txt
|
101
|
+
- Manifest.txt
|
102
|
+
- README.rdoc
|
103
|
+
- Rakefile
|
104
|
+
- bin/screwcap
|
105
|
+
- lib/exts.rb
|
106
|
+
- lib/screwcap.rb
|
107
|
+
- lib/screwcap/base.rb
|
108
|
+
- lib/screwcap/command_set.rb
|
109
|
+
- lib/screwcap/deployer.rb
|
110
|
+
- lib/screwcap/sequence.rb
|
111
|
+
- lib/screwcap/server.rb
|
112
|
+
- lib/screwcap/task.rb
|
113
|
+
- lib/trollop.rb
|
114
|
+
- screwcap.gemspec
|
115
|
+
- spec/command_set_spec.rb
|
116
|
+
- spec/deployer_spec.rb
|
117
|
+
- spec/sequence_spec.rb
|
118
|
+
- spec/server_spec.rb
|
119
|
+
- spec/spec.opts
|
120
|
+
- spec/spec_helper.rb
|
121
|
+
- spec/task_spec.rb
|
122
|
+
- tasks/rspec.rake
|
123
|
+
- test/config/command_sets.rb
|
124
|
+
- test/config/expect.rb
|
125
|
+
- test/config/gateway.rb
|
126
|
+
- test/config/no_server.rb
|
127
|
+
- test/config/rails_tasks.rb
|
128
|
+
- test/config/simple_recipe.rb
|
129
|
+
- test/config/undefined_command_set.rb
|
130
|
+
- test/config/undefined_item.rb
|
131
|
+
- test/config/undefined_server.rb
|
132
|
+
- test/config/unknown_use.rb
|
133
|
+
- test/config/use.rb
|
134
|
+
- test/test_command_set.rb
|
135
|
+
has_rdoc: true
|
136
|
+
homepage: http://github.com/#{github_username}/#{project_name}
|
137
|
+
licenses: []
|
138
|
+
|
139
|
+
post_install_message:
|
140
|
+
rdoc_options:
|
141
|
+
- --main
|
142
|
+
- README.rdoc
|
143
|
+
require_paths:
|
144
|
+
- lib
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
hash: 3
|
151
|
+
segments:
|
152
|
+
- 0
|
153
|
+
version: "0"
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
hash: 3
|
160
|
+
segments:
|
161
|
+
- 0
|
162
|
+
version: "0"
|
163
|
+
requirements: []
|
164
|
+
|
165
|
+
rubyforge_project: screwcap
|
166
|
+
rubygems_version: 1.3.7
|
167
|
+
signing_key:
|
168
|
+
specification_version: 3
|
169
|
+
summary: Screwcap is a library that wraps Net::SSH and makes it easy to perform actions on remote servers
|
170
|
+
test_files:
|
171
|
+
- test/test_command_set.rb
|