pg_migrate 0.1.7 → 0.1.11
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/.gitignore +34 -34
- data/.gitmodules +3 -3
- data/Gemfile +9 -9
- data/Gemfile.lock +39 -39
- data/LICENSE +21 -21
- data/README.md +33 -33
- data/Rakefile +2 -2
- data/bin/pg_migrate +6 -6
- data/lib/pg_migrate/builder.rb +214 -214
- data/lib/pg_migrate/command_line.rb +242 -242
- data/lib/pg_migrate/config_parser.rb +48 -48
- data/lib/pg_migrate/manifest_reader.rb +102 -102
- data/lib/pg_migrate/migration.rb +11 -11
- data/lib/pg_migrate/migrator.rb +94 -94
- data/lib/pg_migrate/package.rb +152 -152
- data/lib/pg_migrate/package_templates/Gemfile.erb +3 -3
- data/lib/pg_migrate/package_templates/bin/migrate.rb +9 -9
- data/lib/pg_migrate/package_templates/gemspec.erb +21 -21
- data/lib/pg_migrate/package_templates/lib/gem/version.rb +3 -3
- data/lib/pg_migrate/package_templates/lib/gem.rb +12 -12
- data/lib/pg_migrate/props.rb +19 -19
- data/lib/pg_migrate/sql_reader.rb +51 -51
- data/lib/pg_migrate/templates/bootstrap.erb +175 -175
- data/lib/pg_migrate/templates/up.erb +30 -30
- data/lib/pg_migrate/util.rb +73 -73
- data/lib/pg_migrate/version.rb +3 -3
- data/lib/pg_migrate.rb +40 -40
- data/pg_migrate.gemspec +29 -28
- data/spec/database.yml +8 -8
- data/spec/pg_migrate/builder_spec.rb +113 -113
- data/spec/pg_migrate/command_line_spec.rb +53 -53
- data/spec/pg_migrate/config_parser_spec.rb +18 -18
- data/spec/pg_migrate/db_utility.rb +73 -73
- data/spec/pg_migrate/input_manifests/single_manifest/manifest +3 -3
- data/spec/pg_migrate/input_manifests/single_manifest/up/single1.sql +29 -29
- data/spec/pg_migrate/manifest_reader_spec.rb +19 -19
- data/spec/pg_migrate/migrator_spec.rb +68 -68
- data/spec/pg_migrate/package_spec.rb +38 -38
- data/spec/pg_migrate/sql_reader_spec.rb +21 -21
- data/spec/spec_helper.rb +15 -15
- metadata +5 -5
@@ -1,242 +1,242 @@
|
|
1
|
-
module PgMigrate
|
2
|
-
class CommandLine < Thor
|
3
|
-
|
4
|
-
@@packaged_source = '.'
|
5
|
-
|
6
|
-
def initialize(*args)
|
7
|
-
super
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.packaged_source
|
11
|
-
@@packaged_source
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.packaged_source=(value)
|
15
|
-
@@packaged_source = value
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
desc "up", "migrates the database forwards, applying migrations found in the source directory"
|
20
|
-
method_option :source, :aliases => "-s", :default => nil, :banner => 'input directory', :desc => "a pg_migrate built manifest. Should contain your processed manifest and up|down|test folders"
|
21
|
-
method_option :connopts, :aliases => "-c", :type => :hash, :banner => "connection options", :desc => "database connection options used by gem 'pg': dbname|host|hostaddr|port|user|password|connection_timeout|options|sslmode|krbsrvname|gsslib|service"
|
22
|
-
method_option :verbose, :aliases => "-v", :type => :boolean, :banner => "verbose", :desc=> "set to raise verbosity"
|
23
|
-
|
24
|
-
def up
|
25
|
-
source = options[:source]
|
26
|
-
|
27
|
-
if source.nil?
|
28
|
-
source = @@packaged_source
|
29
|
-
end
|
30
|
-
|
31
|
-
method_defaults = {"verbose" => false}
|
32
|
-
local_options = set_defaults_from_file(method_defaults, "up", source)
|
33
|
-
local_options = local_options.merge(options)
|
34
|
-
|
35
|
-
bootstrap_logger(local_options["verbose"])
|
36
|
-
|
37
|
-
manifest_reader = ManifestReader.new
|
38
|
-
sql_reader = SqlReader.new
|
39
|
-
|
40
|
-
connopts = local_options["connopts"]
|
41
|
-
connopts ||= {}
|
42
|
-
|
43
|
-
if !connopts["port"].nil?
|
44
|
-
connopts["port"] = connopts["port"].to_i
|
45
|
-
end
|
46
|
-
|
47
|
-
migrator = Migrator.new(manifest_reader, sql_reader, connopts)
|
48
|
-
|
49
|
-
begin
|
50
|
-
migrator.migrate(source)
|
51
|
-
rescue Exception => e
|
52
|
-
if !local_options["verbose"]
|
53
|
-
# catch common exceptions and make pretty on command-line
|
54
|
-
if !e.message.index("ManifestReader: code=unloadable_manifest").nil?
|
55
|
-
puts "Unable to load manifest in source directory '#{source}' . Check -s|--source option and run again."
|
56
|
-
exit 1
|
57
|
-
else
|
58
|
-
raise e
|
59
|
-
end
|
60
|
-
else
|
61
|
-
raise e
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
desc "down", "not implemented"
|
69
|
-
|
70
|
-
def down
|
71
|
-
local_options = options
|
72
|
-
options = set_defaults_from_file(location_options)
|
73
|
-
bootstrap_logger(options[:verbose])
|
74
|
-
|
75
|
-
raise 'Not implemented'
|
76
|
-
end
|
77
|
-
|
78
|
-
desc "build", "processes a pg_migrate source directory and places the result in the specified output directory"
|
79
|
-
method_option :source, :aliases => "-s", :default => nil, :banner => 'input directory', :desc => "the input directory containing a manifest file and up|down|test folders"
|
80
|
-
method_option :out, :aliases => "-o", :banner => "output directory", :desc => "where the processed migrations will be placed"
|
81
|
-
method_option :force, :aliases => "-f", :type => :boolean, :banner => "overwrite out", :desc => "if specified, the out directory will be created before processing occurs, replacing any existing directory"
|
82
|
-
method_option :verbose, :aliases => "-v", :type => :boolean, :banner => "verbose", :desc=> "set to raise verbosity"
|
83
|
-
method_option :test, :aliases => "-t", :default => false, :type => :boolean, :banner => "run tests", :desc => "run tests by creating a test database and executing migrations"
|
84
|
-
method_option :oob_connopts, :aliases => "-b",:default=> nil, :type => :hash, :banner => "out-of-band connection options", :desc => "this is a 'landing pad' database from which pg_migrate can execute 'create/drop' against the database specified by the connopts argument. database connection options used by gem 'pg': dbname|host|hostaddr|port|user|password|connection_timeout|options|sslmode|krbsrvname|gsslib|service"
|
85
|
-
method_option :connopts, :aliases => "-c", :default => nil, :type => :hash, :banner => "connection options", :desc => "database connection options used by gem 'pg': dbname|host|hostaddr|port|user|password|connection_timeout|options|sslmode|krbsrvname|gsslib|service"
|
86
|
-
|
87
|
-
def build
|
88
|
-
source = options[:source]
|
89
|
-
|
90
|
-
if source.nil?
|
91
|
-
source = @@packaged_source
|
92
|
-
end
|
93
|
-
|
94
|
-
method_defaults = {"force" => false, "verbose" => false, "test" => false}
|
95
|
-
local_options = set_defaults_from_file(method_defaults, "build", source)
|
96
|
-
local_options = local_options.merge(options)
|
97
|
-
|
98
|
-
bootstrap_logger(local_options["verbose"])
|
99
|
-
|
100
|
-
if !local_options["out"]
|
101
|
-
puts "error: --out not specified"
|
102
|
-
exit 1
|
103
|
-
end
|
104
|
-
|
105
|
-
if local_options["test"].to_s == "true"
|
106
|
-
if !local_options["oob_connopts"]
|
107
|
-
puts "error: --oob_connopts not specified when test = true"
|
108
|
-
exit 1
|
109
|
-
else
|
110
|
-
# type safety; if string is found, convert to hash
|
111
|
-
local_options["oob_connopts"] = parse_to_hash(local_options["oob_connopts"])
|
112
|
-
end
|
113
|
-
|
114
|
-
|
115
|
-
if !local_options["connopts"]
|
116
|
-
puts "error: --connopts not specified when test = true"
|
117
|
-
exit 1
|
118
|
-
else
|
119
|
-
# type safety; if string is found, convert to hash
|
120
|
-
local_options["connopts"] = parse_to_hash(local_options["connopts"])
|
121
|
-
end
|
122
|
-
|
123
|
-
end
|
124
|
-
|
125
|
-
manifest_reader = ManifestReader.new
|
126
|
-
sql_reader = SqlReader.new
|
127
|
-
builder = Builder.new(manifest_reader, sql_reader)
|
128
|
-
|
129
|
-
begin
|
130
|
-
builder.build(source, local_options["out"],
|
131
|
-
:force => local_options["force"],
|
132
|
-
:test => local_options["test"],
|
133
|
-
:oob_connopts => local_options["oob_connopts"],
|
134
|
-
:connopts => local_options["connopts"])
|
135
|
-
rescue PG::Error => pge
|
136
|
-
puts "test failure"
|
137
|
-
puts pge
|
138
|
-
exit 1
|
139
|
-
end
|
140
|
-
|
141
|
-
end
|
142
|
-
|
143
|
-
|
144
|
-
desc "package", "packages a built pg_migrate project into a custom gem containing schemas and simpler migration interface"
|
145
|
-
method_option :source, :aliases => "-s", :default => nil, :banner => 'input directory', :desc => "the input directory containing a manifest file and up|down|test folders that has been previously built by pg_migrate build"
|
146
|
-
method_option :out, :aliases => "-o", :banner => "output directory", :desc => "where the gem will be placed (as well as the exploded gem's contents)"
|
147
|
-
method_option :name, :aliases => "-n", :banner => "the name of the schema gem", :desc => "the name of the gem"
|
148
|
-
method_option :version, :aliases => "-e", :banner => "the version of the schema gem", :desc => "the version of the gem"
|
149
|
-
method_option :force, :aliases => "-f", :type => :boolean, :banner => "overwrite out", :desc => "if specified, the out directory will be created before processing occurs, replacing any existing directory"
|
150
|
-
method_option :verbose, :aliases => "-v", :type => :boolean, :banner => "verbose", :desc=> "set to raise verbosity"
|
151
|
-
|
152
|
-
def package
|
153
|
-
source = options[:source]
|
154
|
-
|
155
|
-
if source.nil?
|
156
|
-
source = @@packaged_source
|
157
|
-
end
|
158
|
-
|
159
|
-
method_defaults = {"force" => false, "verbose" => false}
|
160
|
-
local_options = set_defaults_from_file(method_defaults, "package", source)
|
161
|
-
local_options = local_options.merge(options)
|
162
|
-
|
163
|
-
if !local_options["out"]
|
164
|
-
puts "error: --out not specified"
|
165
|
-
exit 1
|
166
|
-
end
|
167
|
-
if !local_options["name"]
|
168
|
-
puts "error: --version not specified"
|
169
|
-
exit 1
|
170
|
-
end
|
171
|
-
if !local_options["version"]
|
172
|
-
puts "error: --version not specified"
|
173
|
-
exit 1
|
174
|
-
end
|
175
|
-
|
176
|
-
bootstrap_logger(local_options["verbose"])
|
177
|
-
|
178
|
-
manifest_reader = ManifestReader.new
|
179
|
-
builder = Package.new(manifest_reader)
|
180
|
-
builder.package(source, local_options["out"], local_options["name"], local_options["version"], :force => local_options["force"])
|
181
|
-
end
|
182
|
-
|
183
|
-
no_tasks do
|
184
|
-
def bootstrap_logger(verbose)
|
185
|
-
# bootstrap logger
|
186
|
-
if verbose
|
187
|
-
Logging.logger.root.level = :debug
|
188
|
-
else
|
189
|
-
Logging.logger.root.level = :info
|
190
|
-
end
|
191
|
-
|
192
|
-
Logging.logger.root.appenders = Logging.appenders.stdout
|
193
|
-
end
|
194
|
-
|
195
|
-
|
196
|
-
def set_defaults_from_file(default_options, context, source)
|
197
|
-
@file_defaults = @file_defaults ||= load_file(context, source)
|
198
|
-
merged = default_options.merge(@file_defaults)
|
199
|
-
end
|
200
|
-
|
201
|
-
def load_file(context, source)
|
202
|
-
|
203
|
-
defaults = nil
|
204
|
-
config = File.join(source, PG_CONFIG)
|
205
|
-
if FileTest::exist? (config)
|
206
|
-
puts "found #{PG_CONFIG}"
|
207
|
-
defaults = Properties.new(config)
|
208
|
-
else
|
209
|
-
defaults = Properties.new
|
210
|
-
end
|
211
|
-
|
212
|
-
map = {}
|
213
|
-
defaults.each_pair do |k, v|
|
214
|
-
map[k.upcase] = v
|
215
|
-
|
216
|
-
# make a context-removed version of a key, if it starts with 'context.'
|
217
|
-
prefix = "#{context}."
|
218
|
-
if k.start_with? prefix
|
219
|
-
map[k[prefix.length..-1]] = v
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
return map
|
224
|
-
|
225
|
-
end
|
226
|
-
|
227
|
-
def parse_to_hash(value)
|
228
|
-
hash = {}
|
229
|
-
|
230
|
-
bits = value.split()
|
231
|
-
bits.each do |bit|
|
232
|
-
key, value = bit.split(':',2)
|
233
|
-
hash[key] = value
|
234
|
-
end
|
235
|
-
|
236
|
-
return hash
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
|
241
|
-
end
|
242
|
-
end
|
1
|
+
module PgMigrate
|
2
|
+
class CommandLine < Thor
|
3
|
+
|
4
|
+
@@packaged_source = '.'
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.packaged_source
|
11
|
+
@@packaged_source
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.packaged_source=(value)
|
15
|
+
@@packaged_source = value
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
desc "up", "migrates the database forwards, applying migrations found in the source directory"
|
20
|
+
method_option :source, :aliases => "-s", :default => nil, :banner => 'input directory', :desc => "a pg_migrate built manifest. Should contain your processed manifest and up|down|test folders"
|
21
|
+
method_option :connopts, :aliases => "-c", :type => :hash, :banner => "connection options", :desc => "database connection options used by gem 'pg': dbname|host|hostaddr|port|user|password|connection_timeout|options|sslmode|krbsrvname|gsslib|service"
|
22
|
+
method_option :verbose, :aliases => "-v", :type => :boolean, :banner => "verbose", :desc=> "set to raise verbosity"
|
23
|
+
|
24
|
+
def up
|
25
|
+
source = options[:source]
|
26
|
+
|
27
|
+
if source.nil?
|
28
|
+
source = @@packaged_source
|
29
|
+
end
|
30
|
+
|
31
|
+
method_defaults = {"verbose" => false}
|
32
|
+
local_options = set_defaults_from_file(method_defaults, "up", source)
|
33
|
+
local_options = local_options.merge(options)
|
34
|
+
|
35
|
+
bootstrap_logger(local_options["verbose"])
|
36
|
+
|
37
|
+
manifest_reader = ManifestReader.new
|
38
|
+
sql_reader = SqlReader.new
|
39
|
+
|
40
|
+
connopts = local_options["connopts"]
|
41
|
+
connopts ||= {}
|
42
|
+
|
43
|
+
if !connopts["port"].nil?
|
44
|
+
connopts["port"] = connopts["port"].to_i
|
45
|
+
end
|
46
|
+
|
47
|
+
migrator = Migrator.new(manifest_reader, sql_reader, connopts)
|
48
|
+
|
49
|
+
begin
|
50
|
+
migrator.migrate(source)
|
51
|
+
rescue Exception => e
|
52
|
+
if !local_options["verbose"]
|
53
|
+
# catch common exceptions and make pretty on command-line
|
54
|
+
if !e.message.index("ManifestReader: code=unloadable_manifest").nil?
|
55
|
+
puts "Unable to load manifest in source directory '#{source}' . Check -s|--source option and run again."
|
56
|
+
exit 1
|
57
|
+
else
|
58
|
+
raise e
|
59
|
+
end
|
60
|
+
else
|
61
|
+
raise e
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
desc "down", "not implemented"
|
69
|
+
|
70
|
+
def down
|
71
|
+
local_options = options
|
72
|
+
options = set_defaults_from_file(location_options)
|
73
|
+
bootstrap_logger(options[:verbose])
|
74
|
+
|
75
|
+
raise 'Not implemented'
|
76
|
+
end
|
77
|
+
|
78
|
+
desc "build", "processes a pg_migrate source directory and places the result in the specified output directory"
|
79
|
+
method_option :source, :aliases => "-s", :default => nil, :banner => 'input directory', :desc => "the input directory containing a manifest file and up|down|test folders"
|
80
|
+
method_option :out, :aliases => "-o", :banner => "output directory", :desc => "where the processed migrations will be placed"
|
81
|
+
method_option :force, :aliases => "-f", :type => :boolean, :banner => "overwrite out", :desc => "if specified, the out directory will be created before processing occurs, replacing any existing directory"
|
82
|
+
method_option :verbose, :aliases => "-v", :type => :boolean, :banner => "verbose", :desc=> "set to raise verbosity"
|
83
|
+
method_option :test, :aliases => "-t", :default => false, :type => :boolean, :banner => "run tests", :desc => "run tests by creating a test database and executing migrations"
|
84
|
+
method_option :oob_connopts, :aliases => "-b",:default=> nil, :type => :hash, :banner => "out-of-band connection options", :desc => "this is a 'landing pad' database from which pg_migrate can execute 'create/drop' against the database specified by the connopts argument. database connection options used by gem 'pg': dbname|host|hostaddr|port|user|password|connection_timeout|options|sslmode|krbsrvname|gsslib|service"
|
85
|
+
method_option :connopts, :aliases => "-c", :default => nil, :type => :hash, :banner => "connection options", :desc => "database connection options used by gem 'pg': dbname|host|hostaddr|port|user|password|connection_timeout|options|sslmode|krbsrvname|gsslib|service"
|
86
|
+
|
87
|
+
def build
|
88
|
+
source = options[:source]
|
89
|
+
|
90
|
+
if source.nil?
|
91
|
+
source = @@packaged_source
|
92
|
+
end
|
93
|
+
|
94
|
+
method_defaults = {"force" => false, "verbose" => false, "test" => false}
|
95
|
+
local_options = set_defaults_from_file(method_defaults, "build", source)
|
96
|
+
local_options = local_options.merge(options)
|
97
|
+
|
98
|
+
bootstrap_logger(local_options["verbose"])
|
99
|
+
|
100
|
+
if !local_options["out"]
|
101
|
+
puts "error: --out not specified"
|
102
|
+
exit 1
|
103
|
+
end
|
104
|
+
|
105
|
+
if local_options["test"].to_s == "true"
|
106
|
+
if !local_options["oob_connopts"]
|
107
|
+
puts "error: --oob_connopts not specified when test = true"
|
108
|
+
exit 1
|
109
|
+
else
|
110
|
+
# type safety; if string is found, convert to hash
|
111
|
+
local_options["oob_connopts"] = parse_to_hash(local_options["oob_connopts"])
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
if !local_options["connopts"]
|
116
|
+
puts "error: --connopts not specified when test = true"
|
117
|
+
exit 1
|
118
|
+
else
|
119
|
+
# type safety; if string is found, convert to hash
|
120
|
+
local_options["connopts"] = parse_to_hash(local_options["connopts"])
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
manifest_reader = ManifestReader.new
|
126
|
+
sql_reader = SqlReader.new
|
127
|
+
builder = Builder.new(manifest_reader, sql_reader)
|
128
|
+
|
129
|
+
begin
|
130
|
+
builder.build(source, local_options["out"],
|
131
|
+
:force => local_options["force"],
|
132
|
+
:test => local_options["test"],
|
133
|
+
:oob_connopts => local_options["oob_connopts"],
|
134
|
+
:connopts => local_options["connopts"])
|
135
|
+
rescue PG::Error => pge
|
136
|
+
puts "test failure"
|
137
|
+
puts pge
|
138
|
+
exit 1
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
desc "package", "packages a built pg_migrate project into a custom gem containing schemas and simpler migration interface"
|
145
|
+
method_option :source, :aliases => "-s", :default => nil, :banner => 'input directory', :desc => "the input directory containing a manifest file and up|down|test folders that has been previously built by pg_migrate build"
|
146
|
+
method_option :out, :aliases => "-o", :banner => "output directory", :desc => "where the gem will be placed (as well as the exploded gem's contents)"
|
147
|
+
method_option :name, :aliases => "-n", :banner => "the name of the schema gem", :desc => "the name of the gem"
|
148
|
+
method_option :version, :aliases => "-e", :banner => "the version of the schema gem", :desc => "the version of the gem"
|
149
|
+
method_option :force, :aliases => "-f", :type => :boolean, :banner => "overwrite out", :desc => "if specified, the out directory will be created before processing occurs, replacing any existing directory"
|
150
|
+
method_option :verbose, :aliases => "-v", :type => :boolean, :banner => "verbose", :desc=> "set to raise verbosity"
|
151
|
+
|
152
|
+
def package
|
153
|
+
source = options[:source]
|
154
|
+
|
155
|
+
if source.nil?
|
156
|
+
source = @@packaged_source
|
157
|
+
end
|
158
|
+
|
159
|
+
method_defaults = {"force" => false, "verbose" => false}
|
160
|
+
local_options = set_defaults_from_file(method_defaults, "package", source)
|
161
|
+
local_options = local_options.merge(options)
|
162
|
+
|
163
|
+
if !local_options["out"]
|
164
|
+
puts "error: --out not specified"
|
165
|
+
exit 1
|
166
|
+
end
|
167
|
+
if !local_options["name"]
|
168
|
+
puts "error: --version not specified"
|
169
|
+
exit 1
|
170
|
+
end
|
171
|
+
if !local_options["version"]
|
172
|
+
puts "error: --version not specified"
|
173
|
+
exit 1
|
174
|
+
end
|
175
|
+
|
176
|
+
bootstrap_logger(local_options["verbose"])
|
177
|
+
|
178
|
+
manifest_reader = ManifestReader.new
|
179
|
+
builder = Package.new(manifest_reader)
|
180
|
+
builder.package(source, local_options["out"], local_options["name"], local_options["version"], :force => local_options["force"])
|
181
|
+
end
|
182
|
+
|
183
|
+
no_tasks do
|
184
|
+
def bootstrap_logger(verbose)
|
185
|
+
# bootstrap logger
|
186
|
+
if verbose
|
187
|
+
Logging.logger.root.level = :debug
|
188
|
+
else
|
189
|
+
Logging.logger.root.level = :info
|
190
|
+
end
|
191
|
+
|
192
|
+
Logging.logger.root.appenders = Logging.appenders.stdout
|
193
|
+
end
|
194
|
+
|
195
|
+
|
196
|
+
def set_defaults_from_file(default_options, context, source)
|
197
|
+
@file_defaults = @file_defaults ||= load_file(context, source)
|
198
|
+
merged = default_options.merge(@file_defaults)
|
199
|
+
end
|
200
|
+
|
201
|
+
def load_file(context, source)
|
202
|
+
|
203
|
+
defaults = nil
|
204
|
+
config = File.join(source, PG_CONFIG)
|
205
|
+
if FileTest::exist? (config)
|
206
|
+
puts "found #{PG_CONFIG}"
|
207
|
+
defaults = Properties.new(config)
|
208
|
+
else
|
209
|
+
defaults = Properties.new
|
210
|
+
end
|
211
|
+
|
212
|
+
map = {}
|
213
|
+
defaults.each_pair do |k, v|
|
214
|
+
map[k.upcase] = v
|
215
|
+
|
216
|
+
# make a context-removed version of a key, if it starts with 'context.'
|
217
|
+
prefix = "#{context}."
|
218
|
+
if k.start_with? prefix
|
219
|
+
map[k[prefix.length..-1]] = v
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
return map
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
def parse_to_hash(value)
|
228
|
+
hash = {}
|
229
|
+
|
230
|
+
bits = value.split()
|
231
|
+
bits.each do |bit|
|
232
|
+
key, value = bit.split(':',2)
|
233
|
+
hash[key] = value
|
234
|
+
end
|
235
|
+
|
236
|
+
return hash
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
|
241
|
+
end
|
242
|
+
end
|
@@ -1,49 +1,49 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
|
3
|
-
module PgMigrate
|
4
|
-
|
5
|
-
class ConfigParser
|
6
|
-
|
7
|
-
def self.rails(path, environment)
|
8
|
-
|
9
|
-
config = {}
|
10
|
-
|
11
|
-
rails_config = YAML.load_file(path)
|
12
|
-
|
13
|
-
if !rails_config.has_key?(environment)
|
14
|
-
raise "no environment #{environment} found in rails config file: #{path}"
|
15
|
-
end
|
16
|
-
|
17
|
-
rails_config = rails_config[environment]
|
18
|
-
|
19
|
-
# populate from rails YAML to PG
|
20
|
-
|
21
|
-
# required parameters 1st
|
22
|
-
if !rails_config.has_key?("database")
|
23
|
-
raise "no database key found in #{path} with environment #{environment}"
|
24
|
-
end
|
25
|
-
|
26
|
-
config[:dbname] = rails_config["database"]
|
27
|
-
|
28
|
-
if rails_config.has_key?("host")
|
29
|
-
config[:host] = rails_config["host"]
|
30
|
-
end
|
31
|
-
|
32
|
-
if rails_config.has_key?("port")
|
33
|
-
config[:port] = rails_config["port"]
|
34
|
-
end
|
35
|
-
|
36
|
-
if rails_config.has_key?("username")
|
37
|
-
config[:user] = rails_config["username"]
|
38
|
-
end
|
39
|
-
|
40
|
-
if rails_config.has_key?("password")
|
41
|
-
config[:password] = rails_config["password"]
|
42
|
-
end
|
43
|
-
|
44
|
-
return config
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module PgMigrate
|
4
|
+
|
5
|
+
class ConfigParser
|
6
|
+
|
7
|
+
def self.rails(path, environment)
|
8
|
+
|
9
|
+
config = {}
|
10
|
+
|
11
|
+
rails_config = YAML.load_file(path)
|
12
|
+
|
13
|
+
if !rails_config.has_key?(environment)
|
14
|
+
raise "no environment #{environment} found in rails config file: #{path}"
|
15
|
+
end
|
16
|
+
|
17
|
+
rails_config = rails_config[environment]
|
18
|
+
|
19
|
+
# populate from rails YAML to PG
|
20
|
+
|
21
|
+
# required parameters 1st
|
22
|
+
if !rails_config.has_key?("database")
|
23
|
+
raise "no database key found in #{path} with environment #{environment}"
|
24
|
+
end
|
25
|
+
|
26
|
+
config[:dbname] = rails_config["database"]
|
27
|
+
|
28
|
+
if rails_config.has_key?("host")
|
29
|
+
config[:host] = rails_config["host"]
|
30
|
+
end
|
31
|
+
|
32
|
+
if rails_config.has_key?("port")
|
33
|
+
config[:port] = rails_config["port"]
|
34
|
+
end
|
35
|
+
|
36
|
+
if rails_config.has_key?("username")
|
37
|
+
config[:user] = rails_config["username"]
|
38
|
+
end
|
39
|
+
|
40
|
+
if rails_config.has_key?("password")
|
41
|
+
config[:password] = rails_config["password"]
|
42
|
+
end
|
43
|
+
|
44
|
+
return config
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
49
|
end
|