geordi 5.1.0 → 5.2.4

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: 7807d5539f7a89704caedcb84cbbe86fdf249f0d118419a208bc6de5a56d163d
4
- data.tar.gz: 3e3ab52311d9148bb515d373e1404bf84a112111ab49935fb30e3694b04d2365
3
+ metadata.gz: 559fa220792042ae1d84411772b63a5f4526df68f5ac4eefbb008ac63705d72d
4
+ data.tar.gz: e43a552812daed79454864bed854720537ee2e9d8d303212b5dde4d8ef0b1694
5
5
  SHA512:
6
- metadata.gz: '09e3ced6e1773f894560ec79ac6625ebc61af0e6eb0592785a5e273c6fb3df514691803072719854534d311cc6e8c8b1d62e9f4d184b31ca6b9e7bd74f5ad102'
7
- data.tar.gz: 8d74f8a681f19d9f8d5d08ee95a4d4e2a30074d97021692f0734a40a14821ed6a204b435ffa615de57b5925994a65f00294f8492eafbe59baddc81daa5bfb034
6
+ metadata.gz: '0193eed8c9af5cadd36498a4b0eb5b6364a58e20e93ef3619af3dc934b16f61652b9b703e00049109592e6b324c7854d3d56cfe5aa14ca8948e5d6ed1320a548'
7
+ data.tar.gz: d7afc3e6ac2b5c3255fedd1f6e2a3f8fa1469c822c64f1ed1471a46ab0208c1f1f6084ee17b0edee79f07d0bce1d64d7768dcfaddffed61dfdd6664863851a49
@@ -1 +1 @@
1
- 2.5.8
1
+ 2.2
@@ -7,11 +7,46 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
7
7
  ## Unreleased
8
8
 
9
9
  ### Compatible changes
10
- * Switch to tightvncserver to be compatible with Ubuntu 20.04. vnc4server is still supported.
11
-
12
10
  ### Breaking changes
13
11
 
14
12
 
13
+ ## 5.2.4 2021-01-29
14
+
15
+ ### Compatible changes
16
+ * Fix and improve delete-dumps command (now supporting multiple arguments)
17
+
18
+
19
+ ## 5.2.3 2021-01-27
20
+
21
+ ### Compatible changes
22
+ * Remove auto-bundling from `geordi shell` and remote `geordi console`
23
+
24
+
25
+ ## 5.2.2 2020-12-17
26
+
27
+ ### Compatible changes
28
+ * Ignore ACL settings when loading a PostgreSQL dump
29
+
30
+
31
+ ## 5.2.1 2020-12-15
32
+
33
+ ### Compatible changes
34
+ * Fix a bug regarding `geordi vnc` which was introduced in 5.1.0
35
+
36
+
37
+ ## 5.2.0 2020-12-14
38
+
39
+ ### Compatible changes
40
+ * Geordi update will exit with a warning when Ruby version changes during pull.
41
+ * Add `geordi docker` command with support for opening a shell for dockerized dev environments.
42
+
43
+
44
+ ## 5.1.0 2020-12-04
45
+
46
+ ### Compatible changes
47
+ * Switch to tightvncserver to be compatible with Ubuntu 20.04. vnc4server is still supported.
48
+
49
+
15
50
  ## 5.0.0 2020-11-25
16
51
 
17
52
  ### Breaking changes
@@ -128,6 +163,9 @@ Don't know how to build task 'db:migrate parallel:prepare'
128
163
  ### Breaking changes
129
164
  - 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.
130
165
 
166
+ ## 2.12.3
167
+
168
+ * Add `geordi docker` command with support for opening a shell for dockerized dev environments.
131
169
 
132
170
  ## 2.11.0 2020-05-04
133
171
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- geordi (5.0.0)
4
+ geordi (5.2.4)
5
5
  thor (~> 1)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -111,13 +111,13 @@ in `.geordi.yml` in the project root.
111
111
  ### `geordi delete-dumps [DIRECTORY]`
112
112
  Delete database dump files (*.dump).
113
113
 
114
- Example: `geordi delete_dumps` or `geordi delete_dumps ~/tmp/dumps`
114
+ Example: `geordi delete-dumps` or `geordi delete-dumps ~/tmp/dumps`
115
115
 
