geordi 4.2.0 → 5.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c5a8befcc3bb1f14b4bd0803491b56ccb7db92daf47aa45eb73f359988ab768
4
- data.tar.gz: 244b132d249d3e0d0d851ad79bae5890736e52f202a7bb2bf0c80b3a6d821195
3
+ metadata.gz: 19c9b8957b10e4c230a209bf34c89109a3ab669a2f240e626c86c9d5e1350382
4
+ data.tar.gz: 05d90de73a7199c49ec904c3a5916755d36df91b15f7dd3cec5566d1a1ce3b78
5
5
  SHA512:
6
- metadata.gz: 3f57ac5bb0f1e804e2d53ab30e0b5c3742835eabfd5d58755dd4a06b55d5065bc0f3fa7b4d00bca9b4f72ae2329042339203ced4336830c534585e684241570c
7
- data.tar.gz: 52c77c467efc9ecf3fc8f26dc713b38d26e79977a55604921ffe62b1f2808562e9f770d0c11ba59045f595df54d07c3a91b8b926361ae00e0330625bc3418c75
6
+ metadata.gz: a6db435c46379b64cebc89a724f58c9d90052fce49aa051050f2f74f229ad54d5eeae1ef6ee1d8fe187d1a1dc882a340c707658768e3cdfd524c2d7310a42737
7
+ data.tar.gz: 8e1f5c65afba492ba83f2c47654207b7dfe648aeb752eea2f87e750667a51533098a84914429dd640ac98d529c078f45aaa7fdab2ca1967da99cefeb7cd123d4
@@ -0,0 +1,48 @@
1
+ name: Tests
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ pull_request:
7
+ branches:
8
+ - master
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-18.04
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ include:
16
+ - ruby: 2.2.10
17
+ gemfile: Gemfile
18
+ - ruby: 2.3.8
19
+ gemfile: Gemfile
20
+ - ruby: 2.4.10
21
+ gemfile: Gemfile
22
+ - ruby: 2.5.8
23
+ gemfile: Gemfile
24
+ - ruby: 2.6.6
25
+ gemfile: Gemfile
26
+ - ruby: 2.7.2
27
+ gemfile: Gemfile
28
+ env:
29
+ BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
30
+ steps:
31
+ - uses: actions/checkout@v2
32
+ - name: Install ruby
33
+ uses: ruby/setup-ruby@v1
34
+ with:
35
+ ruby-version: "${{ matrix.ruby }}"
36
+ - name: Install vncserver
37
+ run: |
38
+ sudo apt-get update
39
+ sudo apt-get install -y tightvncserver
40
+ # Fake required password for vncserver
41
+ mkdir ~/.vnc && touch ~/.vnc/passwd && chmod 700 ~/.vnc/passwd
42
+ - name: Bundle
43
+ run: |
44
+ gem install bundler:1.17.3
45
+ bundle install --no-deployment
46
+ - name: Run tests
47
+ run: bundle exec rake
48
+
@@ -1 +1 @@
1
- 2.5
1
+ 2.5.8
@@ -7,7 +7,33 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
7
7
  ## Unreleased
8
8
 
9
9
  ### Compatible changes
10
+
11
+ ### Breaking changes
12
+
13
+ ## 5.2.1 2020-12-15
14
+
15
+ ### Compatible changes
16
+
17
+ * Fix a bug regarding `geordi vnc` which was introduced in 5.1.0
18
+
19
+ ## 5.2.0 2020-12-14
20
+
21
+ ### Compatible changes
22
+
23
+ * Geordi update will exit with a warning when Ruby version changes during pull.
24
+ * Add `geordi docker` command with support for opening a shell for dockerized dev environments.
25
+
26
+
27
+ ## 5.1.0 2020-12-04
28
+
29
+ ### Compatible changes
30
+ * Switch to tightvncserver to be compatible with Ubuntu 20.04. vnc4server is still supported.
31
+
32
+
33
+ ## 5.0.0 2020-11-25
34
+
10
35
  ### Breaking changes
36
+ * Remove support for Ruby 2.0 and 2.1
11
37
 
12
38
 
13
39
  ## 4.2.0 2020-10-02
