wordpress-deploy 1.0.0.alpha1 → 1.0.0.alpha2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/.gitignore +26 -1
  2. data/.rspec +1 -0
  3. data/.rvmrc +48 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +2 -5
  6. data/Gemfile.lock +40 -28
  7. data/Guardfile +24 -0
  8. data/README.md +22 -7
  9. data/bin/wp-deploy +1 -4
  10. data/lib/wordpress_deploy.rb +22 -48
  11. data/lib/wordpress_deploy/cli/helpers.rb +27 -14
  12. data/lib/wordpress_deploy/cli/utility.rb +86 -37
  13. data/lib/wordpress_deploy/database/mysql.rb +22 -136
  14. data/lib/wordpress_deploy/environment.rb +68 -0
  15. data/lib/wordpress_deploy/errors.rb +54 -0
  16. data/lib/wordpress_deploy/logger.rb +28 -50
  17. data/lib/wordpress_deploy/transfer_protocols/ftp.rb +305 -0
  18. data/lib/wordpress_deploy/version.rb +1 -1
  19. data/lib/wordpress_deploy/wordpress/configuration.rb +196 -0
  20. data/spec/data/ftp.yml +4 -0
  21. data/spec/data/wp-config-sample.php +90 -0
  22. data/spec/data/wp-config.yml +128 -0
  23. data/spec/database/mysql_spec.rb +93 -0
  24. data/spec/environment_spec.rb +35 -0
  25. data/spec/spec_helper.rb +36 -1
  26. data/spec/transfer_protocols/ftp_spec.rb +193 -0
  27. data/spec/wordpress/configuration_spec.rb +202 -0
  28. data/wordpress_deploy.gemspec +13 -10
  29. metadata +63 -47
  30. data/lib/wordpress_deploy/config.rb +0 -68
  31. data/lib/wordpress_deploy/database/base.rb +0 -53
  32. data/lib/wordpress_deploy/pipeline.rb +0 -110
  33. data/lib/wordpress_deploy/storage/base.rb +0 -99
  34. data/lib/wordpress_deploy/storage/ftp.rb +0 -133
  35. data/lib/wordpress_deploy/storage/local.rb +0 -82
  36. data/lib/wordpress_deploy/storage/scp.rb +0 -99
  37. data/lib/wordpress_deploy/storage/sftp.rb +0 -108
  38. data/spec/config_spec.rb +0 -16
