prick 0.20.10 → 0.20.13
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/TODO +11 -0
- data/exe/prick +1 -0
- data/lib/builder/batch.rb +3 -1
- data/lib/builder/builder.rb +7 -2
- data/lib/builder/node.rb +7 -0
- data/lib/builder/node_pool.rb +18 -0
- data/lib/builder/parser.rb +4 -1
- data/lib/prick/version.rb +1 -1
- data/lib/subcommand/prick-build.rb +21 -2
- data/prick.gemspec +2 -2
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4435f17e31e98bc0c62c1f7c92818f71f059bc308522ab1ed8ac6acb17825768
|
4
|
+
data.tar.gz: aaaf83164a0de30d6a134cc12159cf5fed858806a68e4dba9738da93abd24e15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b6939f154a1e04af830c9bad778deb871f6573dd729afebf776fad34b06bbda1d6debe11b3d38278ec1f09357a6218723e70e0983a93dd6f3f6db2c4311fb5e
|
7
|
+
data.tar.gz: c291aeef50d1e5a133c47c7908653762da31d047852bcdfcfe19a0a97114efeb3118f9d2c759466621ece995120e3380107b57e97614410cbc82b18f813a1d7c
|
data/TODO
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
o Fix that enum references are not created:
|
2
|
+
|
3
|
+
system_roles
|
4
|
+
- &app_registry_anon_system_role
|
5
|
+
system: APP_REGISTRY # <---------------------------- Creates a dangling reference
|
6
|
+
rolename: app_registry_anon_role
|
7
|
+
ordinal: 1
|
8
|
+
permissions:
|
9
|
+
- *app_registry_anon_permission
|
10
|
+
|
11
|
+
|
1
12
|
|
2
13
|
o Store fox.state, reflections, and reflections in the database so third-party
|
3
14
|
programs can use them when testing
|
data/exe/prick
CHANGED
data/lib/builder/batch.rb
CHANGED
@@ -102,11 +102,12 @@ module Prick
|
|
102
102
|
files = nodes.map(&:path)
|
103
103
|
|
104
104
|
# Load meta object
|
105
|
-
meta = PgMeta.new(conn)
|
105
|
+
meta = PgMeta.new(conn, exclude_schemas: builder.pg_graph_ignore_schemas)
|
106
106
|
|
107
107
|
# Create type object
|
108
108
|
type = PgGraph::Type.new(meta, builder.reflections_file)
|
109
109
|
|
110
|
+
# Timer
|
110
111
|
t_type.stop
|
111
112
|
t_fox = Timer.new " Parse files"
|
112
113
|
|
@@ -126,6 +127,7 @@ module Prick
|
|
126
127
|
# Dump state file
|
127
128
|
fox.write_state(FOX_STATE_PATH)
|
128
129
|
|
130
|
+
# Timer
|
129
131
|
t_fox.stop
|
130
132
|
t_exe = Timer.new " Execute SQL"
|
131
133
|
|
data/lib/builder/builder.rb
CHANGED
@@ -31,9 +31,12 @@ module Prick
|
|
31
31
|
# Pool of nodes. Initialized by #load_pool
|
32
32
|
attr_reader :pool
|
33
33
|
|
34
|
-
forward_to :pool, :
|
34
|
+
forward_to :pool, :schemas,
|
35
|
+
:nodes, :decl_nodes, :init_nodes, :term_nodes,
|
35
36
|
:seed_nodes, :fox_seed_nodes, :sql_seed_nodes,
|
36
|
-
:
|
37
|
+
:builder_nodes,
|
38
|
+
:pg_graph_ignore_schemas,
|
39
|
+
:refresh_schemas, :keep_schemas
|
37
40
|
|
38
41
|
def batches() @batches ||= group end
|
39
42
|
|
@@ -44,6 +47,7 @@ module Prick
|
|
44
47
|
@clean = clean
|
45
48
|
@pool = NodePool.new
|
46
49
|
@root = Parser.parse(conn, dir)
|
50
|
+
@pg_graph_ignore_schemas = []
|
47
51
|
load_pool(@root) # Collect nodes into pool
|
48
52
|
@batches = nil # Initialized by #group
|
49
53
|
end
|
@@ -90,6 +94,7 @@ module Prick
|
|
90
94
|
def execute(conn, create_schemas: schemas)
|
91
95
|
group if batches.nil?
|
92
96
|
conn.exec create_schemas.grep_v("public").map { |schema| "create schema #{schema}" }
|
97
|
+
conn.schema.create("public", authorization: "postgres")
|
93
98
|
for batch in batches
|
94
99
|
batch.execute
|
95
100
|
end
|
data/lib/builder/node.rb
CHANGED
@@ -142,6 +142,7 @@ module Prick
|
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
145
|
+
# A build.yml file node
|
145
146
|
class BuildNode < Node
|
146
147
|
def nodes() @nodes ||= init_nodes + decl_nodes + seed_nodes + term_nodes end
|
147
148
|
|
@@ -150,12 +151,17 @@ module Prick
|
|
150
151
|
attr_reader :term_nodes
|
151
152
|
attr_reader :seed_nodes
|
152
153
|
|
154
|
+
attr_accessor :pg_graph_ignore_schema
|
155
|
+
attr_accessor :refresh_schema
|
156
|
+
|
153
157
|
def initialize(parent, path)
|
154
158
|
super(parent, nil, :yml, path)
|
155
159
|
@decl_nodes = []
|
156
160
|
@init_nodes = []
|
157
161
|
@term_nodes = []
|
158
162
|
@seed_nodes = []
|
163
|
+
@pg_graph_ignore_schema = false
|
164
|
+
@refresh_schema = true
|
159
165
|
end
|
160
166
|
|
161
167
|
def inspect() to_s end
|
@@ -164,6 +170,7 @@ module Prick
|
|
164
170
|
puts "BuildNode #{path}"
|
165
171
|
indent {
|
166
172
|
puts "schema: #{schema}" if schema
|
173
|
+
puts "pg_graph_ignore_schema: #{pg_graph_ignore_schema}"
|
167
174
|
decl_nodes.each(&:dump)
|
168
175
|
for kind in [:init, :term, :seed]
|
169
176
|
kind_nodes = self.send("#{kind}_nodes".to_sym)
|
data/lib/builder/node_pool.rb
CHANGED
@@ -18,6 +18,24 @@ module Prick
|
|
18
18
|
def fox_seed_nodes() seed_nodes.select { |node| node.kind == :fox } end
|
19
19
|
def sql_seed_nodes() seed_nodes.select { |node| node.kind == :sql } end
|
20
20
|
|
21
|
+
# List of BuildNode nodes
|
22
|
+
def build_nodes() nodes.select { |node| node.is_a?(BuildNode) } end
|
23
|
+
|
24
|
+
# List of schemas to ignore when building PgGraph objects. This is used
|
25
|
+
# to exclude foreign schemes that doesn't follow the PgGraph naming
|
26
|
+
# conventions
|
27
|
+
def pg_graph_ignore_schemas()
|
28
|
+
build_nodes.select(&:pg_graph_ignore_schema).map(&:schema).uniq
|
29
|
+
end
|
30
|
+
|
31
|
+
def refresh_schemas()
|
32
|
+
build_nodes.select(&:refresh_schema).map(&:schema).uniq
|
33
|
+
end
|
34
|
+
|
35
|
+
def keep_schemas()
|
36
|
+
build_nodes.reject(&:refresh_schema).map(&:schema).uniq
|
37
|
+
end
|
38
|
+
|
21
39
|
def initialize()
|
22
40
|
self.clear
|
23
41
|
end
|
data/lib/builder/parser.rb
CHANGED
@@ -50,7 +50,10 @@ module Prick
|
|
50
50
|
entry.each { |key, value|
|
51
51
|
if key == "schema"
|
52
52
|
unit.schema = value
|
53
|
-
|
53
|
+
elsif key == "standard"
|
54
|
+
unit.pg_graph_ignore_schema = !value
|
55
|
+
elsif key == "refresh"
|
56
|
+
unit.refresh_schema = value
|
54
57
|
else
|
55
58
|
case key
|
56
59
|
when "init"; unit.init_nodes
|
data/lib/prick/version.rb
CHANGED
@@ -8,19 +8,38 @@ module Prick::SubCommand
|
|
8
8
|
time "Prick::Command#build" do
|
9
9
|
begin
|
10
10
|
super_conn = PgConn.new
|
11
|
+
|
11
12
|
conn = nil
|
12
13
|
builder = nil
|
13
|
-
|
14
14
|
time "Load build object" do
|
15
15
|
if super_conn.rdbms.exist? database
|
16
16
|
conn = PgConn.new(database, username)
|
17
|
-
|
17
|
+
exist = true
|
18
18
|
else
|
19
19
|
super_conn.rdbms.create database, owner: username
|
20
20
|
conn = PgConn.new(database, username)
|
21
|
+
exit = false
|
21
22
|
end
|
22
23
|
|
23
24
|
builder = Prick::Build::Builder.new(conn, builddir)
|
25
|
+
|
26
|
+
if exist
|
27
|
+
# Explicit schema is always rebuilt
|
28
|
+
refresh = [builder.refresh_schemas, schema].compact.flatten.uniq
|
29
|
+
keep = builder.keep_schemas.reject { |s| s == schema }
|
30
|
+
|
31
|
+
# Rebuild non-existing keep-schemas
|
32
|
+
keep.reject! { |schema|
|
33
|
+
refresh << schema if !conn.schema.exist?(schema)
|
34
|
+
}
|
35
|
+
|
36
|
+
# Eliminate keep schemas from build pool
|
37
|
+
builder.pool.delete_schema(keep)
|
38
|
+
|
39
|
+
# Drop refresh schemes
|
40
|
+
refresh.each { |schema| conn.schema.drop(schema, cascade: true) }
|
41
|
+
end
|
42
|
+
|
24
43
|
builder.pool.delete_schema(builder.pool.after_schema(schema)) if schema
|
25
44
|
end
|
26
45
|
|
data/prick.gemspec
CHANGED
@@ -34,9 +34,9 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_dependency "constrain"
|
35
35
|
spec.add_dependency "forward_to"
|
36
36
|
spec.add_dependency "bootsnap"
|
37
|
-
spec.add_dependency "fixture_fox" "~> 0.1.3"
|
37
|
+
spec.add_dependency "fixture_fox", "~> 0.1.3"
|
38
38
|
spec.add_dependency "postspec"
|
39
|
-
spec.add_dependency "pg_graph"
|
39
|
+
spec.add_dependency "pg_graph", "~> 0.1.8"
|
40
40
|
spec.add_dependency "shellopts", "~> 2.0.23"
|
41
41
|
|
42
42
|
spec.add_development_dependency "ruby-prof"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: semantic
|
@@ -81,19 +81,19 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: fixture_fox
|
84
|
+
name: fixture_fox
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.1.3
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 0.1.3
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: postspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,16 +112,16 @@ dependencies:
|
|
112
112
|
name: pg_graph
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 0.1.8
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 0.1.8
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: shellopts
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
230
|
- !ruby/object:Gem::Version
|
231
231
|
version: '0'
|
232
232
|
requirements: []
|
233
|
-
rubygems_version: 3.
|
233
|
+
rubygems_version: 3.1.4
|
234
234
|
signing_key:
|
235
235
|
specification_version: 4
|
236
236
|
summary: A release control and management system for postgresql
|