@@ -120,6 +146,9 @@ Don't know how to build task 'db:migrate parallel:prepare'
120
146
  ### Breaking changes
121
147
  - Remove support for Ruby 1.8.7 and Ruby 1.9.3. Bug fixes might still be backported to 2.x, but we will not add any features to 2.x anymore. Please consider to upgrade the Ruby version of your project.
122
148
 
149
+ ## 2.12.3
150
+
151
+ * Add `geordi docker` command with support for opening a shell for dockerized dev environments.
123
152
 
124
153
  ## 2.11.0 2020-05-04
125
154
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- geordi (4.1.1)
4
+ geordi (5.2.1)
5
5
  thor (~> 1)
6
6
 
7
7
  GEM
@@ -28,21 +28,21 @@ GEM
28
28
  coercible (1.0.0)
29
29
  descendants_tracker (~> 0.0.1)
30
30
  contracts (0.16.0)
31
- cucumber (3.0.0)
31
+ cucumber (3.2.0)
32
32
  builder (>= 2.1.2)
33
- cucumber-core (~> 3.0.0)
34
- cucumber-expressions (~> 4.0.3)
33
+ cucumber-core (~> 3.2.0)
34
+ cucumber-expressions (~> 6.0.1)
35
35
  cucumber-wire (~> 0.0.1)
36
36
  diff-lcs (~> 1.3)
37
- gherkin (~> 4.0)
37
+ gherkin (~> 5.1.0)
38
38
  multi_json (>= 1.7.5, < 2.0)
39
39
  multi_test (>= 0.1.2)
40
- cucumber-core (3.0.0)
40
+ cucumber-core (3.2.1)
41
41
  backports (>= 3.8.0)
42
- cucumber-tag_expressions (>= 1.0.1)
43
- gherkin (>= 4.1.3)
44
- cucumber-expressions (4.0.4)
45
- cucumber-tag_expressions (2.0.2)
42
+ cucumber-tag_expressions (~> 1.1.0)
43
+ gherkin (~> 5.0)
44
+ cucumber-expressions (6.0.1)
45
+ cucumber-tag_expressions (1.1.1)
46
46
  cucumber-wire (0.0.1)
47
47
  declarative (0.0.10)
48
48
  declarative-option (0.1.0)
@@ -50,13 +50,13 @@ GEM
50
50
  thread_safe (~> 0.3, >= 0.3.1)
51
51
  diff-lcs (1.4.4)
52
52
  equalizer (0.0.11)
53
- excon (0.76.0)
53
+ excon (0.78.0)
54
54
  faraday (0.17.3)
55
55
  multipart-post (>= 1.2, < 3)
56
56
  faraday_middleware (0.14.0)
57
57
  faraday (>= 0.7.4, < 1.0)
58
58
  ffi (1.12.2)
59
- gherkin (4.1.3)
59
+ gherkin (5.1.0)
60
60
  highline (2.0.3)
61
61
  ice_nine (0.11.2)
62
62
  launchy (2.4.3)
@@ -66,25 +66,25 @@ GEM
66
66
  multi_json (1.15.0)
67
67
  multi_test (0.1.2)
68
68
  multipart-post (2.1.1)
69
- parallel (1.13.0)
70
- parallel_tests (2.23.0)
69
+ parallel (1.19.2)
70
+ parallel_tests (2.32.0)
71
71
  parallel
72
72
  pry (0.13.1)
73
73
  coderay (~> 1.1)
74
74
  method_source (~> 1.0)
75
- public_suffix (2.0.5)
75
+ public_suffix (3.1.1)
76
76
  rake (12.3.3)
77
77
  representable (3.0.4)
78
78
  declarative (< 0.1.0)
79
79
  declarative-option (< 0.2.0)
80
80
  uber (< 0.2.0)
81
- rspec-expectations (3.9.2)
81
+ rspec-expectations (3.10.0)
82
82
  diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.9.0)
84
- rspec-mocks (3.9.1)
83
+ rspec-support (~> 3.10.0)
84
+ rspec-mocks (3.10.0)
85
85
  diff-lcs (>= 1.2.0, < 2.0)
