geordi 1.4.3 → 1.5.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: 87d8d2aedced0e3ecb654e08fc2c78c1a5c2c463
4
- data.tar.gz: bc8f991eaaa88f1660486c3a6aefc9fb07e2a061
3
+ metadata.gz: 353c82b4e3fed11c19b3cf347e50f18d14253ae4
4
+ data.tar.gz: da71d1156fb486d8fa27218573470c99948cb7de
5
5
  SHA512:
6
- metadata.gz: 9df5ded7314adcbbb35ba3722aa39e9e2cccfbda1e668486620454c9034efa267884f2058643ed88c8a3ffa931ee9a9104e3c23e5bf055f573c19af42ca629a0
7
- data.tar.gz: 49ce0690a6dd0dd75600e6b6c012e60eafad2606d2e42a067b3a98c6cdbf0e5d58ebd3982c213e9b0449ce09ba6ee3da2b900e9d513dc4fc34eb32d51170552a
6
+ metadata.gz: 31362eec0538ed4b3e99a875fe9ec98a6e5e9252a6cfbbc44bb3146fccecd5e7d7a3c47ad1fb46e09d725c37830c6b3a3a2efbb670bda4f566644c0206edb5cf
7
+ data.tar.gz: f14ae5d1b9fdd7f0e0fda47b4947ba6685ea2422e80d4b037aeae61eefa9b5cc12237475d5bb3449e2aeba294849e86669d0c04eaf34ea00670e1f16a6194695
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- geordi (1.4.3)
4
+ geordi (1.5.0)
5
5
  thor (>= 0.18.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -4,45 +4,47 @@ Geordi
4
4
  Geordi is a collection of command line tools we use in our daily work with
5
5
  Ruby, Rails and Linux at [makandra](http://makandra.com/).
6
6
 
7
- Installing the `geordi` gem will install some binaries (see below):
7
+ Installation:
8
8
 
9
9
  gem install geordi
10
10
 
11
11
 
12
- geordi
13
- ------
12
+ `geordi`
13
+ --------
14
14
 
15
- The base command line utility offering most of the commands.
15
+ The `geordi` binary holds most of the utility commands. For the few other
16
+ binaries, see the bottom of this file.
16
17
 
17
- You may abbreviate commands by typing only the first letter(s), e.g. `geordi
18
- dev` will boot a development server, `geordi s -t` will setup a project and run
19
- tests afterwards. Underscores and dashes are equivalent.
18
+ You may abbreviate commands by typing only their first letters, e.g. `geordi
19
+ con` will boot a development console, `geordi set -t` will setup a project and
20
+ run tests afterwards.
20
21
 
21
- For details on commands, e.g. supported options, run `geordi help <command>`.
22
+ For details on commands, e.g. supported options, you may always run
23
+ `geordi help <command>`.
22
24
 
23
- ### geordi apache-site VIRTUAL_HOST
25
+ ### `geordi apache-site VIRTUAL_HOST`
24
26
 
25
27
  Enable the given virtual host, disabling all others.
26
28
 
27
29
 
28
- ### geordi capistrano COMMAND
30
+ ### `geordi capistrano COMMAND`
29
31
 
30
32
  Run a capistrano command on all deploy targets.
31
33
 
32
34
  Example: `geordi capistrano deploy`
33
35
 
34
36
 
35
- ### geordi clean
37
+ ### `geordi clean`
36
38
 
37
39
  Remove unneeded files from the current directory.
38
40
 
39
41
 
40
- ### geordi commit
42
+ ### `geordi commit`
41
43
 
42
44
  Commit using a story title from Pivotal Tracker.
43
45
 
44
46
 
45
- ### geordi console [TARGET]
47
+ ### `geordi console [TARGET]`
46
48
 
47
49
  Open a Rails console locally or on a Capistrano deploy target.
48
50
 
@@ -51,7 +53,7 @@ Open a local Rails console: `geordi console`
51
53
  Open a Rails console on `staging`: `geordi console staging`
52
54
 
53
55
 
54
- ### geordi cucumber [FILES]
56
+ ### `geordi cucumber [FILES and OPTIONS]`
55
57
 
56
58
  Run Cucumber features.
57
59
 
@@ -72,11 +74,11 @@ or `-d`.
72
74
  e.g. `--format pretty`.
73
75
 
74
76
 
75
- ### geordi deploy [STAGE]
77
+ ### `geordi deploy [STAGE]`
76
78
 
77
79
  Guided deployment across branches.
78
80
 
79
- Example: `geordi deploy production`
81
+ Example: `geordi deploy` or `geordi deploy p[roduction]`
80
82
 
81
83
  Merge, push and deploy with a single command! There are several scenarios where
82
84
  this command comes in handy:
@@ -84,7 +86,7 @@ this command comes in handy:
84
86
  1) *Production deploy:* From the master branch, run `geordi deploy production`.
85
87
  This will merge `master` to `production`, push and deploy to production.
86
88
 
87
- 2) *Feature branch deploy:* From the feature branch, run `geordi deploy staging`.
89
+ 2) *Feature branch deploy:* From a feature branch, run `geordi deploy staging`.
88
90
  This will merge the feature branch to `master`, push and deploy to staging.
