worlddb 1.8.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/{History.md → HISTORY.md} +0 -0
  3. data/Manifest.txt +22 -5
  4. data/README.md +62 -2
  5. data/Rakefile +14 -6
  6. data/lib/worlddb.rb +34 -12
  7. data/lib/worlddb/cli/main.rb +159 -111
  8. data/lib/worlddb/cli/opts.rb +15 -48
  9. data/lib/worlddb/console.rb +6 -5
  10. data/lib/worlddb/deleter.rb +5 -3
  11. data/lib/worlddb/matcher.rb +16 -5
  12. data/lib/worlddb/models/city.rb +66 -30
  13. data/lib/worlddb/models/city_comp.rb +27 -0
  14. data/lib/worlddb/models/continent.rb +30 -8
  15. data/lib/worlddb/models/continent_comp.rb +24 -0
  16. data/lib/worlddb/models/country.rb +60 -36
  17. data/lib/worlddb/models/country_comp.rb +29 -0
  18. data/lib/worlddb/models/forward.rb +53 -0
  19. data/lib/worlddb/models/lang.rb +9 -7
  20. data/lib/worlddb/models/lang_comp.rb +23 -0
  21. data/lib/worlddb/models/name.rb +13 -0
  22. data/lib/worlddb/models/place.rb +16 -0
  23. data/lib/worlddb/models/region.rb +34 -12
  24. data/lib/worlddb/models/region_comp.rb +26 -0
  25. data/lib/worlddb/models/tagdb/tag.rb +16 -0
  26. data/lib/worlddb/models/tagdb/tagging.rb +15 -0
  27. data/lib/worlddb/models/usage.rb +10 -6
  28. data/lib/worlddb/reader.rb +31 -158
  29. data/lib/worlddb/readers/base.rb +41 -0
  30. data/lib/worlddb/readers/city.rb +18 -0
  31. data/lib/worlddb/readers/country.rb +17 -0
  32. data/lib/worlddb/readers/lang.rb +43 -0
  33. data/lib/worlddb/readers/region.rb +17 -0
  34. data/lib/worlddb/readers/usage.rb +35 -0
  35. data/lib/worlddb/schema.rb +100 -65
  36. data/lib/worlddb/stats.rb +9 -3
  37. data/lib/worlddb/utils.rb +3 -0
  38. data/lib/worlddb/version.rb +1 -6
  39. data/test/helper.rb +13 -3
  40. data/test/test_model_city.rb +60 -0
  41. data/test/test_model_comp.rb +48 -0
  42. data/test/test_model_country.rb +43 -0
  43. data/test/test_model_region.rb +50 -0
  44. data/test/test_models.rb +35 -0
  45. metadata +113 -37
  46. data/lib/worlddb/models/prop.rb +0 -32
  47. data/lib/worlddb/models/tag.rb +0 -33
  48. data/lib/worlddb/models/tagging.rb +0 -13
  49. data/test/test_values.rb +0 -114
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7bcd0cfff41045906128dcc7c1d4a21a161f97f8
4
+ data.tar.gz: 77b2b023d09ffd92a1f6b409dc12cea150f4204a
5
+ SHA512:
6
+ metadata.gz: 15bb7a864dcb23fcfb99f15c64c83cdc8a2f0d17e1f51ea59ac81f581114ccca9f647d7e6ed9a3dcba58847d4768a0171f2cc3c7a43c294ebd4dab246e1fadc3
7
+ data.tar.gz: fa1f5a379da46acd7ce1b250b98ab61a41a1d8e7940420758c5c7631adf4ce8d0b55c4eef3ad64cb4ae91b59e6f27ba85395c75cadf433291a42c4a92c6f6a6c
File without changes
@@ -1,4 +1,4 @@
1
- History.md
1
+ HISTORY.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
@@ -10,19 +10,36 @@ lib/worlddb/console.rb
10
10
  lib/worlddb/deleter.rb
