lib/sportdb/cli/runner.rb in sportdb-0.7.2 vs lib/sportdb/cli/runner.rb in sportdb-0.8.0
- old
+ new
@@ -20,26 +20,31 @@
def run( args )
opt=OptionParser.new do |cmd|
cmd.banner = "Usage: sportdb [options]"
- cmd.on( '-e', '--event KEY', 'Event to load or generate' ) { |key| opts.event = key; }
- cmd.on( '-g', '--generate', 'Generate fixtures from template' ) { opts.generate = true }
- ## todo: change to different flag?? use -c/--config ???
- cmd.on( '-c', '--create', 'Create DB schema' ) { opts.create = true }
+ ## NB: reserve -c for use with -c/--config
+ cmd.on( '--create', 'Create DB schema' ) { opts.create = true }
+ cmd.on( '--setup', "Create DB schema 'n' load all builtin data" ) { opts.setup = true }
cmd.on( '--world', "Populate world tables with builtin data (version #{WorldDB::VERSION})" ) { opts.world = true }
+ cmd.on( '--sport', "Populate sport tables with builtin data" ) { opts.sport = true }
+
cmd.on( '--delete', 'Delete all records' ) { opts.delete = true }
+ ### todo: in future allow multiple search path??
+ cmd.on( '-i', '--include PATH', "Data path (default is #{opts.data_path})" ) { |path| opts.data_path = path }
+
cmd.on( '--load', 'Use loader for builtin sports data' ) { opts.load = true }
+
+ cmd.on( '-e', '--event KEY', 'Event to load or generate' ) { |key| opts.event = key; }
cmd.on( '-o', '--output PATH', "Output path (default is #{opts.output_path})" ) { |path| opts.output_path = path }
+ cmd.on( '-g', '--generate', 'Generate fixtures from template' ) { opts.generate = true }
- ### todo: in future allow multiple search path??
- cmd.on( '-i', '--include PATH', "Data path (default is #{opts.data_path})" ) { |path| opts.data_path = path }
cmd.on( '-v', '--version', "Show version" ) do
puts SportDB.banner
exit
end
@@ -88,63 +93,55 @@
puts "Connecting to db using settings: "
pp db_config
ActiveRecord::Base.establish_connection( db_config )
- if opts.create?
- CreateDB.up # nb: includes WorldDB:CreateDB.up for tables -> countries,regions,cities,props
- end
-
- if opts.delete?
- SportDB.delete!
- WorldDB.delete! # countries,regions,cities,props
- end
-
- if opts.world?
- WorldDB.load([
- 'countries',
- 'cities',
- 'at/cities',
- 'de/cities'
- ])
- end
+ if opts.setup?
+ WorldDB.create
+ SportDB.create
+ WorldDB.read_all
+ SportDB.load_all # ruby (.rb) fixtures
+ SportDB.read_all # plain text (.txt) fixtures
+ else
- if opts.event.present?
- if opts.generate?
- Templater.new( logger ).run( opts, args ) # export/generate ruby fixtures
+ if opts.create?
+ WorldDB.create
+ SportDB.create
+ end
+
+ if opts.world? || opts.sport?
+ if opts.world?
+ WorldDB.delete! if opts.delete?
+ WorldDB.read_all
+ end
+
+ if opts.sport?
+ SportDB.delete! if opts.delete?
+ SportDB.load_all
+ SportDB.read_all
+ end
+ else # no sport or world flag
+ if opts.delete?
+ SportDB.delete!
+ WorldDB.delete! # countries,regions,cities,tags,taggings,props
+ end
+ end
+
+ if opts.event.present?
+ if opts.generate?
+ Templater.new( logger ).run( opts, args ) # export/generate ruby fixtures
+ else
+ Reader.new( logger ).run( opts, args ) # load/read plain text fixtures
+ end
else
- Reader.new( logger ).run( opts, args ) # load/read plain text fixtures
+ Loader.new( logger ).run( opts, args ) # load ruby fixtures
end
- else
- Loader.new( logger ).run( opts, args ) # load ruby fixtures
end
+ SportDB.stats
- dump_stats
- dump_props
-
puts 'Done.'
end # method run
-
- def dump_stats
- # todo: use %5d or similar to format string
- puts "Stats:"
- puts " #{Event.count} events / #{Round.count} rounds / #{Group.count} groups"
- puts " #{League.count} leagues / #{Season.count} seasons"
- puts " #{Country.count} countries / #{Region.count} regions / #{City.count} cities"
- puts " #{Team.count} teams"
- puts " #{Game.count} games"
- puts " #{Badge.count} badges"
- end
-
- def dump_props
- # todo: use %5 or similar to format string
- puts "Props:"
- Prop.order( 'created_at asc' ).all.each do |prop|
- puts " #{prop.key} / #{prop.value} || #{prop.created_at}"
- end
- end
-
end # class Runner
end # module SportDB
\ No newline at end of file