89
91
 
90
92
  3) *Simple deploy:* If the source branch matches the target branch, merging will
@@ -93,18 +95,18 @@ this command comes in handy:
93
95
  Calling the command without arguments will infer the target stage from the
94
96
  current branch and fall back to master/staging.
95
97
 
96
- When your project does not have a `deploy:migrations` task, this command will
97
- run `cap deploy` instead when called with `-M`: `geordi deploy -M staging`.
98
-
98
+ Finds available Capistrano stages by their prefix, e.g. `geordi deploy p` will
99
+ deploy production, `geordi deploy mak` will deploy a `makandra` stage if there
100
+ is a file config/deploy/makandra.rb.
99
101
 
100
- ### geordi devserver
102
+ When your project is running Capistrano 3, deployment will use `cap deploy`
103
+ instead of `cap deploy:migrations`. You can force using `deploy` by passing the
104
+ -M option: `geordi deploy -M staging`.
101
105
 
102
- Start a development server.
103
106
 
107
+ ### `geordi dump [TARGET]`
104
108
 
105
- ### geordi dump [TARGET]
106
-
107
- Handle dumps.
109
+ Handle dumps (see `geordi help dump` for details).
108
110
 
109
111
  When called without arguments, dumps the development database with `dumple`.
110
112
 
@@ -126,14 +128,9 @@ dump into the development database after downloading it.
126
128
  geordi dump staging -l
127
129
 
128
130
 
129
- ### geordi eurest
130
-
131
- Open the current Eurest cantina menu.
131
+ ### `geordi firefox COMMAND`
132
132
 
133
-
134
- ### geordi firefox COMMAND
135
-
136
- Run a command with VNC set up (and the test firefox, if present).
133
+ Run a command with VNC and test browser set up (alias: chrome).
137
134
 
138
135
  Example: `geordi firefox b cucumber` or `geordi firefox --setup 24.0`
139
136
 
@@ -145,12 +142,12 @@ Useful when you need Firefox for Selenium or the VNC set up, but can't use the
145
142
  This command is aliased `chrome` for users running Selenium in Chrome.
146
143
 
147
144
 
148
- ### geordi help [COMMAND]
145
+ ### `geordi help [COMMAND]`
149
146
 
150
147
  Describe available commands or one specific command.
151
148
 
152
149
 
153
- ### geordi migrate
150
+ ### `geordi migrate`
154
151
 
155
152
  Migrate all databases.
156
153
 
