capistrano-middleman 0.0.1 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1191fecc0afe53ccb5d246a73dc13c3ab7e0b68f
4
- data.tar.gz: 7dd7e2daf663dfe122f92ad4b1e4855bc981f0c8
3
+ metadata.gz: f34876824ba2dc393f73ed7f0727847fe3695c4f
4
+ data.tar.gz: b460995cb2c51d550986aca589a6734c59b17ce8
5
5
  SHA512:
6
- metadata.gz: 981a7c5b9f3ac93c6f40a4675583649ef6360f3f1e8fd2785032ff829041126801714f3300461e598a2793372088863194ca9b5bf30559e6c0d876a6c6ef7570
7
- data.tar.gz: 7d4b29b21a82688a891593df61d1216bb08edfd649b92c97d22154dc360c72cf1ce56f68f7a49d252ef7ddd95695af478e35a8fba6487de05e6989eb3eaa0ced
6
+ metadata.gz: 1140b941732728b758890d6cc9614891dc589c19219be2e42196d49e0893a193785d5c2d0181e6d7e6c1f6af16429db0c91162068c5e5981f83195dd092bda38
7
+ data.tar.gz: b4ee9490f710bce07755fa7818b2288b76b0efc1634f044737585768fface396c90dbf04b52e5bf48a28c7597bca121b4db13f6c61250cf664685decfc7e77dd
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format Fuubar
2
+ --order rand
3
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,40 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'tmp/**/*'
4
+ DisplayCopNames: true
5
+
6
+ Metrics/AbcSize:
7
+ Max: 38
8
+
9
+ # Configuration parameters: AllowURI.
10
+ Metrics/LineLength:
11
+ Max: 225
12
+
13
+ # Configuration parameters: CountKeywordArgs.
14
+ Metrics/ParameterLists:
15
+ Max: 6
16
+
17
+ Style/CaseEquality:
18
+ Enabled: false
19
+
20
+ Metrics/BlockNesting:
21
+ Max: 4
22
+
23
+ # Configuration parameters: CountComments.
24
+ Metrics/ClassLength:
25
+ Max: 174
26
+
27
+ Metrics/CyclomaticComplexity:
28
+ Max: 7
29
+
30
+ # Configuration parameters: CountComments.
31
+ Metrics/MethodLength:
32
+ Max: 76
33
+
34
+ Metrics/PerceivedComplexity:
35
+ Max: 8
36
+
37
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
38
+ Style/MethodName:
39
+ Exclude:
40
+ - lib/proxy_pac_rb/environment.rb
data/.simplecov ADDED
@@ -0,0 +1,8 @@
1
+ SimpleCov.start do
2
+ add_filter "/features/"
3
+ add_filter "/spec/"
4
+ add_filter "/tmp"
5
+ add_filter "/vendor"
6
+
7
+ add_group "lib", "lib"
8
+ end
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ env:
2
+ - CI=1
3
+ language: ruby
4
+ bundler_args: --without development debug profile
5
+ rvm:
6
+ - 2.1.5
7
+ - 2.2.2
8
+ script: script/test
data/.yardopts ADDED
@@ -0,0 +1,5 @@
1
+ -o doc/yard
2
+ --verbose
3
+ -
4
+ LICENSE.md
5
+ README.md
data/Gemfile CHANGED
@@ -3,4 +3,46 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in capistrano-middleman.gemspec
4
4
  gemspec
5
5
 
