worlddb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.markdown ADDED
@@ -0,0 +1,4 @@
1
+ ### 0.0.1 / 2012-11-05
2
+
3
+ * Everything is new. First release
4
+
data/Manifest.txt ADDED
@@ -0,0 +1,10 @@
1
+ History.markdown
2
+ Manifest.txt
3
+ README.markdown
4
+ Rakefile
5
+ bin/worlddb
6
+ lib/worlddb.rb
7
+ lib/worlddb/cli/opts.rb
8
+ lib/worlddb/cli/runner.rb
9
+ lib/worlddb/schema.rb
10
+ lib/worlddb/version.rb
data/README.markdown ADDED
@@ -0,0 +1,23 @@
1
+ # worlddb
2
+
3
+ world.db Command Line Tool in Ruby
4
+
5
+ * [geraldb.github.com/world.db](http://geraldb.github.com/world.db)
6
+
7
+
8
+ ## Usage
9
+
10
+ TBD
11
+
12
+
13
+ ## Install
14
+
15
+ Just install the gem:
16
+
17
+ $ gem install worlddb
18
+
19
+
20
+ ## License
21
+
22
+ The `worlddb` scripts are dedicated to the public domain.
23
+ Use it as you please with no restrictions whatsoever.
data/Rakefile ADDED
@@ -0,0 +1,25 @@
1
+ require 'hoe'
2
+ require './lib/worlddb/version.rb'
3
+
4
+ Hoe.spec 'worlddb' do
5
+
6
+ self.version = WorldDB::VERSION
7
+
8
+ self.summary = 'worlddb - world.db command line tool'
9
+ self.description = summary
10
+
11
+ self.urls = ['http://geraldb.github.com/world.db']
12
+
13
+ self.author = 'Gerald Bauer'
14
+ self.email = 'opensport@googlegroups.com'
15
+
16
+ # switch extension to .markdown for gihub formatting
17
+ self.readme_file = 'README.markdown'
18
+ self.history_file = 'History.markdown'
19
+
20
+ self.extra_deps = [
21
+ ['activerecord', '~> 3.2'] # NB: will include activesupport,etc.
22
+ ### ['sqlite3', '~> 1.3'] # NB: install on your own; remove dependency
23
+ ]
24
+
25
+ end
data/bin/worlddb ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'worlddb'
4
+
5
+ ## todo: set x flag for file
6
+
7
+ WorldDB.main
@@ -0,0 +1,56 @@
1
+ module WorldDB
2
+
3
+ class Opts
4
+
5
+ def create=(boolean)
6
+ @create = boolean
7
+ end
8
+
9
+ def create?
10
+ return false if @create.nil? # default create flag is false
11
+ @create == true
12
+ end
13
+
14
+
15
+ def delete=(boolean)
16
+ @delete = boolean
17
+ end
18
+
19
+ def delete?
20
+ return false if @delete.nil? # default create flag is false
21
+ @delete == true
22
+ end
23
+
24
+
25
+ # use loader? (that is, built-in seed data)
26
+ def load=(boolean)
27
+ @load = boolean
28
+ end
29
+
30
+ def load?
31
+ return false if @load.nil? # default create flag is false
32
+ @load == true
33
+ end
34
+
35
+
36
+ def output_path=(value)
37
+ @output_path = value
38
+ end
39
+
40
+ def output_path
41
+ @output_path || '.'
42
+ end
43
+
44
+
45
+ def data_path=(value)
46
+ @data_path = value
47
+ end
48
+
49
+ def data_path
50
+ @data_path || '.'
51
+ end
52
+
53
+
54
+ end # class Opts
55
+
56
+ end # module WorldDB
@@ -0,0 +1,128 @@
1
+
2
+ module WorldDB
3
+
4
+ class Runner
5
+
6
+
7
+ ### include WorldDB::Models
8
+
9
+ def initialize
10
+ @logger = Logger.new(STDOUT)
11
+ @logger.level = Logger::INFO
12
+
13
+ @opts = Opts.new
14
+ end
15
+
16
+ attr_reader :logger, :opts
17
+
18
+
19
+ def run( args )
20
+ opt=OptionParser.new do |cmd|
21
+
22
+ cmd.banner = "Usage: worlddb [options]"
23
+
24
+ ## todo: change to different flag?? use -c/--config ???
25
+ cmd.on( '-c', '--create', 'Create DB Schema' ) { opts.create = true }
26
+
27
+ cmd.on( '--delete', 'Delete all records' ) { opts.delete = true }
28
+
29
+ cmd.on( '--load', 'Use Loader for Builtin World Data' ) { opts.load = true }
30
+
31
+ ### todo: in future allow multiple search path??
32
+ cmd.on( '-i', '--include PATH', "Data Path (default is #{opts.data_path})" ) { |path| opts.data_path = path }
33
+
34
+ cmd.on( '-v', '--version', "Show version" ) do
35
+ puts WorldDB.banner
36
+ exit
37
+ end
38
+
39
+ cmd.on( "--verbose", "Show debug trace" ) do
40
+ logger.datetime_format = "%H:%H:%S"
41
+ logger.level = Logger::DEBUG
42
+
43
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
44
+ end
45
+
46
+ cmd.on_tail( "-h", "--help", "Show this message" ) do
47
+ puts <<EOS
48
+
49
+ worlddb - world.db command line tool, version #{VERSION}
50
+
51
+ #{cmd.help}
52
+
53
+ Examples:
54
+ worlddb at # import austrian regions n cities
55
+ worlddb -c # create database schema
56
+
57
+ More Examples:
58
+ worlddb # show stats (table counts, table props)
59
+
60
+ Further information:
61
+ http://geraldb.github.com/world.db
62
+
63
+ EOS
64
+ exit
65
+ end
66
+ end
67
+
68
+ opt.parse!( args )
69
+
70
+ puts WorldDB.banner
71
+
72
+ puts "working directory: #{Dir.pwd}"
73
+
74
+ db_config = {
75
+ :adapter => 'sqlite3',
76
+ :database => "#{opts.output_path}/world.db"
77
+ }
78
+
79
+ puts "Connecting to db using settings: "
80
+ pp db_config
81
+
82
+ ActiveRecord::Base.establish_connection( db_config )
83
+
84
+ if opts.create?
85
+ CreateDB.up
86
+ end
87
+
88
+ if opts.delete?
89
+ # tbd
90
+ end
91
+
92
+
93
+ args.each do |arg|
94
+ name = arg # File.basename( arg, '.*' )
95
+
96
+ # tbd
97
+ end
98
+
99
+ dump_stats
100
+ dump_props
101
+
102
+ puts 'Done.'
103
+
104
+ end # method run
105
+
106
+
107
+ def dump_stats
108
+ # todo: use %5d or similar to format string
109
+ =begin
110
+ puts "Stats:"
111
+ puts " #{Country.count} countries"
112
+ =end
113
+ end
114
+
115
+
116
+ def dump_props
117
+
118
+ =begin
119
+ # todo: use %5 or similar to format string
120
+ puts "Props:"
121
+ Prop.order( 'created_at asc' ).all.each do |prop|
122
+ puts " #{prop.key} / #{prop.value} || #{prop.created_at}"
123
+ end
124
+ =end
125
+ end
126
+
127
+ end # class Runner
128
+ end # module WorldDB
@@ -0,0 +1,28 @@
1
+
2
+ module WorldDB
3
+
4
+ class CreateDB
5
+
6
+ ## include WorldDB::Models
7
+
8
+
9
+ def self.up
10
+
11
+ ActiveRecord::Schema.define do
12
+
13
+ create_table :countries do |t|
14
+ t.string :title, :null => false
15
+ t.string :tag, :null => false # short three letter tag
16
+ t.string :key, :null => false
17
+ t.timestamps
18
+ end
19
+
20
+ end # block Schema.define
21
+
22
+ ## Prop.create!( key: 'db.schema.version', value: BeerDB::VERSION )
23
+
24
+ end # method up
25
+
26
+ end # class CreateDB
27
+
28
+ end # module WorldDB
@@ -0,0 +1,4 @@
1
+
2
+ module WorldDB
3
+ VERSION = '0.0.1'
4
+ end
data/lib/worlddb.rb ADDED
@@ -0,0 +1,44 @@
1
+ ###
2
+ # NB: for local testing run like:
3
+ #
4
+ # 1.9.x: ruby -Ilib lib/worlddb.rb
5
+
6
+ # core and stlibs
7
+
8
+ require 'yaml'
9
+ require 'pp'
10
+ require 'logger'
11
+ require 'optparse'
12
+ require 'fileutils'
13
+ require 'erb'
14
+
15
+ # rubygems
16
+
17
+ require 'active_record' ## todo: add sqlite3? etc.
18
+
19
+
20
+ # our own code
21
+
22
+ require 'worlddb/schema' # NB: requires worlddb/models (include WorldDB::Models)
23
+ require 'worlddb/version'
24
+ require 'worlddb/cli/opts'
25
+ require 'worlddb/cli/runner'
26
+
27
+ module WorldDB
28
+
29
+ def self.banner
30
+ "worlddb #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
31
+ end
32
+
33
+ def self.root
34
+ "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
35
+ end
36
+
37
+ def self.main
38
+ Runner.new.run(ARGV)
39
+ end
40
+
41
+ end # module WorldDB
42
+
43
+
44
+ WorldDB.main if __FILE__ == $0
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: worlddb
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Gerald Bauer
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-11-05 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activerecord
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 3
31
+ - 2
32
+ version: "3.2"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rdoc
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 19
44
+ segments:
45
+ - 3
46
+ - 10
47
+ version: "3.10"
48
+ type: :development
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: hoe
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ hash: 7
59
+ segments:
60
+ - 3
61
+ - 0
62
+ version: "3.0"
63
+ type: :development
64
+ version_requirements: *id003
65
+ description: worlddb - world.db command line tool
66
+ email: opensport@googlegroups.com
67
+ executables:
68
+ - worlddb
69
+ extensions: []
70
+
71
+ extra_rdoc_files:
72
+ - Manifest.txt
73
+ files:
74
+ - History.markdown
75
+ - Manifest.txt
76
+ - README.markdown
77
+ - Rakefile
78
+ - bin/worlddb
79
+ - lib/worlddb.rb
80
+ - lib/worlddb/cli/opts.rb
81
+ - lib/worlddb/cli/runner.rb
82
+ - lib/worlddb/schema.rb
83
+ - lib/worlddb/version.rb
84
+ homepage: http://geraldb.github.com/world.db
85
+ licenses: []
86
+
87
+ post_install_message:
88
+ rdoc_options:
89
+ - --main
90
+ - README.markdown
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
110
+ version: "0"
111
+ requirements: []
112
+
113
+ rubyforge_project: worlddb
114
+ rubygems_version: 1.8.24
115
+ signing_key:
116
+ specification_version: 3
117
+ summary: worlddb - world.db command line tool
118
+ test_files: []
119
+