wordpress-deploy 1.0.0.alpha1 → 1.0.0.alpha2

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.
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