@@ -161,30 +158,20 @@ environment and `rake parallel:prepare` afterwards. Otherwise, invokes `geordi r
161
158
  with `db:migrate`.
162
159
 
163
160
 
164
- ### geordi png-optimize PATH
161
+ ### `geordi png-optimize PATH`
165
162
 
166
163
  Optimize .png files.
167
164
 
165
+ Example: `geordi png-optimize some/directory`
166
+
168
167
  - Removes color profiles: cHRM, sRGB, gAMA, ICC, etc.
169
168
  - Eliminates unused colors and reduces bit-depth (if possible)
170
169
  - May reduce PNG file size lossless
171
170
 
172
- Batch-optimize all `*.png` files in a directory:
173
-
174
- geordi png-optimize directory
175
171
 
176
- Batch-optimize the current directory:
172
+ ### `geordi purge-kernels`
177
173
 
178
- geordi png-optimize .
179
-
180
- Optimize a single file:
181
-
182
- geordi png-optimize input.png
183
-
184
-
185
- ### geordi purge-kernels
186
-
187
- Purge linux kernels older than the current one.
174
+ [sudo] Purge linux kernels older than the current one.
188
175
 
189
176
  Example: `sudo geordi purge-kernels`
190
177
 
@@ -195,7 +182,7 @@ This script will retrieve and print a list of all current or older kernels. If
195
182
  confirmed, it will then purge all kernels older than the current one.
196
183
 
197
184
 
198
- ### geordi rake TASK
185
+ ### `geordi rake TASK`
199
186
 
200
187
  Run a rake task in several Rails environments.
201
188
 
@@ -208,12 +195,12 @@ Example: `geordi rake db:migrate`
208
195
  - cucumber
209
196
 
210
197
 
211
- ### geordi remove-executable-flags
198
+ ### `geordi remove-executable-flags`
212
199
 
213
200
  Remove executable-flags from files that should not be executable.
214
201
 
215
202
 
216
- ### geordi rspec [FILES]
203
+ ### `geordi rspec [FILES]`
217
204
 
218
205
  Run RSpec.
219
206
 
@@ -223,7 +210,7 @@ Runs RSpec as you want: with RSpec 1/2 detection, `bundle exec`, rspec_spinner
223
210
  detection, etc.
224
211
 
225
212
 
226
- ### geordi security-update [STEP]
213
+ ### `geordi security-update [STEP]`
227
214
 
228
215
  Support for performing security updates.
229
216
 
@@ -235,7 +222,12 @@ Switches branches, pulls, pushes and deploys as required by our workflow. Tells
235
222
  what it will do before it does it.
236
223
 
237
224
 
238
- ### geordi setup
225
+ ### `geordi server [PORT]`
226
+
227
+ Start a development server.
228
+
229
+
230
+ ### `geordi setup`
239
231
 
240
232
  Setup a project for the first time.
241
233
 
@@ -257,7 +249,7 @@ After setting up, runs all tests when called with the `--test` option:
257
249
  See `geordi help setup` for details.
258
250
 
259
251
 
260
- ### geordi shell TARGET
252
+ ### `geordi shell TARGET`
261
253
 
262
254
  Open a shell on a Capistrano deploy target.
263
255
 
@@ -268,17 +260,17 @@ Lets you select the server to connect to when called with `--select-server`:
268
260
  geordi shell production -s
269
261
 
270
262
 
271
- ### geordi tests
263
+ ### `geordi tests`
272
264
 
273
265
  Run all employed tests.
274
266
 
275
267
 
276
- ### geordi unit
268
+ ### `geordi unit`
277
269
 
278
270
  Run Test::Unit.
279
271
 
280
272
 
281
- ### geordi update
273
+ ### `geordi update`
282
274
 
283
275
  Bring a project up to date.
284
276
 
@@ -298,12 +290,12 @@ After updating, runs all tests when called with the `--test` option:
298
290
  See `geordi help update` for details.
299
291
 
300
292
 
301
- ### geordi version
293
+ ### `geordi version`
302
294
 
303
295
  Print the current version of geordi.
304
296
 
305
297
 
306
- ### geordi vnc
298
+ ### `geordi vnc`
307
299
 
308
300
  Show the hidden VNC window.
309
301
 
@@ -355,7 +347,7 @@ calling your local geordi like so (adjust paths to your needs):
355
347
  ruby -I ../geordi/lib ../geordi/bin/geordi <command>
356
348
 
357
349
  Don't forget to update this README. The whole `geordi` section is auto-generated
358
- by `rake update_readme`.
350
+ by `rake readme`.
359
351
 
360
352
  Geordi is (partially) tested with Cucumber and Aruba. Run all tests with `rake`.
361
353
  Of course you're free to use `geordi tests` ;)
data/Rakefile CHANGED
@@ -8,12 +8,12 @@ task :features do
8
8
  system 'cucumber'
9
9
  end
10
10
 
11
- task :update_readme do
11
+ task :readme do
12
12
  require File.expand_path('../lib/geordi/cli', __FILE__)
13
13
 
14
14
  readme = File.read('README.md')
15
15
  geordi_section_regex = /
16
- geordi\n
16
+ `geordi`\n
17
17
  -{3,} # 3 dashes or more
18
18
  .*? # anything, non-greedy
19
19
  (?= # stop before:
@@ -22,22 +22,24 @@ task :update_readme do
22
22
  /xm
23
23
 
24
24
  geordi_section = <<-TEXT
25
- geordi
26
- ------
25
+ `geordi`
26
+ --------
27
27
 
28
- The base command line utility offering most of the commands.
28
+ The `geordi` binary holds most of the utility commands. For the few other
29
+ binaries, see the bottom of this file.
29
30
 
30
- You may abbreviate commands by typing only the first letter(s), e.g. `geordi
31
- dev` will boot a development server, `geordi s -t` will setup a project and run
32
- tests afterwards. Underscores and dashes are equivalent.
31
+ You may abbreviate commands by typing only their first letters, e.g. `geordi
32
+ con` will boot a development console, `geordi set -t` will setup a project and
33
+ run tests afterwards.
33
34
 
34
- For details on commands, e.g. supported options, run `geordi help <command>`.
35
+ For details on commands, e.g. supported options, you may always run
36
+ `geordi help <command>`.
35
37
 
36
38
  TEXT
37
39
 
38
40
  Geordi::CLI.all_commands.sort.each do |_, command|
39
41
  unless command.hidden?
40
- geordi_section << "### geordi #{ command.usage }\n\n"
42
+ geordi_section << "### `geordi #{ command.usage }`\n\n"
41
43
  geordi_section << "#{ command.description.sub /(\.)?$/, '.' }\n\n"