11
11
  lib/worlddb/matcher.rb
12
12
  lib/worlddb/models/city.rb
13
+ lib/worlddb/models/city_comp.rb
13
14
  lib/worlddb/models/continent.rb
15
+ lib/worlddb/models/continent_comp.rb
14
16
  lib/worlddb/models/country.rb
17
+ lib/worlddb/models/country_comp.rb
18
+ lib/worlddb/models/forward.rb
15
19
  lib/worlddb/models/lang.rb
16
- lib/worlddb/models/prop.rb
20
+ lib/worlddb/models/lang_comp.rb
21
+ lib/worlddb/models/name.rb
22
+ lib/worlddb/models/place.rb
17
23
  lib/worlddb/models/region.rb
18
- lib/worlddb/models/tag.rb
19
- lib/worlddb/models/tagging.rb
24
+ lib/worlddb/models/region_comp.rb
25
+ lib/worlddb/models/tagdb/tag.rb
26
+ lib/worlddb/models/tagdb/tagging.rb
20
27
  lib/worlddb/models/usage.rb
21
28
  lib/worlddb/reader.rb
29
+ lib/worlddb/readers/base.rb
30
+ lib/worlddb/readers/city.rb
31
+ lib/worlddb/readers/country.rb
32
+ lib/worlddb/readers/lang.rb
33
+ lib/worlddb/readers/region.rb
34
+ lib/worlddb/readers/usage.rb
22
35
  lib/worlddb/schema.rb
23
36
  lib/worlddb/stats.rb
24
37
  lib/worlddb/utils.rb
25
38
  lib/worlddb/version.rb
26
39
  test/helper.rb
27
40
  test/test_fixture_matchers.rb
28
- test/test_values.rb
41
+ test/test_model_city.rb
42
+ test/test_model_comp.rb
43
+ test/test_model_country.rb
44
+ test/test_model_region.rb
45
+ test/test_models.rb
data/README.md CHANGED
@@ -11,7 +11,7 @@ world.db Command Line Tool in Ruby
11
11
 
12
12
  ## Usage Command Line
13
13
 
14
- world.db command line tool, version 1.8.0
14
+ world.db command line tool, version 2.0.0
15
15
 
16
16
  Commands:
17
17
  create Create DB schema
@@ -34,10 +34,70 @@ world.db Command Line Tool in Ruby
34
34
  -t, --trace Display backtrace when an error occurs
35
35
 
36
36
 
37
+
37
38
  ## Usage Models
38
39
 
40
+ `Country` Model - Example:
39
41
 
40
- TBD
42
+ at = Country.find_by! key: 'at'
43
+ at.name
44
+ # => 'Austria'
45
+ at.pop
46
+ # => 8_414_638
47
+ at.area
48
+ # => 83_871
49
+
50
+ at.regions.count
51
+ # => 9
52
+ at.regions
53
+ # => [ 'Wien', 'Niederösterreich', 'Oberösterreich', ... ]
54
+
55
+ at.cities.by_pop
56
+ # => [ 'Wien', 'Graz', 'Linz', 'Salzburg', ... ]
57
+
58
+
59
+ 'City' Model - Example:
60
+
61
+ c = City.find_by! key: 'wien'
62
+ c.name
63
+ # => 'Wien'
64
+ c.country.name
65
+ # => 'Austria'
66
+ c.country.continent.name
67
+ # => 'Europe'
68
+
69
+ la = City.find_by! key: 'losangeles'
70
+ la.name
71
+ # => 'Los Angeles'
72
+ la.region.name
73
+ # => 'California'
74
+ la.region.key
75
+ # => 'ca'
76
+ la.country.name
77
+ # => 'United States'
78
+ la.country.key
79
+ # => 'us'
80
+ la.country.continent.name
81
+ # => 'North America'
82
+
83
+
84
+ 'Tag' Model - Example:
85
+
86
+ euro = Tag.find_by! key: 'euro'
87
+ euro.countries.count
88
+ # => 17
89
+ euro.countries
90
+ # => ['Austria, 'Belgium', 'Cyprus', ... ]
91
+
92
+ flanders = Tag.find_by! key: 'flanders'
93
+ flanders.regions.count
94
+ # => 5
95
+ flanders.regions
96
+ # => ['Antwerpen', 'Brabant Wallon', 'Limburg', 'Oost-Vlaanderen', ... ]
97
+ flanders.regions.first.country.name
98
+ # => 'Belgium'
99
+
100
+ and so on.
41
101
 
