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