42
44
  geordi_section << "#{ command.long_description.strip }\n\n" if command.long_description
43
45
  geordi_section << "\n"
@@ -123,7 +123,26 @@ Feature: The cucumber command
123
123
  Then the output should contain "# Running features"
124
124
  And the output should match /^> .*cucumber .*--tags ~@solo/
125
125
  But the output should not contain "# Running @solo features"
126
- And the output should not match /^> .*cucumber .*--tags @solo/
126
+
127
+
128
+ Scenario: When called with line numbers, the @solo extra run is skipped
129
+
130
+ Note that with line numbers in the passed file names, features are run
131
+ serially.
132
+
133
+ Given a file named "features/example.feature" with:
134
+ """
135
+ Feature: Test without solo tag
136
+ Scenario: Example scenario
137
+ Scenario: Other scenario
138
+ """
139
+
140
+ When I run `geordi cucumber --verbose features/example.feature:2`
141
+ Then the output should contain "# Running features"
142
+ But the output should not contain "# Running @solo features"
143
+ # Regression test, with line numbers grep would fail with:
144
+ # grep: features/example.feature:2: No such file or directory
145
+ And the output should not contain "No such file or directory"
127
146
 
128
147
 
129
148
  Scenario: Specifying a firefox version to use
@@ -51,3 +51,8 @@ Feature: The firefox/chrome command
51
51
  Then the output should contain "> VNC is ready"
52
52
  And the output should contain "testcontent"
53
53
  But the output should not contain "Firefox for Selenium"
54
+
55
+
56
+ Scenario: Running --setup without a version prints an error
57
+ When I run `geordi firefox --setup`
58
+ Then the output should contain "Firefox version required"
@@ -0,0 +1,24 @@
1
+ Feature: The server/devserver command
2
+
3
+ Scenario: Booting a development server
4
+ When I run `geordi server`
5
+ Then the output should contain "http://aruba.vcap.me:3000"
6
+ And the output should contain "Util.system! bundle exec rails server -p 3000 -b 0.0.0.0"
7
+
8
+
9
+ Scenario: Passing a port as argument
10
+ When I run `geordi server 3001`
11
+ Then the output should contain "http://aruba.vcap.me:3001"
12
+ And the output should contain "Util.system! bundle exec rails server -p 3001 -b 0.0.0.0"
13
+
14
+
15
+ Scenario: Passing a port as option
16
+ When I run `geordi server -p 3001`
17
+ Then the output should contain "http://aruba.vcap.me:3001"
18
+ And the output should contain "Util.system! bundle exec rails server -p 3001 -b 0.0.0.0"
19
+
20
+
21
+ Scenario: The command is aliased for backwards compatibility
22
+ When I run `geordi devserver`
23
+ Then the output should contain "Util.system! bundle exec rails server -p 3000 -b 0.0.0.0"
24
+
@@ -49,15 +49,20 @@ def cucumber(*args)
49
49
  end
