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 +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +40 -2
- data/Gemfile.lock +1 -1
- data/README.md +35 -17
- data/exe/geordi +2 -0
- data/geordi.gemspec +2 -4
- data/lib/geordi/commands/console.rb +1 -1
- data/lib/geordi/commands/delete_dumps.rb +26 -28
- data/lib/geordi/commands/docker.rb +46 -0
- data/lib/geordi/commands/shell.rb +0 -2
- data/lib/geordi/commands/update.rb +15 -4
- data/lib/geordi/cucumber.rb +7 -6
- data/lib/geordi/docker.rb +116 -0
- data/lib/geordi/dump_loader.rb +1 -1
- data/lib/geordi/util.rb +5 -15
- data/lib/geordi/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 559fa220792042ae1d84411772b63a5f4526df68f5ac4eefbb008ac63705d72d
|
4
|
+
data.tar.gz: e43a552812daed79454864bed854720537ee2e9d8d303212b5dde4d8ef0b1694
|
5
5
|
SHA512:
|
6
|
-
metadata.gz: '
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0193eed8c9af5cadd36498a4b0eb5b6364a58e20e93ef3619af3dc934b16f61652b9b703e00049109592e6b324c7854d3d56cfe5aa14ca8948e5d6ed1320a548'
|
7
|
+
data.tar.gz: d7afc3e6ac2b5c3255fedd1f6e2a3f8fa1469c822c64f1ed1471a46ab0208c1f1f6084ee17b0edee79f07d0bce1d64d7768dcfaddffed61dfdd6664863851a49
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2
|
data/CHANGELOG.md
CHANGED
@@ -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
|
|
data/Gemfile.lock
CHANGED
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
|
114
|
+
Example: `geordi delete-dumps` or `geordi delete-dumps ~/tmp/dumps`
|
115
115
|
|
116
|
-
Recursively
|
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
|
-
|
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
|
410
|
-
|
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
data/geordi.gemspec
CHANGED
@@ -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
|
-
|
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
|
3
|
+
Example: `geordi delete-dumps` or `geordi delete-dumps ~/tmp/dumps`
|
4
4
|
|
5
|
-
Recursively
|
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
|
-
|
9
|
+
Will ask for confirmation before actually deleting files.
|
10
10
|
LONGDESC
|
11
11
|
|
12
|
-
def delete_dumps(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
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.
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
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
|
-
|
28
|
+
Interaction.success 'Successfully updated the project.'
|
19
29
|
|
20
|
-
|
21
|
-
|
30
|
+
invoke_geordi 'dump', options.dump, load: true if options.dump
|
31
|
+
invoke_geordi 'tests' if options.test
|
32
|
+
end
|
22
33
|
end
|
data/lib/geordi/cucumber.rb
CHANGED
@@ -11,9 +11,10 @@ module Geordi
|
|
11
11
|
class Cucumber
|
12
12
|
|
13
13
|
VNC_DISPLAY = ':17'.freeze
|
14
|
-
VNC_PASSWORD_FILE = File.
|
15
|
-
|
16
|
-
|
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('../../
|
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
|
data/lib/geordi/dump_loader.rb
CHANGED
@@ -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']
|
data/lib/geordi/util.rb
CHANGED
@@ -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('
|
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
|
-
|
171
|
-
|
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
|
-
|
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
|
data/lib/geordi/version.rb
CHANGED
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.
|
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:
|
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
|