116
- Recursively search for files ending in `*.dump` and offer to delete those. When
116
+ Recursively searches for files ending in `.dump` and offers to delete them. When
117
117
  no argument is given, two default directories are searched for dump files: the
118
118
  current working directory and `~/dumps` (for dumps created with geordi).
119
119
 
120
- Geordi will ask for confirmation before actually deleting files.
120
+ Will ask for confirmation before actually deleting files.
121
121
 
122
122
 
123
123
  ### `geordi deploy [STAGE]`
@@ -157,6 +157,27 @@ 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
+
173
+ - `geordi docker shell`
174
+ Runs the docker service named 'main'.
175
+ Append `--secondary` to open a second shell in an already running container.
176
+
177
+ - `geordi docker vnc`
178
+ Opens a VNC viewer to connect to the VNC server in the container.
179
+
180
+
160
181
  ### `geordi drop-databases`
161
182
  Interactively delete local databases.
162
183
 
@@ -176,18 +197,10 @@ offer to edit the whitelist instead.
176
197
  - `[--postgres=PORT_OR_SOCKET]`: Use Postgres port or socket
177
198
  - `[--mysql=PORT_OR_SOCKET]`: Use MySQL/MariaDB port or socket
178
199
 
200
+
179
201
  ### `geordi dump [TARGET]`
180
202
  Handle (remote) database dumps.
181
203
 
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
204
  `geordi dump` (without arguments) dumps the development database with `dumple`.
192
205
 
193
206
  `geordi dump -l tmp/staging.dump` (with the `--load` option) sources the
@@ -199,8 +212,15 @@ specified target's database and downloads it to `tmp/`.
199
212
  `geordi dump staging -l` (with a Capistrano deploy target and the `--load`
200
213
  option) sources the dump into the development database after downloading it.
201
214
 
215
+ If you are using multiple databases per environment, pass the database name like this:
216
+
217
+ geordi dump -d primary
218
+
219
+ Loading a dump into one of multiple local databases is not supported yet.
220
+
202
221
  **Options**
203
222
  - `-l, [--load=[DUMP_FILE]]`: Load a dump
223
+ - `-d, [--database=NAME]`: Database name, if there are multiple databases
204
224
 
205
225
 
206
226
  ### `geordi firefox COMMAND`
@@ -406,11 +426,9 @@ Once you have completed your modifications, please update CHANGELOG and README
406
426
  as needed. Use `rake readme` to regenerate the Geordi section of the README from
407
427
  the command documentations.
408
428
 
409
- Make sure tests are green in the default Ruby *plus* in the oldest Ruby > 1.8
410
- that you have installed on your system (1.8.7 support has been dropped).
411
-
412
- Before releasing your changes, wait for the Travis results to see that tests
413
- passed in all Ruby versions.
429
+ Make sure tests are green in the oldest supported Ruby version. Before releasing
430
+ a new gem version, wait for the CI results to see that tests are green in all
431
+ Ruby versions.
414
432
 
415
433
 
416
434
  Adding a new command
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
@@ -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
@@ -14,9 +14,9 @@ option :select_server, type: :string, aliases: '-s', banner: '[SERVER_NUMBER]',
14
14
 
15
15
  def console(target = 'development', *_args)
16
16
  require 'geordi/remote'
17
- invoke_geordi 'bundle_install'
18
17
 
19
18
  if target == 'development'
19
+ invoke_geordi 'bundle_install'
20
20
  invoke_geordi 'yarn_install'
21
21
 
22
22
  Interaction.announce 'Opening a local Rails console'
@@ -1,43 +1,41 @@
1
1
  desc 'delete-dumps [DIRECTORY]', 'Delete database dump files (*.dump)'
2
2
  long_desc <<-LONGDESC
3
- Example: `geordi delete_dumps` or `geordi delete_dumps ~/tmp/dumps`
3
+ Example: `geordi delete-dumps` or `geordi delete-dumps ~/tmp/dumps`
4
4
 
5
- Recursively search for files ending in `*.dump` and offer to delete those. When
5
+ Recursively searches for files ending in `.dump` and offers to delete them. When
6
6
  no argument is given, two default directories are searched for dump files: the