42
102
 
43
103
  ## Install
data/Rakefile CHANGED
@@ -1,9 +1,6 @@
1
1
  require 'hoe'
2
2
  require './lib/worlddb/version.rb'
3
3
 
4
- ## NB: plugin (hoe-manifest) not required; just used for future testing/development
5
- ### Hoe::plugin :manifest # more options for manifests (in the future; not yet)
6
-
7
4
 
8
5
  Hoe.spec 'worlddb' do
9
6
 
@@ -18,12 +15,23 @@ Hoe.spec 'worlddb' do
18
15
  self.email = 'openmundi@googlegroups.com'
19
16
 
20
17
  self.extra_deps = [
21
- ['textutils', '~> 0.6'], # e.g. >= 0.6 && <= 1.0
22
- ['commander', '~> 4.1.3'],
23
- ['activerecord', '~> 3.2'] # NB: will include activesupport,etc.
18
+ ['props'], # settings / prop(ertie)s / env / INI
19
+ ['logutils'], # logging
20
+ ['textutils', '>= 0.8.7'], # e.g. >= 0.6 && <= 1.0 ## will include logutils, props
21
+ ['tagutils'], # tags n categories for activerecord
22
+
23
+ ## 3rd party
24
+ ['gli', '>= 2.9'],
25
+ ['activerecord'] # NB: will include activesupport,etc.
24
26
  ### ['sqlite3', '~> 1.3'] # NB: install on your own; remove dependency
25
27
  ]
26
28
 
29
+ # switch extension to .markdown for gihub formatting
30
+ # -- NB: auto-changed when included in manifest
31
+ self.readme_file = 'README.md'
32
+ self.history_file = 'HISTORY.md'
33
+
34
+
27
35
  self.licenses = ['Public Domain']
28
36
 
