dm-cli 0.9.5 → 0.9.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.
- data/Rakefile +1 -1
- data/bin/dm +2 -3
- data/lib/dm-cli/cli.rb +75 -36
- data/lib/dm-cli/version.rb +1 -1
- metadata +3 -3
data/Rakefile
CHANGED
@@ -46,7 +46,7 @@ end
|
|
46
46
|
desc "Run specifications"
|
47
47
|
Spec::Rake::SpecTask.new(:spec) do |t|
|
48
48
|
t.spec_opts << "--options" << "spec/spec.opts" if File.exists?("spec/spec.opts")
|
49
|
-
t.spec_files = Pathname.glob(
|
49
|
+
t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
|
50
50
|
|
51
51
|
begin
|
52
52
|
t.rcov = ENV.has_key?("NO_RCOV") ? ENV["NO_RCOV"] != "true" : true
|
data/bin/dm
CHANGED
@@ -3,9 +3,8 @@ require "rubygems"
|
|
3
3
|
|
4
4
|
gem "dm-core", ">=0.9.5"
|
5
5
|
require "dm-core"
|
6
|
-
require "
|
7
|
-
require Pathname("data_mapper/cli")
|
6
|
+
require "dm-cli"
|
8
7
|
require "optparse"
|
9
8
|
|
10
9
|
DataMapper::CLI::BinDir = File.dirname(__FILE__)
|
11
|
-
DataMapper::CLI.start
|
10
|
+
DataMapper::CLI.start
|
data/lib/dm-cli/cli.rb
CHANGED
@@ -17,15 +17,19 @@ dm - Data Mapper CLI
|
|
17
17
|
|
18
18
|
Usage Examples\n#{'='*80}
|
19
19
|
|
20
|
-
* If
|
20
|
+
* If one argument is given the CLI assumes it is a connection string:
|
21
21
|
$ dm mysql://root@localhost/test_development
|
22
22
|
|
23
23
|
The connection string has the format:
|
24
24
|
adapter://user:password@host:port/database
|
25
25
|
Where adapter is in: {mysql, pgsql, sqlite...} and the user/password is optional
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
Note that if there are any non-optional arguments specified, the first is
|
28
|
+
assumed to be a database connection string which will be used instead of any
|
29
|
+
database specified by options.
|
30
|
+
|
31
|
+
* Load the database by specifying cli options
|
32
|
+
$ dm -a mysql -u root -h localhost -d test_development
|
29
33
|
|
30
34
|
* Load the database using a yaml config file and specifying the environment to use
|
31
35
|
$ dm --yaml config/database.yml -e development
|
@@ -41,6 +45,12 @@ dm - Data Mapper CLI
|
|
41
45
|
|
42
46
|
This is similar to merb -i without the merb framework being loaded.
|
43
47
|
|
48
|
+
* Load the dm-validations and dm-timestamps plugins before connecting to the db
|
49
|
+
$ dm -P validations,dm-timestamps mysql://root@localhost/test_development
|
50
|
+
|
51
|
+
If dm- isn't at the start of the file, it will be prepended.
|
52
|
+
|
53
|
+
|
44
54
|
USAGE
|
45
55
|
end
|
46
56
|
|
@@ -77,8 +87,8 @@ USAGE
|
|
77
87
|
end
|
78
88
|
end
|
79
89
|
|
80
|
-
opt.on("-l", "--log LOGFILE", "A string representing the logfile to use.") do |log_file|
|
81
|
-
@config[:log_file] =
|
90
|
+
opt.on("-l", "--log LOGFILE", "A string representing the logfile to use. Also accepts STDERR and STDOUT") do |log_file|
|
91
|
+
@config[:log_file] = log_file
|
82
92
|
end
|
83
93
|
|
84
94
|
opt.on("-e", "--environment STRING", "Run merb in the correct mode(development, production, testing)") do |environment|
|
@@ -113,6 +123,10 @@ USAGE
|
|
113
123
|
@config[:database] = database_name
|
114
124
|
end
|
115
125
|
|
126
|
+
opt.on("-P", "--plugins PLUGIN,PLUGIN...", "A list of dm-plugins to require", Array) do |plugins|
|
127
|
+
@config[:plugins] = plugins
|
128
|
+
end
|
129
|
+
|
116
130
|
opt.on("-?", "-H", "--help", "Show this help message") do
|
117
131
|
puts opt
|
118
132
|
exit
|
@@ -123,42 +137,57 @@ USAGE
|
|
123
137
|
end
|
124
138
|
|
125
139
|
def configure(args)
|
126
|
-
|
140
|
+
|
141
|
+
parse_args(args)
|
142
|
+
|
143
|
+
@config[:environment] ||= "development"
|
144
|
+
if @config[:config]
|
145
|
+
@config.merge!(YAML::load_file(@config[:config]))
|
146
|
+
@options = @config[:options]
|
147
|
+
elsif @config[:yaml]
|
148
|
+
@config.merge!(YAML::load_file(@config[:yaml]))
|
149
|
+
@options = @config[@config[:environment]] || @config[@config[:environment].to_sym]
|
150
|
+
raise "Options for environment '#{@config[:environment]}' are missing." if @options.nil?
|
151
|
+
else
|
127
152
|
@options = {
|
128
|
-
:adapter =>
|
129
|
-
:username =>
|
130
|
-
:password =>
|
131
|
-
:host =>
|
132
|
-
:database =>
|
153
|
+
:adapter => @config[:adapter],
|
154
|
+
:username => @config[:username],
|
155
|
+
:password => @config[:password],
|
156
|
+
:host => @config[:host],
|
157
|
+
:database => @config[:database]
|
133
158
|
}
|
134
|
-
|
135
|
-
|
159
|
+
end
|
160
|
+
if !ARGV.empty?
|
161
|
+
@config[:connection_string] = ARGV.shift
|
162
|
+
end
|
136
163
|
|
137
|
-
|
164
|
+
end
|
138
165
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
@options = @config[:options]
|
143
|
-
elsif @config[:yaml]
|
144
|
-
@config.merge!(YAML::load_file(@config[:yaml]))
|
145
|
-
@options = @config[@config[:environment]] || @config[@config[:environment].to_sym]
|
146
|
-
raise "Options for environment '#{@config[:environment]}' are missing." if @options.nil?
|
147
|
-
else
|
148
|
-
@options = {
|
149
|
-
:adapter => @config[:adapter],
|
150
|
-
:username => @config[:username],
|
151
|
-
:password => @config[:password],
|
152
|
-
:host => @config[:host],
|
153
|
-
:database => @config[:database]
|
154
|
-
}
|
155
|
-
end
|
166
|
+
def load_models
|
167
|
+
Pathname.glob("#{config[:models]}/**/*.rb") { |file| load file }
|
168
|
+
end
|
156
169
|
|
170
|
+
def require_plugins
|
171
|
+
# make sure we're loading dm plugins!
|
172
|
+
plugins = config[:plugins].map {|p| (p =~ /^dm/) ? p : "dm-" + p }
|
173
|
+
plugins.each do |plugin|
|
174
|
+
begin
|
175
|
+
require plugin
|
176
|
+
puts "required #{plugin}."
|
177
|
+
rescue LoadError => e
|
178
|
+
puts "couldn't load #{plugin}."
|
179
|
+
end
|
157
180
|
end
|
158
181
|
end
|
159
182
|
|
160
|
-
def
|
161
|
-
|
183
|
+
def setup_logger
|
184
|
+
if config[:log_file] =~ /^std(?:out|err)$/i
|
185
|
+
log = Object.full_const_get(config[:log_file].upcase)
|
186
|
+
else
|
187
|
+
log = Pathname(config[:log_file])
|
188
|
+
end
|
189
|
+
|
190
|
+
DataMapper::Logger.new(log, :debug)
|
162
191
|
end
|
163
192
|
|
164
193
|
def start(argv = ARGV)
|
@@ -169,10 +198,20 @@ USAGE
|
|
169
198
|
|
170
199
|
begin
|
171
200
|
configure(argv)
|
172
|
-
|
201
|
+
|
202
|
+
require_plugins if config[:plugins]
|
203
|
+
|
204
|
+
setup_logger if config[:log_file]
|
205
|
+
|
206
|
+
if config[:connection_string]
|
207
|
+
DataMapper.setup(:default, config[:connection_string])
|
208
|
+
puts "DataMapper has been loaded using '#{config[:connection_string]}'"
|
209
|
+
else
|
210
|
+
DataMapper.setup(:default, options.dup)
|
211
|
+
puts "DataMapper has been loaded using the '#{options[:adapter] || options["adapter"]}' database '#{options[:database] || options["database"]}' on '#{options[:host] || options["host"]}' as '#{options[:username] || options["username"]}'"
|
212
|
+
end
|
173
213
|
load_models if config[:models]
|
174
|
-
|
175
|
-
ENV["IRBRC"] = DataMapper::CLI::BinDir + "/.irbrc" # Do not change this please. This should NOT be DataMapper.root
|
214
|
+
ENV["IRBRC"] ||= DataMapper::CLI::BinDir + "/.irbrc" # Do not change this please. This should NOT be DataMapper.root
|
176
215
|
IRB.start
|
177
216
|
rescue => error
|
178
217
|
puts error.message
|
data/lib/dm-cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wayne E. Seguin
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-10-12 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.9.
|
23
|
+
version: 0.9.6
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: hoe
|