50
50
 
51
51
  # Serial run of @solo scenarios
52
- files << 'features' if files.empty? # Proper grepping
53
- solo_tag_usages = `grep -r '@solo' #{ files.join(' ') }`.split("\n")
54
- if solo_tag_usages.any?
55
- cmd_opts << '--tags' << '@solo'
52
+ if files.any? { |f| f.include? ':' }
53
+ note '@solo run skipped when called with line numbers' if options.verbose
54
+ else
55
+ files << 'features' if files.empty? # Proper grepping
56
+ solo_tag_usages = `grep -r '@solo' #{ files.join(' ') }`.split("\n")
56
57
 
57
- announce 'Running @solo features'
58
- Geordi::Cucumber.new.run files, cmd_opts, :verbose => options.verbose, :parallel => false
59
- end
58
+ if solo_tag_usages.any?
59
+ cmd_opts << '--tags' << '@solo'
60
+
61
+ announce 'Running @solo features'
62
+ Geordi::Cucumber.new.run files, cmd_opts, :verbose => options.verbose, :parallel => false
63
+ end
60
64
 
65
+ end
61
66
  else
62
67
  note 'Cucumber not employed.'
63
68
  end
@@ -1,6 +1,6 @@
1
1
  desc 'deploy [STAGE]', 'Guided deployment across branches'
2
2
  long_desc <<-LONGDESC
3
- Example: `geordi deploy production`
3
+ Example: `geordi deploy` or `geordi deploy p[roduction]`
4
4
 
5
5
  Merge, push and deploy with a single command! There are several scenarios where
6
6
  this command comes in handy:
@@ -8,7 +8,7 @@ this command comes in handy:
8
8
  1) *Production deploy:* From the master branch, run `geordi deploy production`.
9
9
  This will merge `master` to `production`, push and deploy to production.
10
10
 
11
- 2) *Feature branch deploy:* From the feature branch, run `geordi deploy staging`.
11
+ 2) *Feature branch deploy:* From a feature branch, run `geordi deploy staging`.
12
12
  This will merge the feature branch to `master`, push and deploy to staging.
13
13
 
14
14
  3) *Simple deploy:* If the source branch matches the target branch, merging will
@@ -17,8 +17,13 @@ this command comes in handy:
17
17
  Calling the command without arguments will infer the target stage from the
18
18
  current branch and fall back to master/staging.
19
19
 
20
- When your project does not have a `deploy:migrations` task, this command will
21
- run `cap deploy` instead when called with `-M`: `geordi deploy -M staging`.
20
+ Finds available Capistrano stages by their prefix, e.g. `geordi deploy p` will
21
+ deploy production, `geordi deploy mak` will deploy a `makandra` stage if there
22
+ is a file config/deploy/makandra.rb.
23
+
24
+ When your project is running Capistrano 3, deployment will use `cap deploy`
25
+ instead of `cap deploy:migrations`. You can force using `deploy` by passing the
26
+ -M option: `geordi deploy -M staging`.
22
27
  LONGDESC
23
28
 
24
29
  option :no_migrations, :aliases => '-M', :type => :boolean,
@@ -27,31 +32,40 @@ option :no_migrations, :aliases => '-M', :type => :boolean,
27
32
  def deploy(target_stage = nil)
28
33
  # Set/Infer default values
29
34
  branch_stage_map = { 'master' => 'staging', 'production' => 'production'}
35
+ if target_stage and not Util.deploy_targets.include? target_stage
36
+ # Target stage autocompletion from available stages
37
+ target_stage = Util.deploy_targets.find { |t| t.start_with? target_stage }
38
+ end
30
39
  proposed_stage = target_stage || branch_stage_map.fetch(Util.current_branch, 'staging')
31
40
 
32
- target_stage = prompt 'Deployment capistrano stage:', proposed_stage
41
+ # Ask for required information
42
+ target_stage = prompt 'Deployment stage:', proposed_stage
33
43
  source_branch = prompt 'Source branch:', Util.current_branch