6
- gem 'rake', '~>10.0'
6
+ group :debug do
7
+ gem 'pry'
8
+ gem 'byebug'
9
+
10
+ gem 'pry-doc', require: false
11
+ gem 'pry-stack_explorer', require: false
12
+ # gem 'pry-exception_explorer', require: false
13
+ # gem 'pry-rescue', require: false
14
+ gem 'pry-byebug', require: false
15
+ end
16
+
17
+ group :development, :test do
18
+ gem 'aruba', require: false, git: 'https://github.com/cucumber/aruba'
19
+ gem 'awesome_print', require: 'ap'
20
+ gem 'bundler', '~> 1.3', require: false
21
+ gem 'command_exec', require: false
22
+ gem 'coveralls', require: false
23
+ gem 'cucumber', require: false, git: 'https://github.com/cucumber/cucumber'
24
+ gem 'erubis'
25
+ gem 'fedux_org-stdlib', '~>0.11.16', require: false
26
+ gem 'filegen'
27
+ gem 'foreman', require: false
28
+ gem 'fuubar', require: false
29
+ gem 'github-markup'
30
+ gem 'inch', require: false
31
+ gem 'launchy', require: false
32
+ gem 'license_finder'
33
+ gem 'rack'
34
+ gem 'rake', require: false
35
+ gem 'redcarpet', require: false
36
+ gem 'rubocop', require: false
37
+ gem 'simplecov', require: false
38
+ gem 'sinatra', require: 'sinatra/base'
39
+ gem 'tmrb', require: false
40
+ gem 'travis-lint', require: false
41
+ gem 'versionomy', require: false
42
+ gem 'yard', require: false
43
+ gem 'rspec', require: false
44
+ end
45
+
46
+ group :profile do
47
+ gem 'ruby-prof'
48
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,326 @@
1
+ GIT
2
+ remote: https://github.com/cucumber/aruba
3
+ revision: 9e9b45d7d0d4ec93df0d81b0ba37b6efe03021d5
4
+ specs:
5
+ aruba (0.6.2)
6
+ childprocess (>= 0.3.6)
7
+ cucumber (>= 1.1.1)
8
+ rspec-expectations (>= 2.7.0)
9
+
10
+ GIT
11
+ remote: https://github.com/cucumber/cucumber
12
+ revision: db7c5c95c154e4055a753ac7319b7d040487be57
13
+ specs:
14
+ cucumber (2.0.0)
15
+ builder (>= 2.1.2)
16
+ cucumber-core (~> 1.1.3)
17
+ diff-lcs (>= 1.1.3)
18
+ gherkin (~> 2.12)
19
+ multi_json (>= 1.7.5, < 2.0)
20
+ multi_test (>= 0.1.2)
21
+
22
+ PATH
23
+ remote: .
24
+ specs:
25
+ capistrano-middleman (0.0.1)
26
+ capistrano (~> 3)
27
+ middleman (~> 3.3)
28
+ rubyzip (~> 1.1.7)
29
+
30
+ GEM
31
+ remote: https://rubygems.org/
32
+ specs:
33
+ activesupport (4.1.9)
34
+ i18n (~> 0.6, >= 0.6.9)
35
+ json (~> 1.7, >= 1.7.7)
36
+ minitest (~> 5.1)
37
+ thread_safe (~> 0.1)
38
+ tzinfo (~> 1.1)
39
+ addressable (2.3.8)
40
+ ast (2.0.0)
41
+ astrolabe (1.3.0)
42
+ parser (>= 2.2.0.pre.3, < 3.0)
43
+ awesome_print (1.6.1)
44
+ binding_of_caller (0.7.2)
45
+ debug_inspector (>= 0.0.1)
46
+ blockenspiel (0.4.5)
47
+ builder (3.2.2)
48
+ byebug (4.0.5)
49
+ columnize (= 0.9.0)
50
+ capistrano (3.4.0)
51
+ i18n
52
+ rake (>= 10.0.0)
53
+ sshkit (~> 1.3)
54
+ celluloid (0.16.0)
55
+ timers (~> 4.0.0)
56
+ childprocess (0.5.6)
57
+ ffi (~> 1.0, >= 1.0.11)
58
+ chunky_png (1.3.4)
59
+ coderay (1.1.0)
60
+ coffee-script (2.4.1)
61
+ coffee-script-source
62
+ execjs
63
+ coffee-script-source (1.9.1.1)
64
+ colorize (0.7.7)
65
+ columnize (0.9.0)
66
+ command_exec (0.2.0)
67
+ activesupport
68
+ smart_colored
69
+ xml-simple
70
+ compass (1.0.3)
71
+ chunky_png (~> 1.2)
72
+ compass-core (~> 1.0.2)
73
+ compass-import-once (~> 1.0.5)
74
+ rb-fsevent (>= 0.9.3)
75
+ rb-inotify (>= 0.9)
76
+ sass (>= 3.3.13, < 3.5)
77
+ compass-core (1.0.3)
78
+ multi_json (~> 1.0)
79
+ sass (>= 3.3.0, < 3.5)
80
+ compass-import-once (1.0.5)
81
+ sass (>= 3.2, < 3.5)
82
+ coveralls (0.8.1)
83
+ json (~> 1.8)
84
+ rest-client (>= 1.6.8, < 2)
85
+ simplecov (~> 0.10.0)
86
+ term-ansicolor (~> 1.3)
87
+ thor (~> 0.19.1)
88
+ cucumber-core (1.1.3)
89
+ gherkin (~> 2.12.0)
90
+ debug_inspector (0.0.2)
91
+ diff-lcs (1.2.5)
92
+ docile (1.1.5)
93
+ domain_name (0.5.24)
94
+ unf (>= 0.0.5, < 1.0.0)
95
+ erubis (2.7.0)
96
+ execjs (2.5.2)
97
+ fedux_org-stdlib (0.11.16)
98
+ activesupport
99
+ ffi (1.9.6)
100
+ filegen (0.4.3)
101
+ activesupport
102
+ foreman (0.78.0)
103
+ thor (~> 0.19.1)
104
+ fuubar (2.0.0)
105
+ rspec (~> 3.0)
106
+ ruby-progressbar (~> 1.4)
107
+ gherkin (2.12.2)
108
+ multi_json (~> 1.3)
109
+ github-markup (1.3.3)
110
+ haml (4.0.6)
111
+ tilt
112
+ hike (1.2.3)
113
+ hitimes (1.2.2)
114
+ hooks (0.4.0)
115
+ uber (~> 0.0.4)
116
+ http-cookie (1.0.2)
117
+ domain_name (~> 0.5)
118
+ httparty (0.13.3)
119
+ json (~> 1.8)
120
+ multi_xml (>= 0.5.2)
121
+ i18n (0.7.0)
122
+ inch (0.6.1)
123
+ pry
124
+ sparkr (>= 0.2.0)
125
+ term-ansicolor
126
+ yard (~> 0.8.7.5)
127
+ json (1.8.2)
128
+ kramdown (1.6.0)
129
+ launchy (2.4.3)
130
+ addressable (~> 2.3)
131
+ license_finder (2.0.4)
132
+ bundler
133
+ httparty
134
+ thor
135
+ xml-simple
136
+ listen (2.10.0)
137
+ celluloid (~> 0.16.0)
138
+ rb-fsevent (>= 0.9.3)
139
+ rb-inotify (>= 0.9)
140
+ method_source (0.8.2)
141
+ middleman (3.3.11)
142
+ coffee-script (~> 2.2)
143
+ compass (>= 1.0.0, < 2.0.0)
144
+ compass-import-once (= 1.0.5)
145
+ execjs (~> 2.0)
146
+ haml (>= 4.0.5)
147
+ kramdown (~> 1.2)
148
+ middleman-core (= 3.3.11)
149
+ middleman-sprockets (>= 3.1.2)
150
+ sass (>= 3.4.0, < 4.0)
151
+ uglifier (~> 2.5)
152
+ middleman-core (3.3.11)
153
+ activesupport (~> 4.1.0)
154
+ bundler (~> 1.1)
155
+ erubis
156
+ hooks (~> 0.3)
157
+ i18n (~> 0.7.0)
158
+ listen (>= 2.7.9, < 3.0)
159
+ padrino-helpers (~> 0.12.3)
160
+ rack (>= 1.4.5, < 2.0)
161
+ rack-test (~> 0.6.2)
162
+ thor (>= 0.15.2, < 2.0)
163
+ tilt (~> 1.4.1, < 2.0)
164
+ middleman-sprockets (3.4.2)
165
+ middleman-core (>= 3.3)
166
+ sprockets (~> 2.12.1)
167
+ sprockets-helpers (~> 1.1.0)
168
+ sprockets-sass (~> 1.3.0)
169
+ mime-types (2.5)
170
+ minitest (5.5.1)
171
+ multi_json (1.10.1)
172
+ multi_test (0.1.2)
173
+ multi_xml (0.5.5)
174
+ net-scp (1.2.1)
175
+ net-ssh (>= 2.6.5)
176
+ net-ssh (2.9.2)
177
+ netrc (0.10.3)
178
+ padrino-helpers (0.12.5)
179
+ i18n (~> 0.6, >= 0.6.7)
180
+ padrino-support (= 0.12.5)
181
+ tilt (~> 1.4.1)
182
+ padrino-support (0.12.5)
183
+ activesupport (>= 3.1)
184
+ parser (2.2.2.1)
185
+ ast (>= 1.1, < 3.0)
186
+ powerpack (0.1.0)
187
+ pry (0.10.1)
188
+ coderay (~> 1.1.0)
189
+ method_source (~> 0.8.1)
190
+ slop (~> 3.4)
191
+ pry-byebug (3.1.0)
192
+ byebug (~> 4.0)
193
+ pry (~> 0.10)
194
+ pry-doc (0.6.0)
195
+ pry (~> 0.9)
196
+ yard (~> 0.8)
197
+ pry-stack_explorer (0.4.9.2)
198
+ binding_of_caller (>= 0.7)
199
+ pry (>= 0.9.11)
200
+ rack (1.6.0)
201
+ rack-protection (1.5.3)
202
+ rack
203
+ rack-test (0.6.3)
204
+ rack (>= 1.0)
205
+ rainbow (2.0.0)
206
+ rake (10.4.2)
207
+ rb-fsevent (0.9.4)
208
+ rb-inotify (0.9.5)
209
+ ffi (>= 0.5.0)
210
+ redcarpet (3.2.3)
211
+ rest-client (1.8.0)
212
+ http-cookie (>= 1.0.2, < 2.0)
213
+ mime-types (>= 1.16, < 3.0)
214
+ netrc (~> 0.7)
215
+ rspec (3.2.0)
216
+ rspec-core (~> 3.2.0)
217
+ rspec-expectations (~> 3.2.0)
218
+ rspec-mocks (~> 3.2.0)
219
+ rspec-core (3.2.3)
220
+ rspec-support (~> 3.2.0)
221
+ rspec-expectations (3.2.1)
222
+ diff-lcs (>= 1.2.0, < 2.0)
223
+ rspec-support (~> 3.2.0)
224
+ rspec-mocks (3.2.1)
225
+ diff-lcs (>= 1.2.0, < 2.0)
226
+ rspec-support (~> 3.2.0)
227
+ rspec-support (3.2.2)
228
+ rubocop (0.30.1)
229
+ astrolabe (~> 1.3)
230
+ parser (>= 2.2.2.1, < 3.0)
231
+ powerpack (~> 0.1)
232
+ rainbow (>= 1.99.1, < 3.0)
233
+ ruby-progressbar (~> 1.4)
234
+ ruby-prof (0.15.8)
235
+ ruby-progressbar (1.7.5)
236
+ rubyzip (1.1.7)
237
+ sass (3.4.13)
238
+ simplecov (0.10.0)
239
+ docile (~> 1.1.0)
240
+ json (~> 1.8)
241
+ simplecov-html (~> 0.10.0)
242
+ simplecov-html (0.10.0)
243
+ sinatra (1.4.6)
244
+ rack (~> 1.4)
245
+ rack-protection (~> 1.4)
246
+ tilt (>= 1.3, < 3)
247
+ slop (3.6.0)
248
+ smart_colored (1.1.1)
249
+ sparkr (0.4.1)
250
+ sprockets (2.12.3)
251
+ hike (~> 1.2)
252
+ multi_json (~> 1.0)
253
+ rack (~> 1.0)
254
+ tilt (~> 1.1, != 1.3.0)
255
+ sprockets-helpers (1.1.0)
256
+ sprockets (~> 2.0)
257
+ sprockets-sass (1.3.1)
258
+ sprockets (~> 2.0)
259
+ tilt (~> 1.1)
260
+ sshkit (1.7.1)
261
+ colorize (>= 0.7.0)
262
+ net-scp (>= 1.1.2)
263
+ net-ssh (>= 2.8.0)
264
+ term-ansicolor (1.3.0)
265
+ tins (~> 1.0)
266
+ thor (0.19.1)
267
+ thread_safe (0.3.4)
268
+ tilt (1.4.1)
269
+ timers (4.0.1)
270
+ hitimes
271
+ tins (1.5.1)
272
+ tmrb (1.2.7)
273
+ thor
274
+ travis-lint (2.0.0)
275
+ json
276
+ tzinfo (1.2.2)
277
+ thread_safe (~> 0.1)
278
+ uber (0.0.13)
279
+ uglifier (2.7.1)
280
+ execjs (>= 0.3.0)
281
+ json (>= 1.8.0)
282
+ unf (0.1.4)
283
+ unf_ext
284
+ unf_ext (0.0.7.1)
285
+ versionomy (0.4.4)
286
+ blockenspiel (>= 0.4.5)
287
+ xml-simple (1.1.5)
288
+ yard (0.8.7.6)
289
+
290
+ PLATFORMS
291
+ ruby
292
+
293
+ DEPENDENCIES
294
+ aruba!
295
+ awesome_print
296
+ bundler (~> 1.3)
297
+ byebug
298
+ capistrano-middleman!
299
+ command_exec
300
+ coveralls
301
+ cucumber!
302
+ erubis
303
+ fedux_org-stdlib (~> 0.11.16)
304
+ filegen
305
+ foreman
306
+ fuubar
307
+ github-markup
308
+ inch
309
+ launchy
310
+ license_finder
311
+ pry
312
+ pry-byebug
313
+ pry-doc
314
+ pry-stack_explorer
315
+ rack
316
+ rake
317
+ redcarpet
318
+ rspec
319
+ rubocop
320
+ ruby-prof
321
+ simplecov
322
+ sinatra
323
+ tmrb
324
+ travis-lint
325
+ versionomy
326
+ yard
data/README.md CHANGED
@@ -1,13 +1,17 @@
1
- # Capistrano::Middleman
1
+ # capistrano-middleman
2
2
 