7
7
  current working directory and `~/dumps` (for dumps created with geordi).
8
8
 
9
- Geordi will ask for confirmation before actually deleting files.
9
+ Will ask for confirmation before actually deleting files.
10
10
  LONGDESC
11
11
 
12
- def delete_dumps(dump_directory = nil)
13
- deletable_dumps = []
14
- dump_directories = if dump_directory.nil?
15
- [
16
- File.join(Dir.home, 'dumps'),
17
- Dir.pwd,
18
- ]
19
- else
20
- [dump_directory]
12
+ def delete_dumps(*locations)
13
+ Interaction.announce 'Retrieving dump files'
14
+
15
+ dump_files = []
16
+ if locations.empty?
17
+ locations = [ File.join(Dir.home, 'dumps'), Dir.pwd ]
21
18
  end
22
- Interaction.announce 'Looking for *.dump in ' << dump_directories.join(',')
23
- dump_directories.each do |d|
24
- d_2 = File.expand_path(d)
25
- unless File.directory? File.realdirpath(d_2)
26
- Interaction.warn "Directory #{d_2} does not exist"
19
+ locations.map! &File.method(:expand_path)
20
+
21
+ Interaction.note "Looking in #{locations.join(', ')}"
22
+ locations.each do |dir|
23
+ directory = File.expand_path(dir)
24
+ unless File.directory? File.realdirpath(directory)
25
+ Interaction.warn "Directory #{directory} does not exist. Skipping."
27
26
  next
28
27
  end
29
- deletable_dumps.concat(Dir.glob("#{d_2}/**/*.dump"))
28
+ dump_files.concat Dir.glob("#{directory}/**/*.dump")
30
29
  end
30
+ deletable_dumps = dump_files.flatten.uniq.sort.select &File.method(:file?)
31
+
31
32
  if deletable_dumps.empty?
32
- Interaction.success 'No dumps to delete' if deletable_dumps.empty?
33
- exit 0
34
- end
35
- deletable_dumps.uniq!.sort!
36
- Interaction.note 'The following dumps can be deleted:'
37
- puts
38
- puts deletable_dumps
39
- Interaction.prompt('Delete those dumps', 'n', /y|yes/) || raise('Cancelled.')
40
- deletable_dumps.each do |dump|
41
- File.delete dump unless File.directory? dump
33
+ Interaction.note 'No dump files found'
34
+ else
35
+ puts deletable_dumps
36
+ Interaction.prompt('Delete these files?', 'n', /y|yes/) || Interaction.fail('Cancelled.')
37
+
38
+ deletable_dumps.each &File.method(:delete)
39
+ Interaction.success 'Done.'
42
40
  end
43
41
  end
@@ -0,0 +1,46 @@
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
+
39
+ - `geordi docker shell`
40
+ Runs the docker service named 'main'.
41
+ Append `--secondary` to open a second shell in an already running container.
42
+
43
+ - `geordi docker vnc`
44
+ Opens a VNC viewer to connect to the VNC server in the container.
45
+ LONGDESC
46
+ subcommand 'docker', DockerCLI
@@ -15,8 +15,6 @@ option :select_server, type: :string, aliases: '-s', banner: '[SERVER_NUMBER]',
15
15
  def shelll(target, *_args)
16
16
  require 'geordi/remote'
17
17
 
18
- invoke_geordi 'bundle_install'
19
-
20
18
  Interaction.announce 'Opening a shell on ' + target
21
19
  Geordi::Remote.new(target).shell(options)
22
20
  end
@@ -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,9 +11,10 @@ module Geordi
11
11
  class Cucumber
12
12
 
13
13
  VNC_DISPLAY = ':17'.freeze
14
- VNC_PASSWORD_FILE = File.absolute_path('~/.vnc/passwd').freeze # default for "vncpasswd"
15
- VNC_SERVER_COMMAND = "vncserver #{VNC_DISPLAY} -localhost -nolisten tcp -geometry 1280x1024 -rfbauth #{VNC_PASSWORD_FILE}".freeze
16
- VNC_VIEWER_COMMAND = "vncviewer #{VNC_DISPLAY} -passwd #{VNC_PASSWORD_FILE}".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
17
18
  VNC_ENV_VARIABLES = %w[DISPLAY BROWSER LAUNCHY_BROWSER].freeze
