prick 0.7.0 → 0.12.0
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/exe/prick +1 -1
- data/lib/prick.rb +1 -1
- data/lib/prick/builder.rb +26 -9
- data/lib/prick/program.rb +1 -1
- data/lib/prick/project.rb +10 -0
- data/lib/prick/rdbms.rb +5 -6
- data/lib/prick/schema.rb +2 -1
- data/lib/prick/version.rb +1 -1
- data/share/schema/schema.sql +0 -2
- data/share/schema/schema/prick/schema.sql +0 -2
- data/share/schema/schema/public/build.yml +0 -1
- metadata +3 -4
- data/share/schema/schema/public/schema.sql +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d22544dd4510ae8e2ca01c940e3020dab601ac8661429be316fa549576f54ab1
|
4
|
+
data.tar.gz: f94264fb4beea7ede50dd57ede3902e6128ced4230177c6a6a5bbb84662b7f67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1f1b9222fd94b4fdf66137f307c19efe64cdbcc301b00a5904ce7013eedb7652aaf3a5dbabbe0defad7b9f8d7e396a1efbc73fe568d83f46e5c4ef79b9b6760
|
7
|
+
data.tar.gz: 7eaeb1c2923ed69188e51c071097cca27a1c66d90226f26e99ff26d9e4c7540912ed62be74fda30006d914077faa70e9d384dc02bdbd9e4d0b9753f08f66af92
|
data/exe/prick
CHANGED
data/lib/prick.rb
CHANGED
data/lib/prick/builder.rb
CHANGED
@@ -7,18 +7,24 @@ module Prick
|
|
7
7
|
# and is used to match a build file. Build files are looked up in the
|
8
8
|
# following order:
|
9
9
|
#
|
10
|
-
# #{name}
|
10
|
+
# #{name} executable
|
11
|
+
# #{name}.* executable
|
11
12
|
# #{name}.yml
|
12
13
|
# #{name}.sql
|
13
14
|
# #{name}/
|
14
15
|
#
|
16
|
+
# The output from executable objects is expected to be SQL statements that
|
17
|
+
# are fed into postgres
|
18
|
+
#
|
15
19
|
# When a resource match a directory, the directory can contain a special
|
16
20
|
# default resource ('build' or 'migrate') that takes over the rest of the
|
17
21
|
# build process for that directory. Typically, you'll use the 'build.yml' or
|
18
|
-
# 'migrate.yml' to control the build order of the other resources
|
22
|
+
# 'migrate.yml' to control the build order of the other resources If a
|
23
|
+
# directory doesn't contain a build resource, the resources in the directory
|
24
|
+
# are built in alphabetic order
|
19
25
|
#
|
20
|
-
#
|
21
|
-
#
|
26
|
+
# Build (but not migration) SQL scripts and executables are executed with
|
27
|
+
# search path set to containing schema
|
22
28
|
#
|
23
29
|
class Builder
|
24
30
|
attr_reader :database
|
@@ -57,11 +63,11 @@ module Prick
|
|
57
63
|
Dir.chdir(dir) { yield(file) }
|
58
64
|
end
|
59
65
|
|
60
|
-
def do_sql(path)
|
66
|
+
def do_sql(path, schema: nil)
|
61
67
|
# puts "do_sql(#{path})"
|
62
68
|
do_dir(path) { |file|
|
63
69
|
if @execute
|
64
|
-
Rdbms.exec_file(database.name, file, user: database.user)
|
70
|
+
Rdbms.exec_file(database.name, file, user: database.user, schema: schema)
|
65
71
|
else
|
66
72
|
@lines += IO.readlines(file).map(&:chomp)
|
67
73
|
end
|
@@ -69,12 +75,12 @@ module Prick
|
|
69
75
|
true
|
70
76
|
end
|
71
77
|
|
72
|
-
def do_exe(path)
|
78
|
+
def do_exe(path, schema: nil)
|
73
79
|
# puts "do_exe(#{path})"
|
74
80
|
do_dir(path) { |file|
|
75
|
-
lines = Command.command "
|
81
|
+
lines = Command.command "./#{file} #{database.name} #{database.user}" # FIXME Security
|
76
82
|
if @execute
|
77
|
-
Rdbms.exec_sql(database.name, lines.join("\n"), database.user)
|
83
|
+
Rdbms.exec_sql(database.name, lines.join("\n"), user: database.user, schema: schema)
|
78
84
|
else
|
79
85
|
@lines += lines
|
80
86
|
end
|
@@ -159,6 +165,17 @@ module Prick
|
|
159
165
|
end
|
160
166
|
|
161
167
|
def self.yml_file(directory) File.join(directory, "build") + ".yml" end
|
168
|
+
|
169
|
+
protected
|
170
|
+
def do_sql(path)
|
171
|
+
schema = Dir.getwd.sub(/^.*schema\/([^\/]+)(?:\/.*)?$/, '\1')
|
172
|
+
super(path, schema: schema)
|
173
|
+
end
|
174
|
+
|
175
|
+
def do_exe(path)
|
176
|
+
schema = Dir.getwd.sub(/^.*schema\/([^\/]+)(?:\/.*)?$/, '\1')
|
177
|
+
super(path, schema: schema)
|
178
|
+
end
|
162
179
|
end
|
163
180
|
end
|
164
181
|
|
data/lib/prick/program.rb
CHANGED
data/lib/prick/project.rb
CHANGED
@@ -162,6 +162,16 @@ module Prick
|
|
162
162
|
self
|
163
163
|
end
|
164
164
|
|
165
|
+
def prepare_schema(name, commit: true)
|
166
|
+
path = File.join(SCHEMA_DIR, name)
|
167
|
+
FileUtils.mkdir_p(path)
|
168
|
+
Git.add Share.cp("schema/schema.sql", path, clobber: false, templates: { 'SCHEMA' => name })
|
169
|
+
Git.add Share.cp("schema/build.yml", path, clobber: false)
|
170
|
+
File.open(Schema.yml_file, "a") { |f| f.write("- #{name}\n") }
|
171
|
+
Git.add(Schema.yml_file)
|
172
|
+
submit "Added schema #{name}", commit
|
173
|
+
end
|
174
|
+
|
165
175
|
def prepare_diff(from_version = version)
|
166
176
|
begin
|
167
177
|
from_name = "#{name}-base"
|
data/lib/prick/rdbms.rb
CHANGED
@@ -4,16 +4,15 @@ require 'csv'
|
|
4
4
|
|
5
5
|
module Prick
|
6
6
|
module Rdbms
|
7
|
-
# extend Ensure
|
8
|
-
|
9
7
|
### EXECUTE SQL
|
10
8
|
|
11
9
|
# Execute the SQL statement and return stdout as an array of tuples
|
12
|
-
def self.exec_sql(db, sql, user: ENV['USER'])
|
10
|
+
def self.exec_sql(db, sql, user: ENV['USER'], schema: nil)
|
11
|
+
schema ||= "public"
|
13
12
|
stdout = Command.command %(
|
14
13
|
{
|
15
14
|
echo "set role #{user};"
|
16
|
-
echo "set search_path to
|
15
|
+
echo "set search_path to #{schema};"
|
17
16
|
cat <<'EOF'
|
18
17
|
#{sql}
|
19
18
|
EOF
|
@@ -23,8 +22,8 @@ EOF
|
|
23
22
|
end
|
24
23
|
|
25
24
|
# Execute the given file and return stdout as an array of tuples
|
26
|
-
def self.exec_file(db, file, user: ENV['USER'])
|
27
|
-
self.exec_sql(db, File.read(file), user: user)
|
25
|
+
def self.exec_file(db, file, user: ENV['USER'], schema: nil)
|
26
|
+
self.exec_sql(db, File.read(file), user: user, schema: schema)
|
28
27
|
end
|
29
28
|
|
30
29
|
# Execute the SQL statement and return the result as an array of record tuples
|
data/lib/prick/schema.rb
CHANGED
@@ -9,7 +9,8 @@ module Prick
|
|
9
9
|
|
10
10
|
# Note this models the SCHEMA_DIR directory, not a database schema
|
11
11
|
class Schema
|
12
|
-
def yml_file()
|
12
|
+
def yml_file() self.class.yml_file end
|
13
|
+
def self.yml_file() SchemaBuilder.yml_file(SCHEMA_DIR) end
|
13
14
|
|
14
15
|
def version() SchemaVersion.load end
|
15
16
|
def version=(version) SchemaVersion.new(version).write end
|
data/lib/prick/version.rb
CHANGED
data/share/schema/schema.sql
CHANGED
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.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: shellopts
|
@@ -133,7 +133,6 @@ files:
|
|
133
133
|
- share/schema/schema/prick/tables.sql
|
134
134
|
- share/schema/schema/public/.keep
|
135
135
|
- share/schema/schema/public/build.yml
|
136
|
-
- share/schema/schema/public/schema.sql
|
137
136
|
- test_assorted
|
138
137
|
- test_feature
|
139
138
|
- test_refactor
|
@@ -156,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
155
|
- !ruby/object:Gem::Version
|
157
156
|
version: '0'
|
158
157
|
requirements: []
|
159
|
-
rubygems_version: 3.1.
|
158
|
+
rubygems_version: 3.1.2
|
160
159
|
signing_key:
|
161
160
|
specification_version: 4
|
162
161
|
summary: A release control and management system for postgresql
|