34
44
  target_branch = prompt 'Deploy branch:', branch_stage_map.invert.fetch(target_stage, 'master')
35
45
 
36
46
  merge_needed = (source_branch != target_branch)
47
+ push_needed = merge_needed || `git cherry -v | wc -l`.strip.to_i > 0
37
48
 
38
49
  announce "Checking whether your #{source_branch} branch is ready"
39
50
  if `git status -s | wc -l`.strip != '0'
40
- fail "Your #{source_branch} branch holds uncommitted changes. Fix that first."
51
+ warn "Your #{source_branch} branch holds uncommitted changes."
52
+ prompt('Continue anyway?', 'n', /y|yes/) or fail 'Cancelled.'
41
53
  else
42
54
  note 'All good.'
43
55
  end
44
56
 
45
57
  if merge_needed
46
- announce "Checking what's in your #{target_branch} branch right now"
58
+ announce "Checking what's in your #{target_branch} branch right now" #######
47
59
  Util.system! "git checkout #{target_branch} && git pull"
48
60
  end
49
61
 
50
- announce "You are about to #{'merge & ' if merge_needed}push & deploy"
51
- note "From branch #{source_branch}"
52
- note "Merge into branch #{target_branch}" if merge_needed
62
+ announce 'You are about to:' #################################################
63
+ note "Merge branch #{source_branch} into #{target_branch}" if merge_needed
64
+ if push_needed
65
+ note 'Push these commits:' if push_needed
66
+ Util.system! "git --no-pager log origin/#{target_branch}..#{source_branch} --oneline"
67
+ end
53
68
  note "Deploy to #{target_stage}"
54
- Util.system! "git --no-pager log origin/#{target_branch}..#{source_branch} --oneline"
55
69
 
56
70
  if prompt('Go ahead with the deployment?', 'n', /y|yes/)
57
71
  cap3 = file_containing?('Capfile', 'capistrano/setup')
@@ -59,10 +73,14 @@ def deploy(target_stage = nil)
59
73
  capistrano_call << ':migrations' unless cap3 || options.no_migrations
60
74
  capistrano_call = "bundle exec #{capistrano_call}" if file_containing?('Gemfile', /capistrano/)
61
75
 
76
+ invoke_cmd 'bundle_install'
77
+
62
78
  puts
63
- command = "git push && #{capistrano_call}"
64
- command = "git merge #{source_branch} && " << command if merge_needed
65
- Util.system! command, :show_cmd => true
79
+ commands = []
80
+ commands << "git merge #{source_branch}" if merge_needed
81
+ commands << 'git push' if push_needed
82
+ commands << capistrano_call
83
+ Util.system! commands.join(' && '), :show_cmd => true
66
84
 
67
85
  success 'Deployment complete.'
68
86
  else
@@ -1,4 +1,4 @@
1
- desc 'dump [TARGET]', 'Handle dumps'
1
+ desc 'dump [TARGET]', 'Handle dumps (see `geordi help dump` for details)'
2
2
  long_desc <<-DESC
3
3
  When called without arguments, dumps the development database with `dumple`.
4
4
 
@@ -1,4 +1,4 @@
1
- desc 'eurest', 'Open the current Eurest cantina menu'
1
+ desc 'eurest', 'Open the current Eurest cantina menu', :hide => true
2
2
  def eurest
