lib/sportdb/cli/runner.rb in sportdb-0.1.0 vs lib/sportdb/cli/runner.rb in sportdb-0.2.0
- old
+ new
@@ -10,18 +10,21 @@
@opts = Opts.new
end
attr_reader :logger, :opts
+
def run( args )
opt=OptionParser.new do |cmd|
cmd.banner = "Usage: sportdb [options]"
## todo: change to different flag?? use -c/--config ???
cmd.on( '-c', '--create', 'Create DB Schema' ) { opts.create = true }
+ cmd.on( '--load', 'Use Loader for Builtin Sports Data' ) { opts.load = true }
+
cmd.on( '-o', '--output PATH', "Output Path (default is #{opts.output_path})" ) { |path| opts.output_path = path }
### todo: in future allow multiple search path??
cmd.on( '-i', '--include PATH', "Data Path (default is #{opts.data_path})" ) { |path| opts.data_path = path }
@@ -78,12 +81,34 @@
if opts.create?
CreateDB.up
end
+ loader = nil
+ if opts.load?
+ loader = Loader.new
+ end
+
args.each do |arg|
name = arg # File.basename( arg, '.*' )
+
+ if opts.load?
+ loader.load_fixtures( name ) # load from gem (built-in)
+ else
+ load_fixtures( name ) # load from file system
+ end
+ end
+
+ dump_stats
+ dump_props
+
+ puts 'Done.'
+
+ end # method run
+
+
+ def load_fixtures( name )
path = "#{opts.data_path}/#{name}.rb"
puts "*** loading data '#{name}' (#{path})..."
text = File.read( path )
@@ -98,19 +123,14 @@
# require path
# require "#{Dir.pwd}/db/#{seed}.rb"
# Prop.create!( :key => "db.#{name}.version", :value => SportDB::VERSION )
-
- end
-
- dump_stats
- dump_props
-
- puts 'Done.'
-
- end # method run
+ end
+
+
+ ##### fix/todo: reuse between runner/loader - include w/ helper module?
def dump_stats
# todo: use %5d or similar to format string
puts "Stats:"
puts " #{Event.count} events"
puts " #{Team.count} teams"
\ No newline at end of file