18
19
 
19
20
  def run(files, cucumber_options, options = {})
@@ -31,10 +32,10 @@ module Geordi
31
32
  system command # Util.run! would reset the Firefox PATH
32
33
  end
33
34
 
34
- def launch_vnc_viewer
35
+ def launch_vnc_viewer(source = VNC_DISPLAY)
35
36
  fork do
36
37
  error = capture_stderr do
37
- system(VNC_VIEWER_COMMAND)
38
+ system("#{VNC_VIEWER_COMMAND} #{source}")
38
39
  end
39
40
  unless $?.success?
40
41
  if $?.exitstatus == 127
@@ -59,7 +60,7 @@ module Geordi
59
60
  VNC_ENV_VARIABLES.each do |variable|
60
61
  ENV["OUTER_#{variable}"] = ENV[variable] if ENV[variable]
61
62
  end
62
- ENV['BROWSER'] = ENV['LAUNCHY_BROWSER'] = File.expand_path('../../bin/launchy_browser', __dir__)
63
+ ENV['BROWSER'] = ENV['LAUNCHY_BROWSER'] = File.expand_path('../../exe/launchy_browser', __dir__)
63
64
  ENV['DISPLAY'] = VNC_DISPLAY
64
65
 
65
66
  Interaction.note 'Run `geordi vnc` to view the Selenium test browsers'
@@ -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
@@ -34,7 +34,7 @@ module Geordi
34
34
 
35
35
  def postgresql_command
36
36
  ENV['PGPASSWORD'] = config['password']
37
- command = 'pg_restore --no-owner --clean'
37
+ command = 'pg_restore --no-owner --clean --no-acl'
38
38
  command << ' --username=' << config['username'].to_s if config['username']
39
39
  command << ' --port=' << config['port'].to_s if config['port']
40
40
  command << ' --host=' << config['host'].to_s if config['host']
@@ -1,5 +1,6 @@
1
1
  require 'geordi/interaction'
2
2
  require 'socket'
3
+ require 'bundler'
3
4
 
4
5
  module Geordi
5
6
  class Util
@@ -64,7 +65,7 @@ module Geordi
64
65
  # Remove Geordi's Bundler environment when running commands.
65
66
  success = if !defined?(Bundler)
66
67
  system(*command)
67
- elsif Gem::Version.new(Bundler::VERSION) >= Gem::Version.new('2.1.2')
68
+ elsif Gem::Version.new(Bundler::VERSION) >= Gem::Version.new('1.17.3')
68
69
  Bundler.with_original_env do
69
70
  system(*command)
70
71
  end
@@ -167,15 +168,10 @@ module Geordi
167
168
  # Get the version for the given gem by parsing Gemfile.lock.
168
169
  # Returns nil if the gem is not used.
169
170
  def gem_version(gem)
170
- # Lines look like `* will_paginate (2.3.15)` or `railslts-version (2.3.18.16 7f51cc7)`
171
- bundle_list.split("\n").each do |line|
172
- matches = line.match(/\* #{gem} \(([\d\.]+)/)
173
- next if matches.nil? || matches[1].nil?
171
+ lock_file = Bundler::LockfileParser.new(Bundler.read_file(Bundler.default_lockfile))
172
+ spec = lock_file.specs.detect { |spec| spec.name == gem }
174
173
 
175
- return Gem::Version.new(matches[1])
176
- end
177
-
178
- nil
174
+ spec && spec.version
179
175
  end
180
176
 
181
177
  def file_containing?(file, regex)
@@ -192,12 +188,6 @@ module Geordi
192
188
  string
193
189
  end
194
190
 
195
- private
196
-
197
- def bundle_list
198
- @bundle_list ||= `bundle list`
199
- end
200
-
201
191
  end
202
192
  end
203
193
  end
@@ -1,3 +1,3 @@
1
1
  module Geordi
2
- VERSION = '5.1.0'.freeze
2
+ VERSION = '5.2.4'.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: 5.1.0
4
+ version: 5.2.4
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-12-04 00:00:00.000000000 Z
11
+ date: 2021-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -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