pg_meta 0.2.4 → 0.2.6

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: 41bfef6f94d3f36e05970e1e7894f7cbf31a5658d424186caa10deb6b14adc5d
4
- data.tar.gz: 2c2b1e00874ee2d7c33ca83fd22a10a6367b21656ef0d4653a6289b3e2874814
3
+ metadata.gz: f0d741d0b68b88b139a2dbd981877cce8f73678d975187f4953fbdc07eab2d3a
4
+ data.tar.gz: 6d5783a4deb8d4141ee423126a5d17325bbff9682b5839493ad1f97c28e99496
5
5
  SHA512:
6
- metadata.gz: c7815f55fea97137928df544fb2456ab4c7aa10e4eee0727491ed18904c63ed9c48c4a024e56db48e5c669b9e6c3fecb83bcfacb13ff6a0dfe8bd8eb57a4a0b3
7
- data.tar.gz: 022334e098b1f5cd42ea2a503421a46c5ced08637ff4d50414e9e77e8b482fac9fe976b5e507224828b4ae0fc9e2dba46e1559b8b5d7332a7197e8db9cbd10e3
6
+ metadata.gz: b001fd75b740c0802b8b5ff30c6bbe9497172e84585f71afffb272bb75dad67bf3f28c8d5fe4be28b57d620fc5fad770b8e36147370870064731c139adf2dc15
7
+ data.tar.gz: e4a7faf1ffd89e923af720fa97651e94edace462d9d6b7b496efabb0f22ce2905e1f5212b8d788f8df85365f7dc47e05e2ba201216e3ef002b1c3a68b1b7698d
data/exe/pg_meta CHANGED
@@ -6,6 +6,15 @@ require 'pg_meta'
6
6
  include ShellOpts
7
7
 
8
8
  SPEC = %(
9
+ @dump meta data
10
+
11
+ Dumps read database meta data. The source can be a live database or a cached
12
+ file in yaml or marshal format. The output is in human readable form but yaml
13
+ and marshal formats are also available
14
+
15
+ If a file is given as argument, the format is inferred from the extension:
16
+ .yml and .yaml vs. .marshal
17
+
9
18
  +e,exclude=SCHEMA
10
19
  Exclude SCHEMA. This option can be repeated
11
20
 
@@ -13,14 +22,25 @@ SPEC = %(
13
22
  Control format of output. FORMAT can be one of 'yaml', 'marshal' or the
14
23
  human-readable 'dump' format (the default)
15
24
 
16
- -- DATABASE
25
+ -- DATABASE|FILE
17
26
  )
18
27
 
19
28
  opts, args = ShellOpts.process(SPEC, ARGV, exception: false)
20
- database = args.expect(1)
21
-
22
- conn = PgConn.new(database)
23
- meta = PgMeta.new(conn, exclude_schemas: opts.exclude)
29
+ arg = args.expect(1)
30
+ p arg
31
+ if arg =~ /\.([^.]*)$/
32
+ p :gryf
33
+ ext = $1
34
+ case ext = $1
35
+ when "yaml", "yml"; meta = PgMeta.load_file(arg)
36
+ when "marshal"; meta = PgMeta.load_marshal(arg)
37
+ else
38
+ ShellOpts.error "Illegal file type: 'ext', expected 'yml', 'yaml', or 'marshall'"
39
+ end
40
+ else
41
+ conn = PgConn.new(arg)
42
+ meta = PgMeta.new(conn, exclude_schemas: opts.exclude)
43
+ end
24
44
 
25
45
  case opts.format
26
46
  when "yaml"; puts meta.to_yaml
@@ -4,7 +4,7 @@ module PgMeta
4
4
  using Ext::Hash
5
5
 
6
6
  # Create a Database object from the given YAML representation and return
7
- # it. The YAML representation can be generated by Database#to_h
7
+ # it. The YAML representation can be generated by Database#to_yaml
8
8
  def self.load_yaml(database_yaml)
9
9
  database = Database.new *database_yaml.project(:name, :owner)
10
10
 
@@ -60,7 +60,7 @@ module PgMeta
60
60
  referenced_constraint.table.send(:add_depending_table, table)
61
61
  }
62
62
 
63
- # Second pass: Build defining tables
63
+ # Third pass: Build defining tables
64
64
  views.each { |view, defining_relation_uids|
65
65
  defining_relation_uids.each { |uid|
66
66
  relation = database[uid]
@@ -1,3 +1,3 @@
1
1
  module PgMeta
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.6"
3
3
  end
data/lib/pg_meta.rb CHANGED
@@ -2,13 +2,13 @@
2
2
  require "pg"
3
3
  require "pg_conn"
4
4
 
5
- require "ext/hash.rb"
5
+ require_relative "pg_meta/ext/hash.rb"
6
6
 
7
- require "pg_meta/version.rb"
8
- require "pg_meta/meta.rb"
9
- require "pg_meta/load_conn.rb"
10
- require "pg_meta/load_yaml.rb"
11
- require "pg_meta/dump.rb"
7
+ require_relative "pg_meta/version.rb"
8
+ require_relative "pg_meta/meta.rb"
9
+ require_relative "pg_meta/load_conn.rb"
10
+ require_relative "pg_meta/load_yaml.rb"
11
+ require_relative "pg_meta/dump.rb"
12
12
 
13
13
  module PgMeta
14
14
  class Error < StandardError; end
@@ -23,6 +23,22 @@ module PgMeta
23
23
  Database.load_conn(PgConn.ensure(*args), exclude_schemas: exclude_schemas)
24
24
  end
25
25
 
26
+ def self.cache(*args, yaml: nil, marshal: nil, **opts)
27
+ yaml.nil? != marshal.nil? or raise ArgumentError, "Require either of :yaml or :marshal"
28
+ file = yaml || marshal
29
+ kind = yaml ? :yaml : :marshal
30
+ if File.exist?(file)
31
+ if yaml
32
+ load_file(file)
33
+ else
34
+ load_marshal(file)
35
+ end
36
+ else
37
+ db = self.new(*args, **opts)
38
+ IO.write(file, db.to_yaml)
39
+ end
40
+ end
41
+
26
42
  # Load data from a YAML object
27
43
  def self.load_yaml(yaml)
28
44
  Database.load_yaml(yaml)
@@ -30,6 +46,7 @@ module PgMeta
30
46
 
31
47
  # Load data from a YAML file
32
48
  def self.load_file(file)
49
+ exit
33
50
  load_yaml(YAML.load(IO.read file))
34
51
  end
35
52
 
data/pg_meta.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "pg"
26
26
 
27
27
  spec.add_dependency "pg_conn"
28
- spec.add_dependency "shellopts", "~> 2.1.0"
28
+ spec.add_dependency "shellopts"
29
29
 
30
30
  spec.add_development_dependency "bundler"
31
31
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_meta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-10 00:00:00.000000000 Z
11
+ date: 2024-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: indented_io
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: shellopts
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 2.1.0
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 2.1.0
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -141,9 +141,9 @@ files:
141
141
  - bin/console
142
142
  - bin/setup
143
143
  - exe/pg_meta
144
- - lib/ext/hash.rb
145
144
  - lib/pg_meta.rb
146
145
  - lib/pg_meta/dump.rb
146
+ - lib/pg_meta/ext/hash.rb
147
147
  - lib/pg_meta/load_conn.rb
148
148
  - lib/pg_meta/load_yaml.rb
149
149
  - lib/pg_meta/meta.rb
File without changes