86
- rspec-support (~> 3.9.0)
87
- rspec-support (3.9.3)
86
+ rspec-support (~> 3.10.0)
87
+ rspec-support (3.10.0)
88
88
  thor (1.0.1)
89
89
  thread_safe (0.3.6)
90
90
  tracker_api (1.11.0)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Geordi [![Build Status](https://travis-ci.org/makandra/geordi.svg?branch=master)](https://travis-ci.org/makandra/geordi)
1
+ Geordi [![Tests](https://github.com/makandra/geordi/workflows/Tests/badge.svg)](https://github.com/makandra/geordi/actions)
2
2
  ======
3
3
 
4
4
  Geordi is a collection of command line tools we use in our daily work with
@@ -157,6 +157,24 @@ instead of `cap deploy:migrations`. You can force using `deploy` by passing the
157
157
  - `-c, [--current-branch], [--no-current-branch]`: Set DEPLOY_BRANCH to the current branch during deploy
158
158
 
159
159
 
160
+ ### `geordi docker`
161
+ Manage docker containers for the current project.
162
+
163
+ Manage docker containers to run your project dockerized.
164
+
165
+ It expects a `docker-compose.yml` file that specifies all services, and a service
166
+ named "main" that opens a shell for the project.
167
+
168
+ There are three subcommands:
169
+
170
+ - `geordi docker setup`
171
+ Fetches all docker containers.
172
+ - `geordi docker shell`
173
+ Runs the docker service named 'main'.
174
+ - `geordi docker vnc`
175
+ Opens a VNC viewer to connect to the VNC server in the container.
176
+
177
+
160
178
  ### `geordi drop-databases`
161
179
  Interactively delete local databases.
162
180
 
@@ -176,18 +194,10 @@ offer to edit the whitelist instead.
176
194
  - `[--postgres=PORT_OR_SOCKET]`: Use Postgres port or socket
177
195
  - `[--mysql=PORT_OR_SOCKET]`: Use MySQL/MariaDB port or socket
178
196
 
197
+
179
198
  ### `geordi dump [TARGET]`
180
199
  Handle (remote) database dumps.
181
200
 
182
- If you are using multiple databases per environment, pass the database name like this:
183
-
184
- geordi dump -d primary
185
-
186
- Loading a dump into one of multiple local databases is not supported yet.
187
-
188
- When called with the `--load` option, sources the specified dump into the
189
- development database.
190
-
191
201
  `geordi dump` (without arguments) dumps the development database with `dumple`.
192
202
 
193
203
  `geordi dump -l tmp/staging.dump` (with the `--load` option) sources the
@@ -199,8 +209,15 @@ specified target's database and downloads it to `tmp/`.
199
209
  `geordi dump staging -l` (with a Capistrano deploy target and the `--load`
200
210
  option) sources the dump into the development database after downloading it.
201
211
 
212
+ If you are using multiple databases per environment, pass the database name like this:
213
+
214
+ geordi dump -d primary
215
+
216
+ Loading a dump into one of multiple local databases is not supported yet.
217
+
202
218
  **Options**
203
219
  - `-l, [--load=[DUMP_FILE]]`: Load a dump
220
+ - `-d, [--database=NAME]`: Database name, if there are multiple databases
204
221
 
205
222
 
206
223
  ### `geordi firefox COMMAND`
@@ -384,7 +401,9 @@ Stores a timestamped database dump for the given Rails environment in `~/dumps`:
384
401
 
385
402
  dumple development
386
403
 
387
- See http://makandracards.com/makandra/1008-dump-your-database-with-dumple
404
+ **Options**
405
+ - `-i`: Print disk usage of `~/dumps`
406
+ - `--compress`: After dumping, run gzip to compress the dump in place
388
407
 
389
408
 
390
409
  launchy_browser
data/exe/geordi CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
4
+
3
5
  require 'geordi/util'
4
6
 
5
7
  Geordi::Util.installing_missing_gems do
@@ -5,7 +5,7 @@ require 'geordi/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'geordi'
7
7
  spec.version = Geordi::VERSION
8
- spec.required_ruby_version = '>= 2.0.0'
8
+ spec.required_ruby_version = '>= 2.2.0'
9
9
  spec.authors = ['Henning Koch']
10
10
  spec.email = ['henning.koch@makandra.de']
11
11
 
@@ -25,8 +25,6 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_runtime_dependency 'thor', '~> 1'
27
27
 
28
- spec.post_install_message = <<-ATTENTION
29
- * Binary `geordi` installed
30
- * Geordi 4 has removed its deprecated executables. If you want to invoke these commands like before, you may create aliases on your machine. For the alias mapping, please refer to https://github.com/makandra/geordi/commit/68fa92acb146ebde3acb92d7b9556bd4eaa2b4ff
31
- ATTENTION
28
+ #spec.post_install_message = <<-ATTENTION
29
+ #ATTENTION
32
30
  end
@@ -23,26 +23,24 @@ def _setup_vnc
23
23
  Interaction.success 'It appears you already have a VNC server installed. Good job!'
24
24
  else
25
25
  puts 'Please run:'
26
- Interaction.note_cmd 'sudo apt-get install vnc4server'
26
+ Interaction.note_cmd 'sudo apt-get install tightvncserver'
27
+ puts 'In case this package is not available, you may try vnc4server instead.'
27
28
  Interaction.prompt 'Continue ...'
28
29
 
29
30
  puts
31
+
30
32
  Interaction.note 'We will now set a password for your VNC server.'
31
33
  puts Util.strip_heredoc <<-TEXT
32
- When running our cucumber script, you will not actually need this
33
- password, and there is no security risk. However, if you start a vncserver
34
- without our cucumber script, a user with your password can connect to
35
- your machine.
34
+ When running our cucumber script, this password will be used while also
35
+ restricting access to the local machine. However, if you start a vncserver
36
+ without our cucumber script, keep in mind that a user with this password
37
+ can connect to your machine.
36
38
 
37
39
  TEXT
38
40
  puts 'Please run:'
39
- Interaction.note_cmd 'vncserver :20'
41
+ Interaction.note_cmd 'vncpasswd'
40
42
  Interaction.warn 'Enter a secure password!'
41
43
  Interaction.prompt 'Continue ...'
42
-
43
- puts 'Now stop the server again. Please run:'
44
- Interaction.note_cmd 'vncserver -kill :20'
45
- Interaction.prompt 'Continue ...'
46
44
  end
47
45
 
48
46
  Interaction.announce 'Setup VNC viewer'
@@ -9,10 +9,6 @@ stored in `~/.config/geordi/global.yml`.
9
9
  LONGDESC
10
10
 
11
11
  def commit(*git_args)
12
- raise <<-TEXT if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1')
13
- Unsupported Ruby Version #{RUBY_VERSION}. `geordi commit` requires Ruby 2.1+.
14
- TEXT
15
-
16
12
  require 'geordi/gitpt'
17
13
  Gitpt.new.run(git_args)
18
14
  end
@@ -7,7 +7,7 @@ def create_database_yml
7
7
  Interaction.announce 'Creating ' + real_yml
8
8
 
9
9
  sample = File.read(sample_yml)
10
- adapter = sample.match(/adapter: (\w+)\n/).captures.first
10
+ adapter = sample.match(/adapter: (\w+)/).captures.first
11
11
 
12
12
  print "Please enter your #{adapter} password: "
13
13
  db_password = STDIN.gets.strip
@@ -0,0 +1,44 @@
1
+ class DockerCLI < Thor
2
+ desc 'setup', 'Setup docker and fetch required docker-container for the current project.'
3
+ def setup
4
+ docker.setup
5
+ end
6
+
7
+ desc 'shell', 'Open a shell in the main docker container for the current project.'
8
+ option :secondary, default: false, type: :boolean
9
+ map 'shell' => '_shell'
10
+ def _shell
11
+ docker.shell(:secondary => options[:secondary])
12
+ end
13
+
14
+ desc 'vnc', 'Open a vnc viewer connecting to the docker container.'
15
+ def vnc
16
+ docker.vnc
17
+ end
18
+
19
+ private
20
+
21
+ def docker
22
+ require 'geordi/docker'
23
+ Geordi::Docker.new
24
+ end
25
+ end
26
+
27
+ desc 'docker', 'Manage docker containers for the current project.'
28
+ long_desc <<-LONGDESC
29
+ Manage docker containers to run your project dockerized.
30
+
31
+ It expects a `docker-compose.yml` file that specifies all services, and a service
32
+ named "main" that opens a shell for the project.
33
+
34
+ There are three subcommands:
35
+
36
+ - `geordi docker setup`
37
+ Fetches all docker containers.
38
+ - `geordi docker shell`
39
+ Runs the docker service named 'main'.
40
+ - `geordi docker vnc`
41
+ Opens a VNC viewer to connect to the VNC server in the container.
42
+
43
+ LONGDESC
44
+ subcommand 'docker', DockerCLI
@@ -10,13 +10,24 @@ option :dump, type: :string, aliases: '-d', banner: 'TARGET',
10
10
  option :test, type: :boolean, aliases: '-t', desc: 'After updating, run tests'
11
11
 
12
12
  def update
13
+ old_ruby_version = File.read('.ruby-version').chomp
14
+
13
15
  Interaction.announce 'Updating repository'
14
16
  Util.run!('git pull', show_cmd: true)
15
17
 
16
- invoke_geordi 'migrate'
18
+ ruby_version = File.read('.ruby-version').chomp
19
+ ruby_version_changed = !ruby_version.empty? && (ruby_version != old_ruby_version)
20
+
21
+ if ruby_version_changed
22
+ puts
23
+ Interaction.warn 'Ruby version changed during git pull. Please run again to use the new version.'
24
+ exit(1)
25
+ else
26
+ invoke_geordi 'migrate'
17
27
 
18
- Interaction.success 'Successfully updated the project.'
28
+ Interaction.success 'Successfully updated the project.'
19
29
 
20
- invoke_geordi 'dump', options.dump, load: true if options.dump
21
- invoke_geordi 'tests' if options.test
30
+ invoke_geordi 'dump', options.dump, load: true if options.dump
31
+ invoke_geordi 'tests' if options.test
32
+ end
22
33
  end
@@ -11,8 +11,10 @@ module Geordi
11
11
  class Cucumber
12
12
 
13
13
  VNC_DISPLAY = ':17'.freeze
14
- VNC_SERVER_COMMAND = "vncserver #{VNC_DISPLAY} -localhost -nolisten tcp -SecurityTypes None -geometry 1280x1024".freeze
15
- VNC_VIEWER_COMMAND = "vncviewer #{VNC_DISPLAY}".freeze
14
+ VNC_PASSWORD_FILE = File.expand_path('~/.vnc/passwd').freeze # default for "vncpasswd"
15
+ VNC_SERVER_DEFAULT_OPTIONS = "-localhost -nolisten tcp -geometry 1280x1024 -rfbauth #{VNC_PASSWORD_FILE}".freeze
16
+ VNC_SERVER_COMMAND = "vncserver #{VNC_DISPLAY} #{ENV.fetch('GEORDI_VNC_OPTIONS', VNC_SERVER_DEFAULT_OPTIONS)}".freeze
17
+ VNC_VIEWER_COMMAND = "vncviewer -passwd #{VNC_PASSWORD_FILE}".freeze
16
18
  VNC_ENV_VARIABLES = %w[DISPLAY BROWSER LAUNCHY_BROWSER].freeze
17
19
 
18
20
  def run(files, cucumber_options, options = {})
@@ -30,10 +32,10 @@ module Geordi
30
32
  system command # Util.run! would reset the Firefox PATH
31
33
  end
32
34
 
33
- def launch_vnc_viewer
35
+ def launch_vnc_viewer(source = VNC_DISPLAY)
34
36
  fork do
35
37
  error = capture_stderr do
36
- system(VNC_VIEWER_COMMAND)
38
+ system("#{VNC_VIEWER_COMMAND} #{source}")
37
39
  end
38
40
  unless $?.success?
39
41
  if $?.exitstatus == 127
@@ -0,0 +1,116 @@
1
+ require 'geordi/interaction'
2
+ require 'geordi/cucumber'
3
+ require 'yaml'
4
+
5
+ module Geordi
6
+ class Docker
7
+ DOCKER_COMPOSE_FILE = 'docker-compose.yml'.freeze
8
+
9
+ include Interaction
10
+
11
+ def setup
12
+ check_installation_and_config
13
+ announce('Fetching containers...')
14
+ if execute(:system, 'docker-compose', 'pull')
15
+ success('Fetch successful.')
16
+ else
17
+ fail('Fetch failed.')
18
+ end
19
+ end
20
+
21
+ def shell(options = {})
22
+ check_installation_and_config
23
+ if options[:secondary]
24
+ attach_to_running_shell
25
+ else
26
+ run_shell
27
+ end
28
+ end
29
+
30
+ def vnc
31
+ Cucumber.new.launch_vnc_viewer('::5967')
32
+ end
33
+
34
+ private
35
+
36
+ def attach_to_running_shell
37
+ running_containers = execute(:`, 'docker-compose ps').split("\n")
38
+ if (main_container_line = running_containers.grep(/_main_run/).first)
39
+ container_name = main_container_line.split(' ').first
40
+ execute(:exec, 'docker', 'exec', '-it', container_name, 'bash')
41
+ else
42
+ fail('Could not find a running shell. Start without --secondary first.')
43
+ end
44
+ end
45
+
46
+ def run_shell
47
+ command = [:system, 'docker-compose', 'run', '--service-ports']
48
+ command += ssh_agent_forward
49
+ command += ['main']
50
+ execute(*command)
51
+ execute(:system, 'docker-compose', 'stop')
52
+ end
53
+
54
+ def execute(kind, *args)
55
+ if ENV['GEORDI_TESTING']
56
+ puts "Stubbed run #{args.join(' ')}"
57
+ if kind == :`
58
+ mock_parse(*args)
59
+ else
60
+ mock_run(*args)
61
+ end
62
+ else
63
+ send(kind, *args)
64
+ end
65
+ end
66
+
67
+ def mock_run(*args)
68
+ # exists just to be stubbed in tests
69
+ true
70
+ end
71
+
72
+ def mock_parse(*args)
73
+ # exists just to be stubbed in tests
74
+ 'command output'
75
+ end
76
+
77
+ def check_installation_and_config
78
+ unless command_exists?('docker')
79
+ fail('You need to install docker first with `sudo apt install docker`. After installation please log out and back in to your system once.')
80
+ end
81
+
82
+ unless command_exists?('docker-compose')
83
+ fail('You need to install docker-compose first with `sudo apt install docker-compose`.')
84
+ end
85
+
86
+ unless docker_compose_config && (services = docker_compose_config['services']) && services.key?('main')
87
+ fail('Your project does not seem to be properly set up. Expected to find a docker-compose.yml which defines a service named "main".')
88
+ end
89
+ end
90
+
91
+ def command_exists?(command)
92
+ execute(:system, "which #{command} > /dev/null")
93
+ end
94
+
95
+ def docker_compose_config
96
+ @docker_compose_config ||= if File.exists?(DOCKER_COMPOSE_FILE)
97
+ if YAML.respond_to?(:safe_load)
98
+ YAML.safe_load(File.read(DOCKER_COMPOSE_FILE))
99
+ else
100
+ YAML.load(File.read(DOCKER_COMPOSE_FILE))
101
+ end
102
+ end
103
+ rescue
104
+ false
105
+ end
106
+
107
+ def ssh_agent_forward
108
+ if (auth_sock = ENV['SSH_AUTH_SOCK'])
109
+ dirname = File.dirname(auth_sock)
110
+ ['-v', "#{dirname}:#{dirname}", '-e', "SSH_AUTH_SOCK=#{auth_sock}"]
111
+ else
112
+ []
113
+ end
114
+ end
115
+ end
116
+ end
@@ -43,13 +43,14 @@ module Geordi
43
43
  if command.is_a?(Array)
44
44
  real_command, *arguments = *command
45
45
  command = [real_command.split(' '), arguments].flatten
46
- printable_command = command.join(', ')
46
+ show_command = command
47
47
  else
48
- printable_command = command
48
+ show_command = [command]
49
49
  end
50
50
 
51
51
  if show_cmd
52
- Interaction.note_cmd printable_command
52
+ # Join with spaces for better readability and copy-pasting
53
+ Interaction.note_cmd show_command.join(' ')
53
54
  end
54
55
 
55
56
  if confirm
@@ -57,12 +58,13 @@ module Geordi
57
58
  end
58
59
 
59
60
  if testing?
60
- puts "Util.run! #{printable_command}"
61
+ # Join with commas for precise argument distinction
62
+ puts "Util.run! #{show_command.join(', ')}"
61
63
  else
62
64
  # Remove Geordi's Bundler environment when running commands.
63
65
  success = if !defined?(Bundler)
64
66
  system(*command)
65
- elsif Gem::Version.new(Bundler::VERSION) >= Gem::Version.new('2.1.2')
67
+ elsif Gem::Version.new(Bundler::VERSION) >= Gem::Version.new('1.17.3')
66
68
  Bundler.with_original_env do
67
69
  system(*command)
68
70
  end
@@ -1,3 +1,3 @@
1
1
  module Geordi
2
- VERSION = '4.2.0'.freeze
2
+ VERSION = '5.2.1'.freeze
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: 4.2.0
4
+ version: 5.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Koch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-02 00:00:00.000000000 Z
11
+ date: 2020-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -36,9 +36,9 @@ executables:
36
36
  extensions: []
37
37
  extra_rdoc_files: []
38
38
  files:
39
+ - ".github/workflows/test.yml"
39
40
  - ".gitignore"
40
41
  - ".ruby-version"
41
- - ".travis.yml"
42
42
  - CHANGELOG.md
43
43
  - Gemfile
44
44
  - Gemfile.lock
@@ -68,6 +68,7 @@ files:
68
68
  - lib/geordi/commands/cucumber.rb
69
69
  - lib/geordi/commands/delete_dumps.rb
70
70
  - lib/geordi/commands/deploy.rb
71
+ - lib/geordi/commands/docker.rb
71
72
  - lib/geordi/commands/drop_databases.rb
72
73
  - lib/geordi/commands/dump.rb
73
74
  - lib/geordi/commands/firefox.rb
@@ -89,6 +90,7 @@ files:
89
90
  - lib/geordi/commands/yarn_install.rb
90
91
  - lib/geordi/cucumber.rb
91
92
  - lib/geordi/db_cleaner.rb
93
+ - lib/geordi/docker.rb
92
94
  - lib/geordi/dump_loader.rb
93
95
  - lib/geordi/firefox_for_selenium.rb
94
96
  - lib/geordi/gitpt.rb
@@ -101,9 +103,7 @@ homepage: https://makandra.com
101
103
  licenses:
102
104
  - MIT
103
105
  metadata: {}
104
- post_install_message: |
105
- * Binary `geordi` installed
106
- * Geordi 4 has removed its deprecated executables. If you want to invoke these commands like before, you may create aliases on your machine. For the alias mapping, please refer to https://github.com/makandra/geordi/commit/68fa92acb146ebde3acb92d7b9556bd4eaa2b4ff
106
+ post_install_message:
107
107
  rdoc_options: []
108
108
  require_paths:
109
109
  - lib
@@ -111,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
- version: 2.0.0
114
+ version: 2.2.0
115
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
@@ -1,28 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - '2.0.0'
5
- - '2.1.10'
6
- - '2.2.10'
7
- - '2.3.8'
8
- - '2.4.10'
9
- - '2.5.8'
10
- - '2.6.6'
11
- - '2.7.1'
12
-
13
- gemfile:
14
- - 'Gemfile'
15
-
16
- dist: trusty
17
-
18
- before_install:
19
- - sudo apt-get install -y vnc4server
20
- # Fake required password for vncserver
21
- - mkdir ~/.vnc && touch ~/.vnc/passwd && chmod 700 ~/.vnc/passwd
22
- install:
23
- - gem install bundler:1.17.3
24
- # Replace default Travis CI bundler script with a version that doesn't
25
- # explode when lockfile doesn't match recently bumped version
26
- - bundle install --no-deployment --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle}
27
-
28
- script: bundle exec rake