3
3
  Util.system! %{file="Speiseplan_KW`date +%V`.pdf" && wget -O/tmp/$file http://www.eurest-extranet.de/eurest/export/sites/default/sigma-technopark/de/downloads/$file && xdg-open /tmp/$file}
4
4
  end
@@ -1,4 +1,4 @@
1
- desc 'firefox COMMAND', 'Run a command with VNC set up (and the test firefox, if present)'
1
+ desc 'firefox COMMAND', 'Run a command with VNC and test browser set up (alias: chrome)'
2
2
  long_desc <<-LONGDESC
3
3
  Example: `geordi firefox b cucumber` or `geordi firefox --setup 24.0`
4
4
 
@@ -10,11 +10,13 @@ Useful when you need Firefox for Selenium or the VNC set up, but can't use the
10
10
  This command is aliased `chrome` for users running Selenium in Chrome.
11
11
  LONGDESC
12
12
 
13
- option :setup, :type => :string, :banner => 'setup=FIREFOX_VERSION',
14
- :desc => 'Install a special test-runner Firefox with the given version'
13
+ option :setup, :banner => 'FIREFOX_VERSION',
14
+ :desc => 'Install a special test runner Firefox with the given version'
15
15
 
16
16
  def firefox(*command)
17
17
  if options.setup
18
+ fail 'Firefox version required (e.g. --setup 24.0)' if options.setup == 'setup'
19
+
18
20
  require 'geordi/firefox_for_selenium'
19
21
  Geordi::FirefoxForSelenium.install(options.setup)
20
22
 
@@ -1,20 +1,10 @@
1
1
  desc 'png-optimize PATH', 'Optimize .png files'
2
2
  long_desc <<-LONGDESC
3
+ Example: `geordi png-optimize some/directory`
4
+
3
5
  - Removes color profiles: cHRM, sRGB, gAMA, ICC, etc.
4
6
  - Eliminates unused colors and reduces bit-depth (if possible)
5
7
  - May reduce PNG file size lossless
6
-
7
- Batch-optimize all `*.png` files in a directory:
8
-
9
- geordi png-optimize directory
10
-
11
- Batch-optimize the current directory:
12
-
13
- geordi png-optimize .
14
-
15
- Optimize a single file:
16
-
17
- geordi png-optimize input.png
18
8
  LONGDESC
19
9
 
20
10
  def png_optimize(path)
@@ -23,7 +13,7 @@ def png_optimize(path)
23
13
  announce 'Optimizing .png files'
24
14
 
25
15
  if `which pngcrush`.strip.empty?
26
- fail 'You have to install pngcrush first (sudo apt-get install pngcrush)'
16
+ fail 'Please install pngcrush first (sudo apt-get install pngcrush)'
27
17
  end
28
18
 
29
19
  po = PngOptimizer.new
@@ -1,4 +1,4 @@
1
- desc 'purge-kernels', 'Purge linux kernels older than the current one'
1
+ desc 'purge-kernels', '[sudo] Purge linux kernels older than the current one'
2
2
  long_desc <<-LONGDESC
3
3
  Example: `sudo geordi purge-kernels`
4
4
 
@@ -0,0 +1,19 @@
1
+ desc 'server [PORT]', 'Start a development server'
2
+
3
+ option :port, :aliases => '-p', :default => '3000',
4
+ :desc => 'Choose a port'
5
+
6
+ def server(port = nil)
7
+ invoke_cmd 'bundle_install'
8
+ require 'geordi/util'
9
+
10
+ announce 'Booting a development server'
11
+ port ||= options.port
12
+ note "URL: http://#{ File.basename(Dir.pwd) }.vcap.me:#{port}"
13
+ puts
14
+
15
+ # -b 0.0.0.0: Allow connections from other machines, e.g. a testing iPad
16
+ Util.system! Util.server_command, "-p #{ port }", '-b 0.0.0.0'
17
+ end
18
+
19
+ map 'devserver' => 'server'
@@ -1,9 +1,14 @@
1
1
  desc 'tests', 'Run all employed tests'
2
2
  def tests
3
- invoke_cmd 'with_rake'
4
- invoke_cmd 'unit'
5
- invoke_cmd 'rspec'
6
- invoke_cmd 'cucumber'
3
+ rake_result = invoke_cmd 'with_rake'
4
+
5
+ if rake_result == :did_not_perform
6
+ # Since `rake` usually runs all tests, only run them here if `rake` did not
7
+ # perform
8
+ invoke_cmd 'unit'
9
+ invoke_cmd 'rspec'
10
+ invoke_cmd 'cucumber'
11
+ end
7
12
 
8
13
  success 'Successfully ran tests.'
9
14
  end
@@ -1,11 +1,12 @@
1
1
  desc 'with-rake', 'Run tests with `rake`', :hide => true
2
2
  def with_rake
3
- if file_containing?('Rakefile', /^task.+default.+(spec|test)/)
3
+ if file_containing?('Rakefile', /^task.+default.+(spec|test|feature)/)
4
4
  invoke_cmd 'bundle_install'
5
5
 
6
6
  announce 'Running tests with `rake`'
7
7
  Util.system! 'rake'
8
8
  else
9
9
  note '`rake` does not run tests.'
10
+ :did_not_perform
10
11
  end
11
12
  end
@@ -132,10 +132,10 @@ module Geordi
132
132
 
133
133
  puts strip_heredoc(<<-INSTRUCTION)
134
134
  Please download an old version of Firefox from: #{download_url}
135
- Unpack it with: tar xvjf firefox-#{@version}.tar.bz2 -C #{path} --strip-components=1
135
+ Unpack it with: tar xjf firefox-#{@version}.tar.bz2 -C #{path} --strip-components=1
136
136
  Now #{path.join('firefox')} should be the firefox binary, not a directory.
137
137
  INSTRUCTION
138
- prompt "Press ENTER when you're done."
138
+ prompt 'Continue?'
139
139
 
140
140
  File.file?(binary) or raise "Could not find #{binary}"
141
141
  end
@@ -170,15 +170,15 @@ module Geordi
170
170
  This script will open the patched copy of Firefox when you press ENTER.
171
171
  Please perform the following steps manually:
172
172
 
173
+ - IMPORTANT: Quickly disable all automatic updates under Edit /
174
+ Preferences / Advanced / Update
173
175
  - Disable the default browser check when Firefox launches
174
176
  - Check that the version number is correct (#{@version})
175
177
  - You should not see your bookmarks, add-ons, plugins from your regular
176
178
  Firefox profile
177
- - Disable all automatic updates under Edit / Preferences / Advanced /
178
- Update (do this quickly or Firefox will already have updated)
179
179
  INSTRUCTION
180
180
 
181
- prompt 'Open the patched copy of Firefox with ENTER.'
181
+ prompt 'Will open the patched copy of Firefox now'
182
182
  run_firefox_for_selenium
183
183
  end
184
184
 
data/lib/geordi/util.rb CHANGED
@@ -94,6 +94,12 @@ module Geordi
94
94
  end
95
95
  end
96
96
 
97
+ def deploy_targets
98
+ Dir['config/deploy/*'].map do |f|
99
+ File.basename f, '.rb' # Filename without .rb extension
100
+ end
101
+ end
102
+
97
103
  end
98
104
  end
99
105
  end
@@ -1,3 +1,3 @@
1
1
  module Geordi
2
- VERSION = '1.4.3'
2
+ VERSION = '1.5.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geordi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Koch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-29 00:00:00.000000000 Z
11
+ date: 2016-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -80,6 +80,7 @@ files:
80
80
  - features/dump.feature
81
81
  - features/firefox.feature
82
82
  - features/launchy_browser.feature
83
+ - features/server.feature
83
84
  - features/shell.feature
84
85
  - features/support/env.rb
85
86
  - geordi.gemspec
@@ -98,7 +99,6 @@ files:
98
99
  - lib/geordi/commands/create_databases.rb
99
100
  - lib/geordi/commands/cucumber.rb
100
101
  - lib/geordi/commands/deploy.rb
101
- - lib/geordi/commands/devserver.rb
102
102
  - lib/geordi/commands/dump.rb
103
103
  - lib/geordi/commands/eurest.rb
104
104
  - lib/geordi/commands/firefox.rb
@@ -109,6 +109,7 @@ files:
109
109
  - lib/geordi/commands/remove_executable_flags.rb
110
110
  - lib/geordi/commands/rspec.rb
111
111
  - lib/geordi/commands/security_update.rb
112
+ - lib/geordi/commands/server.rb
112
113
  - lib/geordi/commands/setup.rb
113
114
  - lib/geordi/commands/shell.rb
114
115
  - lib/geordi/commands/tests.rb
@@ -1,14 +0,0 @@
1
- desc 'devserver', 'Start a development server'
2
-
3
- option :port, :aliases => '-p', :default => '3000'
4
-
5
- def devserver
6
- invoke_cmd 'bundle_install'
7
- require 'geordi/util'
8
-
9
- announce 'Booting a development server'
10
- note "URL: http://#{File.basename(Dir.pwd)}.vcap.me:#{options.port}"
11
- puts
12
-
13
- Util.system! Util.server_command + " -p #{options.port}"
14
- end