3
- TODO: Write a gem description
3
+ [![Gem Version](https://badge.fury.io/rb/capistrano-middleman.svg)](http://badge.fury.io/rb/capistrano-middleman)
4
+
5
+ Deploy middleman app with the help of [`capistrano`](https://github.com/capistrano/capistrano) (Vers. 3).
6
+ [`capistrano-scm-copy`](https://github.com/wercker/capistrano-scm-copy) was
7
+ quite helpful as template for this gem.
4
8
 
5
9
  ## Installation
6
10
 
7
11
  Add this line to your application's Gemfile:
8
12
 
9
13
  ```ruby
10
- gem 'capistrano-middleman'
14
+ gem 'capistrano-middleman', require: false
11
15
  ```
12
16
 
13
17
  And then execute:
@@ -20,7 +24,47 @@ Or install it yourself as:
20
24
 
21
25
  ## Usage
22
26
 
23
- TODO: Write usage instructions here
27
+
28
+ ### Activate plugin
29
+
30
+ You just need to change `:scm` to `:middleman` in your `deploy.rb`.
31
+
32
+ ```
33
+ set :scm, :middleman
34
+ ```
35
+
36
+ ### Configuration
37
+
38
+ You can configure `middleman-presentation` by using the following options:
39
+
40
+ ```ruby
41
+ # Local name of archive build from middleman-build-directory
42
+ set :archive_name, 'archive.zip'
43
+
44
+ # Name of build_directory
45
+ set :build_dir, 'build'
46
+
47
+ # Name of source directory
48
+ set :source_dir, 'source'
49
+
50
+ # Keep permissions from filesystem
51
+ set :keep_filesystem_permissions, false
52
+
53
+ # Overwrite permissions of directories
54
+ set :directory_permissions, 2775
55
+
56
+ # Overwrite permissions of files
57
+ set :file_permissions, 0664
58
+ ```
59
+
60
+ ### Required Software
61
+
62
+ Machine running [`capistrano`](https://github.com/capistrano/capistrano): [capistrano 3](https://github.com/capistrano/capistrano)
63
+
64
+ Servers:
65
+
66
+ * mktemp
67
+ * unzip
24
68
 
25
69
  ## Contributing
26
70
 
data/Rakefile CHANGED
@@ -1,2 +1,50 @@
1
- require 'bundler/gem_tasks'
1
+ #!/usr/bin/env rake
2
2
 
3
+ # require 'bundler'
4
+ # Bundler.require :default, :test, :development
5
+
6
+ require 'filegen'
7
+ require 'fedux_org_stdlib/rake_tasks'
8
+
9
+ require 'coveralls/rake/task'
10
+ Coveralls::RakeTask.new
11
+
12
+ desc 'Default task => run test suite'
13
+ task default: :test
14
+
15
+ desc 'Run test suite'
16
+ task :test do
17
+ Rake::Task['test:before'].execute
18
+
19
+ begin
20
+ %w(test:rubocop test:rspec test:cucumber test:after).each { |t| Rake::Task[t].execute }
21
+ ensure
22
+ Rake::Task['test:after'].execute
23
+ end
24
+ end
25
+
26
+ namespace :test do
27
+ desc 'Test with coveralls'
28
+ task coveralls: %w(test coveralls:push)
29
+
30
+ require 'rubocop/rake_task'
31
+ RuboCop::RakeTask.new
32
+
33
+ desc 'Run rspec'
34
+ task :rspec do
35
+ sh 'bundle exec rspec'
36
+ end
37
+
38
+ desc 'Run cucumber'
39
+ task :cucumber do
40
+ # sh 'bundle exec cucumber -p all'
41
+ end
42
+
43
+ desc 'Setup test environment'
44
+ task :before do
45
+ end
46
+
47
+ desc 'Teardown test environment'
48
+ task :after do
49
+ end
50
+ end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Capistrano::Middleman::VERSION
9
9
  spec.authors = ['Max Meyer']
10
10
  spec.email = ['dev@fedux.org']
11
- spec.summary = %q{Middleman deploy strategy for capistrano}
11
+ spec.summary = 'Middleman deploy strategy for capistrano'
12
12
  spec.homepage = 'https://github.com/maxmeyer/capistrano-middleman'
13
13
  spec.license = 'MIT'
14
14
 
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_runtime_dependency 'middleman', '~> 3.3'
23
23
  spec.add_runtime_dependency 'capistrano', '~> 3'
24
+ spec.add_runtime_dependency 'rubyzip', '~>1.1.7'
24
25
  end
data/cucumber.yml ADDED
@@ -0,0 +1,2 @@
1
+ default: --tags @wip:3 --tags ~@broken --tags ~@broken-external
2
+ all: --tags ~@wip --tags ~@broken --tags ~@broken-external
@@ -0,0 +1,37 @@
1
+ module Capistrano
2
+ module Middleman
3
+ module Utils
4
+ def zip(
5
+ source_directory,
6
+ destination_file,
7
+ prefix: nil,
8
+ working_directory: Dir.getwd,
9
+ exclude_patterns: [],
10
+ keep_filesystem_permissions: false,
11
+ file_permissions: 0664,
12
+ directory_permissions: 2775
13
+ )
14
+ list = Rake::FileList.new(File.join(source_directory, '**', '*'))
15
+ list.exclude { |f| !File.file? f }
16
+ exclude_patterns.each { |e| list.exclude e }
17
+
18
+ Zip::File.open(destination_file, Zip::File::CREATE) do |z|
19
+ list.each do |filename|
20
+ paths = []
21
+ paths << Pathname.new(prefix) unless prefix.nil? || prefix.empty?
22
+ paths << Pathname.new(filename).relative_path_from(Pathname.new(working_directory))
23
+
24
+ z.add(File.join(*paths), File.expand_path(filename))
25
+
26
+ next if keep_filesystem_permissions
27
+
28
+ z.file.chmod(file_permissions , File.join(*paths)) if z.file.file? File.join(*paths)
29
+ z.file.chmod(directory_permissions, File.join(*paths)) if z.file.directory? File.join(*paths)
30
+ end
31
+ end
32
+ end
33
+
34
+ module_function :zip
35
+ end
36
+ end
37
+ end
@@ -1,5 +1,8 @@
1
+ # encoding: utf-8
2
+ # Capistrano
1
3
  module Capistrano
4
+ # Middleman
2
5
  module Middleman
3
- VERSION = "0.0.1"
6
+ VERSION = '0.1.0'
4
7
  end
5
8
  end
@@ -1 +1,6 @@
1
+ require 'zip'
2
+ require 'zip/filesystem'
3
+ require 'pathname'
4
+ require 'capistrano/middleman/utils'
5
+
1
6
  load File.expand_path('../tasks/middleman.rake', __FILE__)
@@ -1,54 +1,65 @@
1
1
  namespace :middleman do
2
2
  middleman_options = Array(fetch(:middleman_options, %w(--verbose)))
3
3
 
4
- archive_name = fetch :archive_name, 'archive.tar.gz'
5
- build_dir = fetch :build_dir, 'build'
6
- source_dir = fetch :source_dir, 'source'
7
- exclude_dir = Array(fetch(:exclude_dir))
8
- exclude_args = exclude_dir.map { |dir| "--exclude '#{dir}'"}
4
+ archive_name = fetch :archive_name, 'archive.zip'
5
+ build_dir = fetch :build_dir, 'build'
6
+ source_dir = fetch :source_dir, 'source'
7
+ keep_filesystem_permissions = fetch :keep_filesystem_permissions, false
8
+ directory_permissions = fetch :directory_permissions, 2775
9
+ file_permissions = fetch :file_permissions, 0664
9
10
 
10
- tar_roles = fetch(:tar_roles, :all)
11
+ exclude_patterns = Array(fetch(:exclude_patterns))
11
12
 
13
+ tar_roles = fetch(:tar_roles, :all)
12
14
  desc "Archive files to #{archive_name}"
13
15
  file archive_name => source_dir do |t|
14
16
  cmd = %w(middleman build)
15
17
  cmd.concat middleman_options
16
-
17
18
  sh cmd.join(' ')
18
19
 
19
- files = FileList.new(File.join(build_dir, '*')).sub(%r{#{build_dir}/?}, '')
20
-
21
- cmd = %w(tar -cvzf)
22
- cmd << t.name
23
- cmd << "-C #{build_dir}"
24
- cmd.concat exclude_args
25
- cmd.concat files
20
+ Capistrano::Middleman::Utils.zip(
21
+ build_dir,
22
+ t.name,
23
+ working_directory: build_dir,
24
+ exclude_patterns: exclude_patterns,
25
+ keep_filesystem_permissions: keep_filesystem_permissions,
26
+ directory_permissions: directory_permissions,
27
+ file_permissions: file_permissions
28
+ )
29
+ end
26
30
 
27
- sh cmd.join(' ')
31
+ desc "Build #{archive_name} on localhost"
32
+ task build: archive_name do
33
+ run_locally do
34
+ info "Archive \"#{archive_name}\" created."
35
+ end
28
36
  end
29
37
 
30
38
  desc "Deploy #{archive_name} to release_path"
31
39
  task create_release: archive_name do |t|
32
- tarball = t.prerequisites.first
40
+ archive_file = t.prerequisites.first
33
41
 
34
42
  on release_roles tar_roles do |host|
35
43
  # Make sure the release directory exists
36
- puts "==> release_path: #{release_path} is created on #{tar_roles} roles <=="
37
- execute :install, "-d -m 755", release_path
44
+ info "==> release_path: #{release_path} is created on #{tar_roles} roles for host #{host} <=="
45
+ execute :install, "-d -m #{directory_permissions}", release_path
38
46
 
39
47
  # Create a temporary file on the server
40
48
  tmp_file = capture('mktemp')
41
49
 
42
50
  # Upload the archive, extract it and finally remove the tmp_file
43
- upload!(tarball, tmp_file)
51
+ upload!(archive_file, tmp_file)
52
+
53
+ umask = capture('umask')
54
+ debug "umask on remote system #{host} is #{umask}"
44
55
 
45
- execute :tar, '-xzf', tmp_file, '-C', release_path
56
+ execute :unzip, tmp_file, '-d', release_path
46
57
  execute :rm, '-f', tmp_file
47
58
  end
48
59
  end
49
60
 
50
61
  desc 'Cleaning up deploy'
51
- task :clean do |t|
62
+ task :clean do |_t|
52
63
  FileUtils.rm_rf build_dir
53
64
  FileUtils.rm_rf archive_name
54
65
  end
data/script/bootstrap ADDED
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ echo "Bootstrapping development environment for application.." >&2
4
+
5
+ gem install bundler && bundle install
data/script/test ADDED
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ bundle exec rake test:coveralls
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-middleman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Meyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-24 00:00:00.000000000 Z
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubyzip
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.7
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.1.7
55
69
  description:
56
70
  email:
57
71
  - dev@fedux.org
@@ -60,15 +74,25 @@ extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
62
76
  - ".gitignore"
77
+ - ".rspec"
78
+ - ".rubocop.yml"
79
+ - ".simplecov"
80
+ - ".travis.yml"
81
+ - ".yardopts"
63
82
  - Gemfile
83
+ - Gemfile.lock
64
84
  - LICENSE.txt
65
85
  - README.md
66
86
  - Rakefile
67
87
  - capistrano-middleman.gemspec
88
+ - cucumber.yml
68
89
  - lib/capistrano-middleman.rb
69
90
  - lib/capistrano/middleman.rb
91
+ - lib/capistrano/middleman/utils.rb
70
92
  - lib/capistrano/middleman/version.rb
71
93
  - lib/capistrano/tasks/middleman.rake
94
+ - script/bootstrap
95
+ - script/test
72
96
  homepage: https://github.com/maxmeyer/capistrano-middleman
73
97
  licenses:
74
98
  - MIT