pgai 0.2.1 → 0.2.3
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 +4 -4
- data/README.md +6 -0
- data/lib/pgai/cli/main.rb +12 -0
- data/lib/pgai/clone_manager.rb +16 -2
- data/lib/pgai/config.rb +5 -1
- data/lib/pgai/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16b287abec3a2748a73207afe42f679c03055a989496ba5610bcae530f565352
|
4
|
+
data.tar.gz: c2414c821b4fbf99fe12e7d8031c40cc17aa437a33a68d0a4ecdb8c2586418fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d113076e6e8568cea4bbf34a9c6e2101c0375063e9458baafd87a2510ef2ff79f912d082adeec6abfdd0177dcf349fec59b76c0c2544d933522b437a1fca370a
|
7
|
+
data.tar.gz: cbe551ec80fe9a53b47f8d99789fd603bf01d5b4217f34d6df1eded1a2ae6005cad94006ddcba52b00acea28be5b841eca71db32f4eca724e59bc3f9374e62f4
|
data/README.md
CHANGED
@@ -63,6 +63,12 @@ pgai connect <env alias>
|
|
63
63
|
|
64
64
|
Multiple `connect` commands for an environment will connect to the same clone, it won't start a new one.
|
65
65
|
|
66
|
+
`pgai info <env alias>` prints out a database URL variable that can be used from Rails to integrate with dblab. Example for `CI` database:
|
67
|
+
|
68
|
+
```shell
|
69
|
+
CI_DATABASE_URL="postgresql://foo:bar@localhost:9000/foo_test" bin/rails c -e test
|
70
|
+
```
|
71
|
+
|
66
72
|
### Features
|
67
73
|
|
68
74
|
- multiple psql sessions to the same clone
|
data/lib/pgai/cli/main.rb
CHANGED
@@ -40,6 +40,18 @@ module Pgai::Cli
|
|
40
40
|
print_table data
|
41
41
|
end
|
42
42
|
|
43
|
+
desc "exp", "Show clone details"
|
44
|
+
method_option :only, aliases: "-o", desc: "Configure only this variable", repeatable: true
|
45
|
+
def exp(*command)
|
46
|
+
envs = options.fetch(:only) { configuration.enviroments.keys }
|
47
|
+
clones = envs.each_with_object({}) { |env, acc|
|
48
|
+
acc[env] = Pgai::CloneManager.new(configuration.enviroments.fetch(env), config: configuration).clone
|
49
|
+
}
|
50
|
+
vars = clones.map { |env, clone| ["#{env.to_s.upcase}_DATABASE_URL", clone.database_url] }.to_h
|
51
|
+
|
52
|
+
exec(vars, *command)
|
53
|
+
end
|
54
|
+
|
43
55
|
desc "env", "Manage environments"
|
44
56
|
subcommand "env", Pgai::Cli::Env
|
45
57
|
end
|
data/lib/pgai/clone_manager.rb
CHANGED
@@ -41,13 +41,23 @@ module Pgai
|
|
41
41
|
clone = find_clone
|
42
42
|
return {} unless clone
|
43
43
|
|
44
|
+
database_url = "#{enviroment_alias.to_s.upcase}_DATABASE_URL='#{clone.database_url}'"
|
45
|
+
|
44
46
|
{
|
45
|
-
|
47
|
+
psql_connection_string: clone.connection_string,
|
48
|
+
rails_database_url: database_url,
|
46
49
|
created_at: clone.created_at,
|
47
50
|
data_state_at: clone.data_state_at
|
48
51
|
}
|
49
52
|
end
|
50
53
|
|
54
|
+
def clone
|
55
|
+
configure_enviroment
|
56
|
+
clone = find_or_create_clone
|
57
|
+
port_forward.start(clone.port)
|
58
|
+
clone
|
59
|
+
end
|
60
|
+
|
51
61
|
private
|
52
62
|
|
53
63
|
attr_reader :environment, :config, :port_forward, :dblab
|
@@ -115,8 +125,12 @@ module Pgai
|
|
115
125
|
environment.fetch(:port)
|
116
126
|
end
|
117
127
|
|
128
|
+
def enviroment_alias
|
129
|
+
environment.fetch(:alias)
|
130
|
+
end
|
131
|
+
|
118
132
|
def clone_id
|
119
|
-
@clone_id ||= [config.clone_prefix,
|
133
|
+
@clone_id ||= [config.clone_prefix, enviroment_alias].join("_")
|
120
134
|
end
|
121
135
|
|
122
136
|
def clone_user
|
data/lib/pgai/config.rb
CHANGED
@@ -10,6 +10,10 @@ module Pgai
|
|
10
10
|
def connection_string
|
11
11
|
"'host=#{host} port=#{port} user=#{user} dbname=#{dbname} password=#{password}'"
|
12
12
|
end
|
13
|
+
|
14
|
+
def database_url
|
15
|
+
"postgresql://#{user}:#{password}@#{host}:#{port}/#{dbname}"
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
attr_accessor :clone_prefix
|
@@ -68,7 +72,7 @@ module Pgai
|
|
68
72
|
|
69
73
|
def persist_clone(id, attributes = {})
|
70
74
|
store.transaction do
|
71
|
-
store[:clones]
|
75
|
+
store[:clones] ||= {}
|
72
76
|
store[:clones].merge!(id => attributes)
|
73
77
|
end
|
74
78
|
|
data/lib/pgai/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pgai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marius Bobin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|