29
37
  self.spec_extras = {
@@ -18,32 +18,48 @@ require 'active_record' ## todo: add sqlite3? etc.
18
18
 
19
19
  require 'logutils'
20
20
  require 'textutils'
21
+ require 'tagutils'
22
+ require 'props'
23
+ require 'props/db' # includes ConfDb (ConfDb::Model::Prop, etc.)
21
24
 
22
25
 
23
26
  # our own code
24
27
 
28
+ require 'worlddb/version' # always goes first
25
29
 
30
+ require 'worlddb/utils'
26
31
 
27
- require 'worlddb/version'
32
+ require 'worlddb/models/forward'
28
33
 
29
- require 'worlddb/utils'
30
- require 'worlddb/models/prop'
34
+ require 'worlddb/models/name'
35
+ require 'worlddb/models/place'
31
36
  require 'worlddb/models/continent'
37
+ require 'worlddb/models/continent_comp'
32
38
  require 'worlddb/models/country'
39
+ require 'worlddb/models/country_comp'
33
40
  require 'worlddb/models/region'
41
+ require 'worlddb/models/region_comp'
34
42
  require 'worlddb/models/city'
35
- require 'worlddb/models/tag'
36
- require 'worlddb/models/tagging'
43
+ require 'worlddb/models/city_comp'
37
44
  require 'worlddb/models/lang'
45
+ require 'worlddb/models/lang_comp'
38
46
  require 'worlddb/models/usage'
39
47
 
40
- module WorldDb
41
- Models = Model # note: alias for Model - remove later -- DEPRECIATED!!
42
- end
48
+ require 'worlddb/models/tagdb/tag'
49
+ require 'worlddb/models/tagdb/tagging'
50
+
43
51
 
44
52
 
45
53
  require 'worlddb/schema' # NB: requires worlddb/models (include WorldDB::Models)
46
54
  require 'worlddb/matcher'
55
+
56
+ require 'worlddb/readers/base'
57
+ require 'worlddb/readers/lang'
58
+ require 'worlddb/readers/usage'
59
+ require 'worlddb/readers/country'
60
+ require 'worlddb/readers/region'
61
+ require 'worlddb/readers/city'
62
+
47
63
  require 'worlddb/reader'
48
64
  require 'worlddb/deleter'
49
65
  require 'worlddb/stats'
@@ -52,7 +68,7 @@ require 'worlddb/stats'
52
68
  module WorldDb
53
69
 
54
70
  def self.banner
55
- "worlddb #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
71
+ "worlddb/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
56
72
  end
57
73
 
58
74
  def self.root
@@ -63,10 +79,10 @@ module WorldDb
63
79
  require 'worlddb/cli/main'
64
80
  ## Runner.new.run(ARGV) - old code
65
81
  end
66
-
82
+
67
83
  def self.create
68
84
  CreateDb.new.up
69
- WorldDb::Model::Prop.create!( key: 'db.schema.world.version', value: VERSION )
85
+ ConfDb::Model::Prop.create!( key: 'db.schema.world.version', value: VERSION )
70
86
  end
71
87
 
72
88
 
@@ -94,7 +110,8 @@ module WorldDb
94
110
  Deleter.new.run
95
111
  end # method delete!
96
112
 
97
-
113
+ ####
114
+ ## todo: remove stats ??? why? why not? better use .tables
98
115
  def self.stats
99
116
  stats = Stats.new
100
117
  stats.tables
@@ -106,11 +123,16 @@ module WorldDb
106
123
  end
107
124
 
108
125
  def self.props
126
+ ### fix: use ConfDb.props delegate or similar !!!
109
127
  Stats.new.props
110
128
  end
111
129
 
112
130
  end # module WorldDb
113
131
 
132
+ ###########################################
133
+ # fix: remove old alias for WorldDb ??
134
+ WorldDB = WorldDb
135
+
114
136
 
115
137
  if __FILE__ == $0
116
138
  WorldDb.main
@@ -1,24 +1,22 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'commander/import'
3
+ require 'gli'
4
+
5
+ include GLI::App
4
6
 
5
- require 'logutils/db' # add support for logging to db
6
- require 'worlddb/cli/opts'
7
-
8
- LogUtils::Logger.root.level = :info # set logging level to info
7
+ # our own code / additional for cli only
9
8
 
9
+ require 'logutils/db' # add support for logging to db
10
+ require 'worlddb/cli/opts'
10
11
 
11
- program :name, 'worlddb'
12
- program :version, WorldDb::VERSION
13
- program :description, "world.db command line tool, version #{WorldDb::VERSION}"
14
12
 
13
+ program_desc 'world.db command line tool'
15
14
 
16
- # default_command :help
17
- default_command :load
15
+ version WorldDb::VERSION
18
16
 
19
- program :help_formatter, Commander::HelpFormatter::TerminalCompact
20
17
 
21
- ## program :help, 'Examples', 'yada yada -try multi line later'
18
+ LogUtils::Logger.root.level = :info # set logging level to info
19
+ logger = LogUtils::Logger.root
22
20
 
23
21
  =begin
24
22
  ### add to help use new sections
@@ -35,19 +33,30 @@ Further information:
35
33
  =end
36
34
 
37
35
 
36
+
38
37
  ## todo: find a better name e.g. change to settings? config? safe_opts? why? why not?
39
- myopts = WorldDb::Opts.new
38
+ opts = WorldDb::Opts.new
39
+
40
40
 
41
41
  ### global option (required)
42
42
  ## todo: add check that path is valid?? possible?
43
43
 
44
- global_option '-i', '--include PATH', String, "Data path (default is #{myopts.data_path})"
45
- global_option '-d', '--dbpath PATH', String, "Database path (default is #{myopts.db_path})"
46
- global_option '-n', '--dbname NAME', String, "Database name (datault is #{myopts.db_name})"
44
+ desc 'Database path'
45
+ arg_name 'PATH'
46
+ default_value opts.db_path
47
+ flag [:d, :dbpath]
48
+
49
+ desc 'Database name'
50
+ arg_name 'NAME'
51
+ default_value opts.db_name
52
+ flag [:n, :dbname]
53
+
54
+ desc '(Debug) Show debug messages'
55
+ switch [:verbose], negatable: false ## todo: use -w for short form? check ruby interpreter if in use too?
56
+
57
+ desc 'Only show warnings, errors and fatal messages'
58
+ switch [:q, :quiet], negatable: false
47
59
 
48
- global_option '-q', '--quiet', "Only show warnings, errors and fatal messages"
49
- ### todo/fix: just want --debug/--verbose flag (no single letter option wanted) - fix
50
- global_option '-w', '--verbose', "Show debug messages"
51
60
 
52
61
 
53
62
  def connect_to_db( options )
@@ -69,144 +78,144 @@ def connect_to_db( options )
69
78
  end
70
79
 
71
80
 
72
- command :create do |c|
73
- c.syntax = 'worlddb create [options]'
74
- c.description = 'Create DB schema'
75
- c.action do |args, options|
81
+ desc 'Create DB schema'
82
+ command [:create] do |c|
83
+ c.action do |g,o,args|
84
+
85
+ connect_to_db( opts )
86
+
87
+ LogDb.create
88
+ ConfDb.create
89
+ TagDb.create
90
+ WorldDb.create
76
91
 
77
- LogUtils::Logger.root.level = :warn if options.quiet.present?
78
- LogUtils::Logger.root.level = :debug if options.verbose.present?
92
+ puts 'Done.'
93
+ end # action
94
+ end # command create
95
+
96
+
97
+ desc "Create DB schema 'n' load all world data"
98
+ arg_name 'NAME' # optional setup profile name
99
+ command [:setup,:s] do |c|
100
+
101
+ c.desc 'World data path'
102
+ c.arg_name 'PATH'
103
+ c.default_value opts.data_path
104
+ c.flag [:i,:include]
79
105
 
80
- myopts.merge_commander_options!( options.__hash__ )
81
- connect_to_db( myopts )
106
+ c.action do |g,o,args|
107
+
108
+ connect_to_db( opts )
109
+
110
+ ## todo: document optional setup profile arg (defaults to all)
111
+ setup = args[0] || 'all'
82
112
 
83
113
  LogDb.create
114
+ ConfDb.create
115
+ TagDb.create
84
116
  WorldDb.create
117
+
118
+ WorldDb.read_setup( "setups/#{setup}", opts.data_path )
119
+
85
120
  puts 'Done.'
86
121
  end # action
87
- end # command create
122
+ end # command setup
88
123
 
89
- command :setup do |c|
90
- c.syntax = 'worlddb setup [options]'
91
- c.description = "Create DB schema 'n' load all data"
124
+ desc 'Update all world data'
125
+ arg_name 'NAME' # optional setup profile name
126
+ command [:update,:up,:u] do |c|
92
127
 
93
- c.option '--delete', 'Delete all records'
128
+ c.desc 'World data path'
129
+ c.arg_name 'PATH'
130
+ c.default_value opts.data_path
131
+ c.flag [:i,:include]
94
132
 
95
- c.action do |args, options|
133
+ c.desc 'Delete all world data records'
134
+ c.switch [:delete], negatable: false
96
135
 
97
- LogUtils::Logger.root.level = :warn if options.quiet.present?
98
- LogUtils::Logger.root.level = :debug if options.verbose.present?
136
+ c.action do |g,o,args|
99
137
 
100
- myopts.merge_commander_options!( options.__hash__ )
101
- connect_to_db( myopts )
138
+ connect_to_db( opts )
102
139
 
103
- if options.delete.present?
104
- # w/ delete flag assume tables already exit
140
+ ## todo: document optional setup profile arg (defaults to all)
141
+ setup = args[0] || 'all'
142
+
143
+ if o[:delete].present?
144
+ ## todo/fix: also delete TagDb.delete!
105
145
  WorldDb.delete!
106
- else
107
- LogDb.create
108
- WorldDb.create
109
146
  end
110
147
 
111
- WorldDb.read_all( myopts.data_path )
148
+ WorldDb.read_setup( "setups/#{setup}", opts.data_path )
149
+
112
150
  puts 'Done.'
113
151
  end # action
114
- end # command setup
152
+ end # command setup
115
153
 
116
- command :load do |c|
117
- ## todo: how to specify many fixutes <>... ??? in syntax
118
- c.syntax = 'worlddb load [options] <fixtures>'
119
- c.description = 'Load fixtures'
120
154
 
121
- c.option '--country KEY', String, "Default country for regions 'n' cities"
122
-
123
- ### todd/check - type flags still needed? dispatch using name and convention?
124
- c.option '--countries', 'Use country plain text fixture reader'
125
- c.option '--regions', 'Use regions plain text fixture reader'
126
- c.option '--cities', 'Use cities plain text fixture reader'
127
155
 
128
- c.option '--delete', 'Delete all records'
156
+ desc 'Load world fixtures'
157
+ arg_name 'NAME' # multiple fixture names - todo/fix: use multiple option
158
+ command [:load, :l] do |c|
129
159
 
130
- c.action do |args, options|
160
+ c.desc 'Delete all world data records'
161
+ c.switch [:delete], negatable: false
131
162
 
132
- LogUtils::Logger.root.level = :warn if options.quiet.present?
133
- LogUtils::Logger.root.level = :debug if options.verbose.present?
163
+ c.action do |g,o,args|
134
164
 
135
- myopts.merge_commander_options!( options.__hash__ )
136
- connect_to_db( myopts )
165
+ connect_to_db( opts )
137
166
 
138
- WorldDb.delete! if options.delete.present?
167
+ if o[:delete].present?
168
+ ## todo/fix: also delete TagDb.delete!
169
+ WorldDb.delete!
170
+ end
171
+
172
+ reader = WorldDb::Reader.new( opts.data_path )
139
173
 
140
- # read plain text country/region/city fixtures
141
- reader = WorldDb::Reader.new( myopts.data_path )
142
174
  args.each do |arg|
143
- name = arg # File.basename( arg, '.*' )
144
-
145
- if myopts.countries?
146
- reader.load_countries( name )
147
- elsif myopts.regions?
148
- reader.load_regions( myopts.country, name )
149
- elsif myopts.cities?
150
- reader.load_cities( myopts.country, name )
151
- else
152
- reader.load( name )
153
- ## todo: issue a warning here; no fixture type specified; assume country?
154
- end
155
-
175
+ name = arg # File.basename( arg, '.*' )
176
+ reader.load( name )
156
177
  end # each arg
157
-
178
+
158
179
  puts 'Done.'
159
180
  end
160
181
  end # command load
161
182
 
162
183
 
184
+ desc 'Show stats'
163
185
  command :stats do |c|
164
- c.syntax = 'worlddb stats [options]'
165
- c.description = 'Show stats'
166
- c.action do |args, options|
186
+ c.action do |g,o,args|
167
187
 
168
- LogUtils::Logger.root.level = :warn if options.quiet.present?
169
- LogUtils::Logger.root.level = :debug if options.verbose.present?
188
+ connect_to_db( opts )
170
189
 
171
- myopts.merge_commander_options!( options.__hash__ )
172
- connect_to_db( myopts )
173
-
174
190
  WorldDb.tables
175
-
191
+ TagDb.tables
192
+
176
193
  puts 'Done.'
177
194
  end
178
195
  end
179
196
 
180
197
 
198
+ desc 'Show props'
181
199
  command :props do |c|
182
- c.syntax = 'worlddb props [options]'
183
- c.description = 'Show props'
184
- c.action do |args, options|
200
+ c.action do |g,o,args|
185
201
 
186
- LogUtils::Logger.root.level = :warn if options.quiet.present?
187
- LogUtils::Logger.root.level = :debug if options.verbose.present?
188
-
189
- myopts.merge_commander_options!( options.__hash__ )
190
- connect_to_db( myopts )
202
+ connect_to_db( opts )
191
203
 
204
+ ### fix: use ConfDb.dump or similar (for reuse) !!!
192
205
  WorldDb.props
193
-
206
+
194
207
  puts 'Done.'
195
208
  end
196
209
  end
197
210
 
198
211
 
212
+ desc 'Show logs'
199
213
  command :logs do |c|
200
- c.syntax = 'worlddb logs [options]'
201
- c.description = 'Show logs'
202
- c.action do |args, options|
214
+ c.action do |g,o,args|
203
215
 
204
- LogUtils::Logger.root.level = :warn if options.quiet.present?
205
- LogUtils::Logger.root.level = :debug if options.verbose.present?
216
+ connect_to_db( opts )
206
217
 
207
- myopts.merge_commander_options!( options.__hash__ )
208
- connect_to_db( myopts )
209
-
218
+ ### fix: use LogDb.dump or similar (for reuse) !!!!
210
219
  LogDb::Models::Log.all.each do |log|
211
220
  puts "[#{log.level}] -- #{log.msg}"
212
221
  end
@@ -216,18 +225,57 @@ command :logs do |c|
216
225
  end
217
226
 
218
227
 
219
-
228
+ desc '(Debug) Test command suite'
220
229
  command :test do |c|
221
- c.syntax = 'worlddb test [options]'
222
- c.description = 'Debug/test command suite'
223
- c.action do |args, options|
230
+ c.action do |g,o,args|
231
+
224
232
  puts "hello from test command"
225
233
  puts "args (#{args.class.name}):"
226
234
  pp args
227
- puts "options:"
228
- pp options
229
- puts "options.__hash__:"
230
- pp options.__hash__
235
+ puts "o (#{o.class.name}):"
236
+ pp o
237
+ puts "g (#{g.class.name}):"
238
+ pp g
239
+
240
+ LogUtils::Logger.root.debug 'test debug msg'
241
+ LogUtils::Logger.root.info 'test info msg'
242
+ LogUtils::Logger.root.warn 'test warn msg'
243
+
231
244
  puts 'Done.'
232
245
  end
233
246
  end
247
+
248
+
249
+ pre do |g,c,o,args|
250
+ opts.merge_gli_options!( g )
251
+ opts.merge_gli_options!( o )
252
+
253
+ puts WorldDb.banner
254
+
255
+ if opts.verbose?
256
+ LogUtils::Logger.root.level = :debug
257
+ end
258
+
259
+ logger.debug "Executing #{c.name}"
260
+ true
261
+ end
262
+
263
+ post do |global,c,o,args|
264
+ logger.debug "Executed #{c.name}"
265
+ true
266
+ end
267
+
268
+
269
+ on_error do |e|
270
+ puts
271
+ puts "*** error: #{e.message}"
272
+
273
+ if opts.verbose?
274
+ puts e.backtrace
275
+ end
276
+
277
+ false # skip default error handling
278
+ end
279
+
280
+
281
+ exit run(ARGV)