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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd62ad39d6f79354d9eb4e68e102cbe2fa45c3c83f3bb670bb67cc91faab2b6c
4
- data.tar.gz: 1802956bd55eafd32b16ff2d473e7b8c4f22ffaa2526ab83afb1c8d271b3fe37
3
+ metadata.gz: d22544dd4510ae8e2ca01c940e3020dab601ac8661429be316fa549576f54ab1
4
+ data.tar.gz: f94264fb4beea7ede50dd57ede3902e6128ced4230177c6a6a5bbb84662b7f67
5
5
  SHA512:
6
- metadata.gz: c8b1553cba9e5afe792b1f3119ffb9b85e23626d830b752dc98ee5bd28e4c7eeaf8e7b50acb52cfe9e32dcf935d8dcd99694bf2d1d29ebd830c1a9abcb852f38
7
- data.tar.gz: 3a189a2dff6750afc58f01189dc86fd671b605f5281e17d725607483e0d2f24603f54cc9071145dcfa681109d971da8736a5e81be454b3b1d3d3ee055060f92f
6
+ metadata.gz: d1f1b9222fd94b4fdf66137f307c19efe64cdbcc301b00a5904ce7013eedb7652aaf3a5dbabbe0defad7b9f8d7e396a1efbc73fe568d83f46e5c4ef79b9b6760
7
+ data.tar.gz: 7eaeb1c2923ed69188e51c071097cca27a1c66d90226f26e99ff26d9e4c7540912ed62be74fda30006d914077faa70e9d384dc02bdbd9e4d0b9753f08f66af92
data/exe/prick CHANGED
@@ -251,7 +251,7 @@ begin
251
251
  program.save(version, file)
252
252
 
253
253
  when :drop
254
- program.drop(args.expect(0..1), opts.drop!.all)
254
+ program.drop(args.expect(0..1), opts.drop!.all?)
255
255
 
256
256
  when :diff
257
257
  mark = opts.diff!.mark
data/lib/prick.rb CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- $LOAD_PATH.unshift("/home/clr/prj/shellopts/lib")
2
+ #$LOAD_PATH.unshift("/home/clr/prj/shellopts/lib")
3
3
 
4
4
  # 'semantic' is required here instead of in prick/version.rb to avoid having Gem depend on it
5
5
  require "semantic"
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}, #{name}.* executable
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
- # If a directory doesn't contain a build resource, the resources in the
21
- # directory are built in alphabetic order
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 "#{file} #{database.name} #{database.user}" # FIXME Security
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
@@ -162,7 +162,7 @@ module Prick
162
162
  end
163
163
 
164
164
  def prepare_schema(name)
165
- raise NotYet
165
+ project.prepare_schema(name)
166
166
  end
167
167
 
168
168
  def prepare_diff(version = nil)
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 public;"
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() SchemaBuilder.yml_file(SCHEMA_DIR) end
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
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Required by gem
6
6
  module Prick
7
- VERSION = "0.7.0"
7
+ VERSION = "0.12.0"
8
8
  end
9
9
 
10
10
  # Project related code starts here
@@ -1,5 +1,3 @@
1
1
 
2
2
  drop schema if exists [<SCHEMA>] cascade;
3
3
  create schema [<SCHEMA>];
4
-
5
- set search_path to [<SCHEMA>];
@@ -1,5 +1,3 @@
1
1
 
2
2
  drop schema if exists prick cascade;
3
3
  create schema prick;
4
-
5
- set search_path to prick;
@@ -1,7 +1,6 @@
1
1
  # Default schema files
2
2
  #
3
3
  ---
4
- - schema
5
4
  - roles
6
5
  - types
7
6
  - tables
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.7.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-02-10 00:00:00.000000000 Z
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.4
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
@@ -1,3 +0,0 @@
1
- set search_path to public;
2
-
3
-