@@ -0,0 +1,202 @@
1
+ require 'spec_helper'
2
+
3
+ describe WordpressDeploy::Wordpress::Configuration do
4
+ it { should respond_to :name }
5
+ it { should respond_to :name= }
6
+ it { should respond_to :available_names }
7
+ it { should respond_to :names }
8
+ it { should respond_to :template }
9
+ it { should respond_to :output }
10
+ it { should respond_to :save! }
11
+ it { should respond_to :port }
12
+ it { should respond_to :port? }
13
+ it { should respond_to :host }
14
+ it { should respond_to :socket }
15
+ it { should respond_to :socket? }
16
+
17
+ it { should respond_to :DB_NAME }
18
+ it { should respond_to :DB_USER }
19
+ it { should respond_to :DB_PASSWORD }
20
+ it { should respond_to :DB_HOST }
21
+ it { should respond_to :DB_CHARSET }
22
+ it { should respond_to :DB_COLLATE }
23
+ it { should respond_to :WPLANG }
24
+ it { should respond_to :WP_DEBUG }
25
+ it { should respond_to :AUTH_KEY }
26
+ it { should respond_to :SECURE_AUTH_KEY }
27
+ it { should respond_to :LOGGED_IN_KEY }
28
+ it { should respond_to :NONCE_KEY }
29
+ it { should respond_to :AUTH_SALT }
30
+ it { should respond_to :SECURE_AUTH_SALT }
31
+ it { should respond_to :LOGGED_IN_SALT }
32
+ it { should respond_to :NONCE_SALT }
33
+
34
+ its(:template) { should =~ /wp-config-sample.php$/ }
35
+ its(:output) { should =~ /wp-config.php$/ }
36
+
37
+ its(:names) { should have(5).strings }
38
+ its(:names) { should include "development" }
39
+ its(:names) { should include "production" }
40
+ its(:names) { should include "red" }
41
+ its(:names) { should include "green" }
42
+ its(:names) { should include "blue" }
43
+ its(:available_names) { should have(5).strings }
44
+ its(:available_names) { should include "development" }
45
+ its(:available_names) { should include "production" }
46
+ its(:available_names) { should include "red" }
47
+ its(:available_names) { should include "green" }
48
+ its(:available_names) { should include "blue" }
49
+
50
+ it "should allow creation of new configuration by name" do
51
+ config = WordpressDeploy::Wordpress::Configuration.new "red"
52
+ config.name.should eq "red"
53
+ end
54
+
55
+ it "should only allow configuration names found in the yaml file" do
56
+ ["production", "development", "red", "green", "blue"].each do |name|
57
+ subject.name = name
58
+ subject.name.should eq name
59
+ end
60
+ [:production, nil].each do |name|
61
+ subject.name = name
62
+ subject.name.should_not eq name
63
+ end
64
+ end
65
+
66
+ shared_examples "named configuration" do
67
+ before(:each) { subject.name = name }
68
+ its(:name) { should eq name }
69
+ its(:DB_NAME) { should eq db_name }
70
+ its(:DB_USER) { should eq db_user }
71
+ its(:DB_PASSWORD) { should eq db_password }
72
+ its(:DB_HOST) { should eq db_host }
73
+ its(:DB_CHARSET) { should eq db_charset }
74
+ its(:DB_COLLATE) { should eq db_collate }
75
+ its(:WPLANG) { should eq wplang }
76
+ its(:WP_DEBUG) { should be_true }
77
+ its(:AUTH_KEY) { should be_salt }
78
+ its(:SECURE_AUTH_KEY) { should be_salt }
79
+ its(:LOGGED_IN_KEY) { should be_salt }
80
+ its(:NONCE_KEY) { should be_salt }
81
+ its(:AUTH_SALT) { should be_salt }
82
+ its(:SECURE_AUTH_SALT) { should be_salt }
83
+ its(:LOGGED_IN_SALT) { should be_salt }
84
+ its(:NONCE_SALT) { should be_salt }
85
+ its(:port) { should eq port_num }
86
+ its(:port?) { should eq has_port }
87
+ its(:host) { should eq host }
88
+ its(:socket) { should eq socket }
89
+ its(:socket?) { should eq has_socket }
90
+ end
91
+
92
+ context "development" do
93
+ it_should_behave_like "named configuration" do
94
+ let(:name) { "development" }
95
+ let(:db_name) { "developer_database_name" }
96
+ let(:db_user) { "root" }
97
+ let(:db_password) { "q9&hu6Re_*dReWr_GAba_2wr89#2Ra8$" }
98
+ let(:db_host) { "localhost" }
99
+ let(:db_charset) { "utf8" }
100
+ let(:db_collate) { "" }
101
+ let(:wplang) { "" }
102
+ let(:port_num) { 3306 }
103
+ let(:has_port) { false }
104
+ let(:host) { "localhost" }
105
+ let(:socket) { "" }
106
+ let(:has_socket) { false }
107
+ end
108
+ end
109
+
110
+ context "production" do
111
+ it_should_behave_like "named configuration" do
112
+ let(:name) { 'production' }
113
+ let(:db_name) { "production_database_name" }
114
+ let(:db_user) { "some_user" }
115
+ let(:db_password) { "trecuwawraJaZe6P@kucraDrachustUq" }
116
+ let(:db_host) { "abbott.biz:6654" }
117
+ let(:db_charset) { "utf8" }
118
+ let(:db_collate) { "" }
119
+ let(:wplang) { "" }
120
+ let(:port_num) { 6654 }
121
+ let(:has_port) { true }
122
+ let(:host) { "abbott.biz" }
123
+ let(:socket) { "" }
124
+ let(:has_socket) { false }
125
+ end
126
+ end
127
+
128
+ context "red" do
129
+ it_should_behave_like "named configuration" do
130
+ let(:name) { 'red' }
131
+ let(:db_name) { "red" }
132
+ let(:db_user) { "red_user" }
133
+ let(:db_password) { "Bun__huPEMeBreM6tebRAp@eguzuQExe" }
134
+ let(:db_host) { "hanerutherford.biz" }
135
+ let(:db_charset) { "utf8" }
136
+ let(:db_collate) { "" }
137
+ let(:wplang) { "" }
138
+ let(:port_num) { 3306 }
139
+ let(:has_port) { false }
140
+ let(:host) { "hanerutherford.biz" }
141
+ let(:socket) { "" }
142
+ let(:has_socket) { false }
143
+ end
144
+ end
145
+
146
+ context "green" do
147
+ it_should_behave_like "named configuration" do
148
+ let(:name) { 'green' }
149
+ let(:db_name) { "green" }
150
+ let(:db_user) { "domenick.dare" }
151
+ let(:db_password) { "Daw&HEWuzaz6sa&epHech_spAKucHaTH" }
152
+ let(:db_host) { "yundt.org" }
153
+ let(:db_charset) { "utf8" }
154
+ let(:db_collate) { "" }
155
+ let(:wplang) { "" }
156
+ let(:port_num) { 3306 }
157
+ let(:has_port) { false }
158
+ let(:host) { "yundt.org" }
159
+ let(:socket) { "" }
160
+ let(:has_socket) { false }
161
+ end
162
+ end
163
+
164
+ context "blue" do
165
+ it_should_behave_like "named configuration" do
166
+ let(:name) { 'blue' }
167
+ let(:db_name) { "blue" }
168
+ let(:db_user) { "harrison" }
169
+ let(:db_password) { "w5@reba?9?pepuk7w9a#H86ustaGawE!" }
170
+ let(:db_host) { "torphagenes.com:/tmp/mysql5.sock" }
171
+ let(:db_charset) { "utf8" }
172
+ let(:db_collate) { "" }
173
+ let(:wplang) { "" }
174
+ let(:port_num) { 3306 }
175
+ let(:has_port) { false }
176
+ let(:host) { "torphagenes.com" }
177
+ let(:socket) { "/tmp/mysql5.sock" }
178
+ let(:has_socket) { true }
179
+ end
180
+ end
181
+
182
+ describe "saving configuration" do
183
+ it "should create a file if it does not exist" do
184
+ # Remove the file (even if it exists)
185
+ FileUtils.rm subject.output if File.exists? subject.output
186
+
187
+ # Try saving it
188
+ subject.save!
189
+
190
+ # Check that it now exists
191
+ File.exists?(subject.output).should be_true
192
+ end
193
+
194
+ it "should be calling all of the configuration properties" do
195
+ WordpressDeploy::Wordpress::Configuration::WP_CONFIGURATION_ALL.each do |attr|
196
+ subject.should_receive(attr).exactly(1).times
197
+ end
198
+ subject.should_receive(:define).exactly(WordpressDeploy::Wordpress::Configuration::WP_CONFIGURATION_ALL.count).times
199
+ subject.save!
200
+ end
201
+ end
202
+ end
@@ -3,10 +3,10 @@ require File.expand_path('../lib/wordpress_deploy/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Ryan Lovelett"]
6
- gem.email = ["ryan@wahvee.com"]
6
+ gem.email = ["ryan@lovelett.me"]
7
7
  gem.description = %q{Used to deploy a Wordpress site.}
8
- gem.summary = %q{}
9
- gem.homepage = %q{https://github.com/RLovelett/jsb3}
8
+ gem.summary = %q{Wordpress Deploy is a RubyGem, written for Linux and Mac OSX, that allows you to easily perform Wordpress deployment operations. It provides you with an elegant DSL in Ruby for modeling your deployments.}
9
+ gem.homepage = %q{https://github.com/RLovelett/wordpress-deploy}
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -15,12 +15,15 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = WordpressDeploy::VERSION
17
17
 
18
- gem.add_dependency 'thor', ['~> 0.14.6']
19
- gem.add_dependency 'open4', ['~> 1.3.0']
20
- gem.add_dependency 'actionpack', ['~> 3.2.6']
18
+ ##
19
+ # Gem dependencies
20
+ gem.add_dependency 'thor', ['~> 0.15.4']
21
21
  gem.add_dependency 'colorize', ['~> 0.5.8']
22
- gem.add_development_dependency "rake"
23
- gem.add_development_dependency "rspec"
24
- gem.add_development_dependency "mocha"
25
- gem.add_development_dependency "timecop"
22
+ gem.add_dependency 'os', ['~> 0.9.4']
23
+ gem.add_dependency 'titleize', ['~> 1.2.1']
24
+ gem.add_dependency 'actionpack', ['~> 3.2.6']
25
+
26
+ gem.add_development_dependency 'rake', ['~> 0.9.2.2']
27
+ gem.add_development_dependency 'rspec', ['~> 2.11.0']
28
+ gem.add_development_dependency 'guard-rspec', ['~> 1.2.1']
26
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wordpress-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha1
4
+ version: 1.0.0.alpha2
5
5
  prerelease: 6
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: 2012-07-02 00:00:00.000000000 Z
12
+ date: 2012-08-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.14.6
21
+ version: 0.15.4
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,15 +26,15 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.14.6
29
+ version: 0.15.4
30
30
  - !ruby/object:Gem::Dependency
31
- name: open4
31
+ name: colorize
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.3.0
37
+ version: 0.5.8
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,15 +42,15 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.3.0
45
+ version: 0.5.8
46
46
  - !ruby/object:Gem::Dependency
47
- name: actionpack
47
+ name: os
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 3.2.6
53
+ version: 0.9.4
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,15 +58,15 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 3.2.6
61
+ version: 0.9.4
62
62
  - !ruby/object:Gem::Dependency
63
- name: colorize
63
+ name: titleize
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 0.5.8
69
+ version: 1.2.1
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,82 +74,86 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 0.5.8
77
+ version: 1.2.1
78
78
  - !ruby/object:Gem::Dependency
79
- name: rake
79
+ name: actionpack
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
- - - ! '>='
83
+ - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
85
+ version: 3.2.6
86
+ type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - ! '>='
91
+ - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 3.2.6
94
94
  - !ruby/object:Gem::Dependency
95
- name: rspec
95
+ name: rake
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
- - - ! '>='
99
+ - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: '0'
101
+ version: 0.9.2.2
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
- - - ! '>='
107
+ - - ~>
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: 0.9.2.2
110
110
  - !ruby/object:Gem::Dependency
111
- name: mocha
111
+ name: rspec
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 2.11.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  none: false
122
122
  requirements:
123
- - - ! '>='
123
+ - - ~>
124
124
  - !ruby/object:Gem::Version
125
- version: '0'
125
+ version: 2.11.0
126
126
  - !ruby/object:Gem::Dependency
127
- name: timecop
127
+ name: guard-rspec
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
- - - ! '>='
131
+ - - ~>
132
132
  - !ruby/object:Gem::Version
133
- version: '0'
133
+ version: 1.2.1
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  none: false
138
138
  requirements:
139
- - - ! '>='
139
+ - - ~>
140
140
  - !ruby/object:Gem::Version
141
- version: '0'
141
+ version: 1.2.1
142
142
  description: Used to deploy a Wordpress site.
143
143
  email:
144
- - ryan@wahvee.com
144
+ - ryan@lovelett.me
145
145
  executables:
146
146
  - wp-deploy
147
147
  extensions: []
148
148
  extra_rdoc_files: []
149
149
  files:
150
150
  - .gitignore
151
+ - .rspec
152
+ - .rvmrc
153
+ - .travis.yml
151
154
  - Gemfile
152
155
  - Gemfile.lock
156
+ - Guardfile
153
157
  - LICENSE.md
154
158
  - README.md
155
159
  - Rakefile
@@ -157,22 +161,23 @@ files:
157
161
  - lib/wordpress_deploy.rb
158
162
  - lib/wordpress_deploy/cli/helpers.rb
159
163
  - lib/wordpress_deploy/cli/utility.rb
160
- - lib/wordpress_deploy/config.rb
161
- - lib/wordpress_deploy/database/base.rb
162
164
  - lib/wordpress_deploy/database/mysql.rb
165
+ - lib/wordpress_deploy/environment.rb
163
166
  - lib/wordpress_deploy/errors.rb
164
167
  - lib/wordpress_deploy/logger.rb
165
- - lib/wordpress_deploy/pipeline.rb
166
- - lib/wordpress_deploy/storage/base.rb
167
- - lib/wordpress_deploy/storage/ftp.rb
168
- - lib/wordpress_deploy/storage/local.rb
169
- - lib/wordpress_deploy/storage/scp.rb
170
- - lib/wordpress_deploy/storage/sftp.rb
168
+ - lib/wordpress_deploy/transfer_protocols/ftp.rb
171
169
  - lib/wordpress_deploy/version.rb
172
- - spec/config_spec.rb
170
+ - lib/wordpress_deploy/wordpress/configuration.rb
171
+ - spec/data/ftp.yml
172
+ - spec/data/wp-config-sample.php
173
+ - spec/data/wp-config.yml
174
+ - spec/database/mysql_spec.rb
175
+ - spec/environment_spec.rb
173
176
  - spec/spec_helper.rb
177
+ - spec/transfer_protocols/ftp_spec.rb
178
+ - spec/wordpress/configuration_spec.rb
174
179
  - wordpress_deploy.gemspec
175
- homepage: https://github.com/RLovelett/jsb3
180
+ homepage: https://github.com/RLovelett/wordpress-deploy
176
181
  licenses: []
177
182
  post_install_message:
178
183
  rdoc_options: []
@@ -184,6 +189,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
189
  - - ! '>='
185
190
  - !ruby/object:Gem::Version
186
191
  version: '0'
192
+ segments:
193
+ - 0
194
+ hash: -3202270449731342025
187
195
  required_rubygems_version: !ruby/object:Gem::Requirement
188
196
  none: false
189
197
  requirements:
@@ -195,7 +203,15 @@ rubyforge_project:
195
203
  rubygems_version: 1.8.24
196
204
  signing_key:
197
205
  specification_version: 3
198
- summary: ''
206
+ summary: Wordpress Deploy is a RubyGem, written for Linux and Mac OSX, that allows
207
+ you to easily perform Wordpress deployment operations. It provides you with an elegant
208
+ DSL in Ruby for modeling your deployments.
199
209
  test_files:
200
- - spec/config_spec.rb
210
+ - spec/data/ftp.yml
211
+ - spec/data/wp-config-sample.php
212
+ - spec/data/wp-config.yml
213
+ - spec/database/mysql_spec.rb
214
+ - spec/environment_spec.rb
201
215
  - spec/spec_helper.rb
216
+ - spec/transfer_protocols/ftp_spec.rb
217
+ - spec/wordpress/configuration_spec.rb