prick 0.49.0 → 0.50.1
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/PLAN +9 -0
- data/exe/prick +7 -22
- data/lib/prick/builder/batch.rb +1 -1
- data/lib/prick/builder/builder.rb +3 -7
- data/lib/prick/builder/parser.rb +6 -1
- data/lib/prick/subcommand/prick-build.rb +1 -9
- data/lib/prick/subcommand/prick-create.rb +18 -9
- data/lib/prick/subcommand/prick-fox.rb +0 -52
- data/lib/prick/subcommand/prick-run.rb +79 -88
- data/lib/prick/subcommand/prick-set.rb +2 -2
- data/lib/prick/version.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 68bb7f33b6d395019f2afa888f6c6c3714fba2b70b0a703501cbce4a558eac95
|
|
4
|
+
data.tar.gz: f5d2592e29c7b82a02f45b90320726f78b485ffb8375992cbabf789508e401a8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '0709281eb8c78ee81987b2028563f420ce138601591d82c0891d90a9e5d14996bf334c456d44edf3d29d768a760ef1885f9a49574469df1fa2194e9b90a51bbc'
|
|
7
|
+
data.tar.gz: f3fea3af273501eef255e5e9c6fe96c2a38e459ae19dd347880f00f1509b7f41733fd1b6c3f435197fe95c0fcb05164d789bb3d8cb75d4b070ad261f01a7c0e2
|
data/PLAN
ADDED
data/exe/prick
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
#require 'bootsnap'
|
|
4
|
-
#begin
|
|
5
|
-
# cache_dir = "/run/user/" + `id -u`.chomp
|
|
6
|
-
# Bootsnap.setup(
|
|
7
|
-
# cache_dir: cache_dir, # Path to your cache
|
|
8
|
-
# development_mode: true, # Current working environment, e.g. RACK_ENV, RAILS_ENV, etc
|
|
9
|
-
# load_path_cache: true, # Optimize the LOAD_PATH with a cache
|
|
10
|
-
# compile_cache_iseq: true, # Compile Ruby code into ISeq cache, breaks coverage reporting.
|
|
11
|
-
# compile_cache_yaml: true # Compile YAML into a cache
|
|
12
|
-
# )
|
|
13
|
-
# # Bootsnap.instrumentation = ->(event, path) { puts "#{event} #{path}" }
|
|
14
|
-
#end
|
|
15
|
-
|
|
16
3
|
require 'shellopts'
|
|
17
4
|
|
|
18
5
|
# Start time of prick. Used in make and build to compute duration of the whole
|
|
@@ -96,7 +83,7 @@ SPEC = %(
|
|
|
96
83
|
'set database' subcommand
|
|
97
84
|
|
|
98
85
|
create.prick! -- (Re-)initialize the prick schema
|
|
99
|
-
|
|
86
|
+
(Re-)create the prick schema
|
|
100
87
|
|
|
101
88
|
create.migration! -f,force -o,file=FILE -- VERSION @ Create migration
|
|
102
89
|
Create a migration from VERSION to the current and write it to
|
|
@@ -262,6 +249,7 @@ def require_db(database = Prick.state&.database, exist: true)
|
|
|
262
249
|
conn = PgConn.new(database)
|
|
263
250
|
end
|
|
264
251
|
conn.schema.exist?("prick") or Prick.error "Database '#{database}' is not a Prick database"
|
|
252
|
+
|
|
265
253
|
conn.close if close_conn # Close session explicitly so we can drop database if required
|
|
266
254
|
else
|
|
267
255
|
!dba.rdbms.exist?(database) or Prick.error "Database '#{database}' exists"
|
|
@@ -414,14 +402,11 @@ begin
|
|
|
414
402
|
require_db(database, exist: false)
|
|
415
403
|
Prick::SubCommand.create_database(database, username, environment)
|
|
416
404
|
when :prick!
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
Prick::SubCommand.
|
|
421
|
-
|
|
422
|
-
else
|
|
423
|
-
Prick::SubCommand.create_database(database, username, environment)
|
|
424
|
-
end
|
|
405
|
+
conn = PgConn.new(database, username)
|
|
406
|
+
conn.transaction {
|
|
407
|
+
conn.schema.drop("prick", cascade: true) if conn.schema.exist?("prick")
|
|
408
|
+
Prick::SubCommand.build_prick(conn, environment)
|
|
409
|
+
}
|
|
425
410
|
when :migration!
|
|
426
411
|
# clean_pg_meta_cache # FIXME ?
|
|
427
412
|
require_db
|
data/lib/prick/builder/batch.rb
CHANGED
|
@@ -156,7 +156,7 @@ module Prick
|
|
|
156
156
|
@batches
|
|
157
157
|
end
|
|
158
158
|
|
|
159
|
-
def execute(conn, create_schemas: schemas)
|
|
159
|
+
def execute(conn, create_schemas: schemas, state: true)
|
|
160
160
|
# Load pool
|
|
161
161
|
load_pool if pool.nil?
|
|
162
162
|
|
|
@@ -164,23 +164,19 @@ module Prick
|
|
|
164
164
|
create_batches if batches.nil?
|
|
165
165
|
|
|
166
166
|
# Register build in database
|
|
167
|
-
Prick.state.save_build_begin
|
|
167
|
+
Prick.state.save_build_begin if state
|
|
168
168
|
|
|
169
169
|
# Create schemas
|
|
170
170
|
conn.exec create_schemas.map { |schema| "create schema #{schema}" } if !single
|
|
171
171
|
|
|
172
172
|
# Execute batch groups
|
|
173
173
|
t0 = Time.now
|
|
174
|
-
# for batch in batches
|
|
175
|
-
# puts "Executing #{batch.class} batch"
|
|
176
|
-
# batch.execute
|
|
177
|
-
# end
|
|
178
174
|
batches.each(&:execute)
|
|
179
175
|
t1 = Time.now
|
|
180
176
|
|
|
181
177
|
# Register build result in database
|
|
182
178
|
dt = t1 - t0
|
|
183
|
-
Prick.state.save_build_end(true, dt)
|
|
179
|
+
Prick.state.save_build_end(true, dt) if state
|
|
184
180
|
end
|
|
185
181
|
|
|
186
182
|
def dump
|
data/lib/prick/builder/parser.rb
CHANGED
|
@@ -235,7 +235,12 @@ module Prick
|
|
|
235
235
|
#
|
|
236
236
|
def expand_filename(dir, filename)
|
|
237
237
|
envs = Prick.state.environments
|
|
238
|
-
|
|
238
|
+
name = Prick.state.environment
|
|
239
|
+
!name.nil? or Prick.error "No environment set"
|
|
240
|
+
!envs.nil? or Prick.error "Can't find environment '#{name}' - " \
|
|
241
|
+
"no #{Prick.state.environment_file || 'environment file'}"
|
|
242
|
+
env = envs[name] or Prick.error "Unknown environment '#{name}' - " \
|
|
243
|
+
"not defined in #{Prick.state.environment_file}"
|
|
239
244
|
bash_vars = Prick.state.bash_environment.dup
|
|
240
245
|
|
|
241
246
|
last = nil
|
|
@@ -47,7 +47,7 @@ module Prick::SubCommand
|
|
|
47
47
|
# builder.pool.delete_schema("prick") if super_conn.schema.exist?("prick")
|
|
48
48
|
# super_conn.rdbms.empty!(database, public: false, exclude: ["prick"])
|
|
49
49
|
super_conn.rdbms.empty!(database, public: false)
|
|
50
|
-
Prick::SubCommand::
|
|
50
|
+
Prick::SubCommand::create_prick(database, username)
|
|
51
51
|
else
|
|
52
52
|
# Find all schemas
|
|
53
53
|
refresh_schemas = conn.schema.list
|
|
@@ -87,17 +87,9 @@ module Prick::SubCommand
|
|
|
87
87
|
builder.execute conn
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
# rescue Prick::Error => ex
|
|
91
|
-
# $stderr.puts ex.message
|
|
92
|
-
# exit 1
|
|
93
|
-
|
|
94
90
|
rescue ::Command::Error => ex
|
|
95
91
|
$stderr.puts ex.message
|
|
96
92
|
exit 1
|
|
97
|
-
|
|
98
|
-
ensure
|
|
99
|
-
super_conn&.terminate
|
|
100
|
-
conn&.terminate
|
|
101
93
|
end
|
|
102
94
|
end
|
|
103
95
|
end
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
module Prick
|
|
2
2
|
module SubCommand
|
|
3
|
-
PRICK_BUILD_FILES = %w(tables.sql views.sql functions.sql) # FIXME FIXME FIXME HARDCODED
|
|
4
|
-
|
|
5
3
|
def self.exist_database?(database)
|
|
6
4
|
State.connection.rdbms.exist? database
|
|
7
5
|
end
|
|
@@ -21,17 +19,23 @@ module Prick
|
|
|
21
19
|
super_conn.rdbms.create database, owner: username
|
|
22
20
|
|
|
23
21
|
# Initialize prick schema
|
|
24
|
-
|
|
22
|
+
create_prick database, username, environment
|
|
25
23
|
end
|
|
26
24
|
|
|
27
25
|
# Setup prick schema. Used when we rebuild the prick schema without
|
|
28
26
|
# disconnecting users
|
|
29
|
-
def self.
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
|
|
27
|
+
def self.build_prick(conn, environment)
|
|
28
|
+
# Make the environment visible to the builder. Needed when there is no
|
|
29
|
+
# state file (eg. in a fresh checkout)
|
|
30
|
+
Prick.state.environment = environment if environment
|
|
31
|
+
|
|
32
|
+
# Create schema
|
|
33
33
|
conn.schema.create("prick")
|
|
34
|
-
|
|
34
|
+
|
|
35
|
+
# Run prick/build.yml
|
|
36
|
+
Prick::SubCommand.run(
|
|
37
|
+
conn.database, conn.username, "schema/prick/build.yml",
|
|
38
|
+
conn: conn, state: false, seeds: false, auth: false)
|
|
35
39
|
|
|
36
40
|
# Add initial build record
|
|
37
41
|
state = Prick.state # shorthand
|
|
@@ -43,10 +47,15 @@ module Prick
|
|
|
43
47
|
rev: state.rev(kind: :short),
|
|
44
48
|
clean: state.clean?,
|
|
45
49
|
environment: environment || Prick::DEFAULT_ENVIRONMENT,
|
|
46
|
-
built_at:
|
|
50
|
+
built_at: Time.now,
|
|
47
51
|
success: nil
|
|
48
52
|
end
|
|
49
53
|
|
|
54
|
+
def self.create_prick(database, username, environment)
|
|
55
|
+
conn = PgConn.new(database, username)
|
|
56
|
+
build_prick(conn, environment)
|
|
57
|
+
end
|
|
58
|
+
|
|
50
59
|
def self.create_migration(username, from_version, force: false, file: nil)
|
|
51
60
|
constrain from_version, PrickVersion
|
|
52
61
|
Git.clean? or raise "Won't migrate: Repository is dirty"
|
|
@@ -19,55 +19,3 @@ module Prick::SubCommand
|
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
__END__
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
Timer.on! if timer
|
|
26
|
-
time "Prick::Command#build" do
|
|
27
|
-
begin
|
|
28
|
-
super_conn = PgConn.new
|
|
29
|
-
conn = nil
|
|
30
|
-
builder = nil
|
|
31
|
-
|
|
32
|
-
time "Load build object" do
|
|
33
|
-
if super_conn.rdbms.exist? database
|
|
34
|
-
conn = PgConn.new(database, username)
|
|
35
|
-
super_conn.rdbms.empty!(database)
|
|
36
|
-
else
|
|
37
|
-
super_conn.rdbms.create database, owner: username
|
|
38
|
-
conn = PgConn.new(database, username)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
builder = Prick::Build::Builder.new(conn, builddir)
|
|
42
|
-
builder.pool.delete_schema(builder.pool.after_schema(schema)) if schema
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
case dump
|
|
46
|
-
when :nodes; builder.nodes.reject { |node| node.is_a?(Build::BuildNode) }.map &:dump
|
|
47
|
-
when :allnodes; builder.nodes.map &:dump
|
|
48
|
-
when :batches; builder.dump
|
|
49
|
-
when nil;
|
|
50
|
-
else
|
|
51
|
-
Prick.error "Illegal dump type: #{dump.inspect}"
|
|
52
|
-
end && exit
|
|
53
|
-
|
|
54
|
-
time "Execute build object" do
|
|
55
|
-
builder.execute conn
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
rescue Prick::Error => ex
|
|
59
|
-
$stderr.puts ex.message
|
|
60
|
-
exit 1
|
|
61
|
-
|
|
62
|
-
rescue ::Command::Error => ex
|
|
63
|
-
$stderr.puts ex.message
|
|
64
|
-
exit 1
|
|
65
|
-
|
|
66
|
-
ensure
|
|
67
|
-
super_conn&.terminate
|
|
68
|
-
conn&.terminate
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
@@ -3,111 +3,102 @@
|
|
|
3
3
|
require_relative '../builder/builder.rb'
|
|
4
4
|
|
|
5
5
|
module Prick::SubCommand
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
# An explicit :conn option is needed when running in a transaction
|
|
8
|
+
def self.run(
|
|
9
|
+
database, username, path,
|
|
10
|
+
conn: nil, seeds: true, auth: true, step: false, timer: nil, dump: nil, state: true, schema: nil)
|
|
7
11
|
|
|
8
12
|
Timer.on! if timer
|
|
9
13
|
|
|
10
14
|
Timer.time "Prick::Command#build" do
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
conn = Prick.state.connection
|
|
28
|
-
|
|
29
|
-
# Parse
|
|
30
|
-
builder = Prick::Build::Builder.new(
|
|
31
|
-
conn, path,
|
|
32
|
-
single: true, load_pool: false, seeds: seeds, auth: auth, step: step)
|
|
33
|
-
|
|
34
|
-
# Register if a build file is referenced and normalize path to
|
|
35
|
-
# include build.yml of directories
|
|
36
|
-
if File.directory?(path)
|
|
37
|
-
path = File.join(path, "build.yml")
|
|
38
|
-
is_build_file = true
|
|
39
|
-
elsif File.basename(path) == "build.yml"
|
|
40
|
-
is_build_file = true
|
|
41
|
-
else
|
|
42
|
-
is_build_file = false
|
|
43
|
-
end
|
|
15
|
+
super_conn = State.connection # Used to create new databases (doesn't make a
|
|
16
|
+
# difference right now as the database
|
|
17
|
+
# user is a superuser because we need to
|
|
18
|
+
# be able to set some superuser-only
|
|
19
|
+
# options on functions)
|
|
20
|
+
builder = nil
|
|
21
|
+
|
|
22
|
+
constrain super_conn.rdbms.exist?(database), true # FIXME Same problem as below. Also in other commands
|
|
23
|
+
|
|
24
|
+
Timer.time "Load build object" do
|
|
25
|
+
if super_conn.rdbms.exist? database # FIXME Why create database? Setup should have done this
|
|
26
|
+
exist = true
|
|
27
|
+
else
|
|
28
|
+
super_conn.rdbms.create database, owner: username
|
|
29
|
+
exist = false
|
|
30
|
+
end
|
|
44
31
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
32
|
+
conn ||= Prick.state.connection
|
|
33
|
+
|
|
34
|
+
# Parse
|
|
35
|
+
builder = Prick::Build::Builder.new(
|
|
36
|
+
conn, path,
|
|
37
|
+
single: true, load_pool: false, seeds: seeds, auth: auth, step: step)
|
|
38
|
+
|
|
39
|
+
# Register if a build file is referenced and normalize path to
|
|
40
|
+
# include build.yml of directories
|
|
41
|
+
if File.directory?(path)
|
|
42
|
+
path = File.join(path, "build.yml")
|
|
43
|
+
is_build_file = true
|
|
44
|
+
elsif File.basename(path) == "build.yml"
|
|
45
|
+
is_build_file = true
|
|
46
|
+
else
|
|
47
|
+
is_build_file = false
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Read schema from build file if possible and decide if schema should
|
|
51
|
+
# be dropped beforehand
|
|
52
|
+
if is_build_file
|
|
53
|
+
if builder.root.has_schema
|
|
54
|
+
!schema or Prick.error "Can't use --schema when doing a schema build"
|
|
55
|
+
is_schema_rebuild = true
|
|
56
|
+
schema = build_node.schema
|
|
55
57
|
else
|
|
56
58
|
is_schema_rebuild = false
|
|
57
59
|
end
|
|
60
|
+
else
|
|
61
|
+
is_schema_rebuild = false
|
|
62
|
+
end
|
|
58
63
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
end
|
|
64
|
+
# Infer schema from path
|
|
65
|
+
if !schema
|
|
66
|
+
abspath = File.realpath(path)
|
|
67
|
+
schemapath = File.realpath(Prick.state.schema_dir)
|
|
68
|
+
if abspath =~ /^#{schemapath}\/([^\/]+)(?:\/.*)$/
|
|
69
|
+
schema = $1
|
|
70
|
+
else
|
|
71
|
+
Prick.error "Can't find schema" # No default schema to avoid unintended runs
|
|
68
72
|
end
|
|
73
|
+
end
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
# Write back schema to builder
|
|
76
|
+
builder.root.schema = schema
|
|
72
77
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
# Drop schema if needed
|
|
79
|
+
if is_schema_rebuild
|
|
80
|
+
conn.schema.drop schema, cascade: true
|
|
81
|
+
end
|
|
77
82
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
end
|
|
83
|
+
# Create schema if absent
|
|
84
|
+
if !conn.schema.exist?(schema)
|
|
85
|
+
conn.schema.create(schema)
|
|
82
86
|
end
|
|
87
|
+
end
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
else
|
|
91
|
-
Prick.error "Illegal dump type: #{dump.inspect}"
|
|
92
|
-
end
|
|
89
|
+
if dump
|
|
90
|
+
builder.load_pool
|
|
91
|
+
case dump
|
|
92
|
+
when :nodes; builder.nodes.reject { |node| node.is_a?(Build::BuildNode) }.map &:dump
|
|
93
|
+
when :allnodes; builder.nodes.map &:dump
|
|
94
|
+
when :batches; builder.dump
|
|
93
95
|
else
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
Prick.error "Illegal dump type: #{dump.inspect}"
|
|
97
|
+
end
|
|
98
|
+
else
|
|
99
|
+
Timer.time "Execute build object" do
|
|
100
|
+
builder.execute conn, state: state
|
|
97
101
|
end
|
|
98
|
-
|
|
99
|
-
# FIXME
|
|
100
|
-
# rescue Prick::Error => ex
|
|
101
|
-
# $stderr.puts ex.message
|
|
102
|
-
# exit 1
|
|
103
|
-
#
|
|
104
|
-
# rescue ::Command::Error => ex
|
|
105
|
-
# $stderr.puts ex.message
|
|
106
|
-
# exit 1
|
|
107
|
-
|
|
108
|
-
ensure
|
|
109
|
-
super_conn&.terminate
|
|
110
|
-
conn&.terminate
|
|
111
102
|
end
|
|
112
103
|
end
|
|
113
104
|
end
|
|
@@ -17,7 +17,7 @@ module Prick::SubCommand
|
|
|
17
17
|
Prick.state.environment = environment
|
|
18
18
|
Prick.state.save_state
|
|
19
19
|
else
|
|
20
|
-
puts Prick.state.environment
|
|
20
|
+
puts Prick.state.environment # FIXME ?
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
@@ -38,7 +38,7 @@ module Prick::SubCommand
|
|
|
38
38
|
Prick.state.environment = environment
|
|
39
39
|
Prick.state.save_state
|
|
40
40
|
else
|
|
41
|
-
puts Prick.state.database
|
|
41
|
+
puts Prick.state.database # FIXME ?
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
data/lib/prick/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: prick
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.50.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Claus Rasmussen
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: exe
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2026-09-28 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: semantic
|
|
@@ -188,6 +189,7 @@ files:
|
|
|
188
189
|
- ".rspec"
|
|
189
190
|
- ".ruby-version"
|
|
190
191
|
- Gemfile
|
|
192
|
+
- PLAN
|
|
191
193
|
- README.md
|
|
192
194
|
- Rakefile
|
|
193
195
|
- TODO
|
|
@@ -257,6 +259,7 @@ files:
|
|
|
257
259
|
homepage: http://www.nowhere.com/
|
|
258
260
|
licenses: []
|
|
259
261
|
metadata: {}
|
|
262
|
+
post_install_message:
|
|
260
263
|
rdoc_options: []
|
|
261
264
|
require_paths:
|
|
262
265
|
- lib
|
|
@@ -271,7 +274,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
271
274
|
- !ruby/object:Gem::Version
|
|
272
275
|
version: '0'
|
|
273
276
|
requirements: []
|
|
274
|
-
rubygems_version: 3.
|
|
277
|
+
rubygems_version: 3.3.7
|
|
278
|
+
signing_key:
|
|
275
279
|
specification_version: 4
|
|
276
280
|
summary: A release control and management system for postgresql
|
|
277
281
|
test_files: []
|