beerdb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.markdown ADDED
@@ -0,0 +1,3 @@
1
+ ### 0.0.1 / 2012-10-17
2
+
3
+ * Everything is new. First release
data/Manifest.txt ADDED
@@ -0,0 +1,14 @@
1
+ History.markdown
2
+ Manifest.txt
3
+ README.markdown
4
+ Rakefile
5
+ bin/beerdb
6
+ lib/beerdb.rb
7
+ lib/beerdb/cli/opts.rb
8
+ lib/beerdb/cli/runner.rb
9
+ lib/beerdb/models/beer.rb
10
+ lib/beerdb/models/brewery.rb
11
+ lib/beerdb/models/country.rb
12
+ lib/beerdb/models/prop.rb
13
+ lib/beerdb/schema.rb
14
+ lib/beerdb/version.rb
data/README.markdown ADDED
@@ -0,0 +1,23 @@
1
+ # beerdb
2
+
3
+ beer.db Command Line Tool in Ruby
4
+
5
+ * [geraldb.github.com/beer.db](http://geraldb.github.com/beer.db)
6
+
7
+
8
+ ## Usage
9
+
10
+ TBD
11
+
12
+
13
+ ## Install
14
+
15
+ Just install the gem:
16
+
17
+ $ gem install beerdb
18
+
19
+
20
+ ## License
21
+
22
+ The `beerdb` 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/beerdb/version.rb'
3
+
4
+ Hoe.spec 'beerdb' do
5
+
6
+ self.version = BeerDB::VERSION
7
+
8
+ self.summary = 'beerdb - beer.db command line tool'
9
+ self.description = summary
10
+
11
+ self.urls = ['http://geraldb.github.com/beer.db']
12
+
13
+ self.author = 'Gerald Bauer'
14
+ self.email = 'tobedone@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/beerdb ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'beerdb'
4
+
5
+ ## todo: set x flag for file
6
+
7
+ BeerDB.main
@@ -0,0 +1,56 @@
1
+ module BeerDB
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 BeerDB
@@ -0,0 +1,124 @@
1
+
2
+ module BeerDB
3
+
4
+ class Runner
5
+
6
+
7
+ include BeerDB::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: beerdb [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 Beer 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 BeerDB.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
+ beerdb - beer.db command line tool, version #{VERSION}
50
+
51
+ #{cmd.help}
52
+
53
+ Examples:
54
+ beerdb at # import austrian beers
55
+ beerdb -c # create database schema
56
+
57
+ More Examples:
58
+ beerdb # show stats (table counts, table props)
59
+
60
+ Further information:
61
+ http://geraldb.github.com/beer.db
62
+
63
+ EOS
64
+ exit
65
+ end
66
+ end
67
+
68
+ opt.parse!( args )
69
+
70
+ puts BeerDB.banner
71
+
72
+ puts "working directory: #{Dir.pwd}"
73
+
74
+ db_config = {
75
+ :adapter => 'sqlite3',
76
+ :database => "#{opts.output_path}/beer.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
+ puts "Stats:"
110
+ puts " #{Beer.count} beers"
111
+ puts " #{Brewery.count} breweries"
112
+ puts " #{Country.count} countries"
113
+ end
114
+
115
+ def dump_props
116
+ # todo: use %5 or similar to format string
117
+ puts "Props:"
118
+ Prop.order( 'created_at asc' ).all.each do |prop|
119
+ puts " #{prop.key} / #{prop.value} || #{prop.created_at}"
120
+ end
121
+ end
122
+
123
+ end # class Runner
124
+ end # module BeerDB
@@ -0,0 +1,12 @@
1
+ module BeerDB
2
+ module Models
3
+
4
+
5
+ class Beer < ActiveRecord::Base
6
+
7
+
8
+ end # class Beer
9
+
10
+
11
+ end # module Models
12
+ end # module BeerDB
@@ -0,0 +1,13 @@
1
+ module BeerDB
2
+ module Models
3
+
4
+
5
+ class Brewery < ActiveRecord::Base
6
+
7
+ self.table_name = 'breweries'
8
+
9
+ end # class Brewery
10
+
11
+
12
+ end # module Models
13
+ end # module BeerDB
@@ -0,0 +1,26 @@
1
+ module BeerDB
2
+ module Models
3
+
4
+
5
+ class Country < ActiveRecord::Base
6
+ self.table_name = 'countries'
7
+
8
+ def self.create_from_ary!( countries )
9
+ countries.each do |values|
10
+
11
+ ## key & title required
12
+ attr = {
13
+ :key => values[0],
14
+ :title => values[1],
15
+ :tag => values[2]
16
+ }
17
+
18
+ Country.create!( attr )
19
+ end # each country
20
+ end
21
+
22
+ end # class Country
23
+
24
+
25
+ end # module Models
26
+ end # module BeerDB
@@ -0,0 +1,12 @@
1
+ module BeerDB
2
+ module Models
3
+
4
+
5
+ class Prop < ActiveRecord::Base
6
+
7
+ end # class Prop
8
+
9
+
10
+
11
+ end # module Models
12
+ end # module BeerDB
@@ -0,0 +1,54 @@
1
+
2
+ module BeerDB
3
+
4
+ class CreateDB
5
+
6
+ include BeerDB::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
+ create_table :props do |t|
21
+ t.string :key, :null => false
22
+ t.string :value, :null => false
23
+ t.timestamps
24
+ end
25
+
26
+ create_table :beers do |t|
27
+ t.string :title, :null => false
28
+ t.string :key, :null => false # import/export key
29
+ t.string :synonyms # comma separated list of synonyms
30
+ t.boolean :bottle, :null => false, :default => false # Flaschenbier
31
+ t.boolean :draft, :null => false, :default => false # Fassbier
32
+ ## todo: check seasonal is it proper english?
33
+ t.boolean :seasonal, :null => false, :default => false # all year or just eg. Festbier/Oktoberfest Special
34
+ ## todo: add microbrew/brewpub flag?
35
+ #### t.boolean :brewpub, :null => false, :default => false
36
+ t.timestamps
37
+ end
38
+
39
+ create_table :breweries do |t|
40
+ t.string :title
41
+ t.references :country, :null => false
42
+ t.timestamps
43
+ end
44
+
45
+ end # block Schema.define
46
+
47
+
48
+ Prop.create!( key: 'db.schema.version', value: BeerDB::VERSION )
49
+
50
+ end # method up
51
+
52
+ end # class CreateDB
53
+
54
+ end # module BeerDB
@@ -0,0 +1,4 @@
1
+
2
+ module BeerDB
3
+ VERSION = '0.0.1'
4
+ end
data/lib/beerdb.rb ADDED
@@ -0,0 +1,48 @@
1
+ ###
2
+ # NB: for local testing run like:
3
+ #
4
+ # 1.9.x: ruby -Ilib lib/beerdb.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 'beerdb/models/country'
23
+ require 'beerdb/models/beer'
24
+ require 'beerdb/models/brewery'
25
+ require 'beerdb/models/prop'
26
+ require 'beerdb/schema' # NB: requires beerdb/models (include BeerDB::Models)
27
+ require 'beerdb/version'
28
+ require 'beerdb/cli/opts'
29
+ require 'beerdb/cli/runner'
30
+
31
+ module BeerDB
32
+
33
+ def self.banner
34
+ "beerdb #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
35
+ end
36
+
37
+ def self.root
38
+ "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
39
+ end
40
+
41
+ def self.main
42
+ Runner.new.run(ARGV)
43
+ end
44
+
45
+ end # module BeerDB
46
+
47
+
48
+ BeerDB.main if __FILE__ == $0
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: beerdb
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-10-17 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: beerdb - beer.db command line tool
66
+ email: tobedone@googlegroups.com
67
+ executables:
68
+ - beerdb
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/beerdb
79
+ - lib/beerdb.rb
80
+ - lib/beerdb/cli/opts.rb
81
+ - lib/beerdb/cli/runner.rb
82
+ - lib/beerdb/models/beer.rb
83
+ - lib/beerdb/models/brewery.rb
84
+ - lib/beerdb/models/country.rb
85
+ - lib/beerdb/models/prop.rb
86
+ - lib/beerdb/schema.rb
87
+ - lib/beerdb/version.rb
88
+ homepage: http://geraldb.github.com/beer.db
89
+ licenses: []
90
+
91
+ post_install_message:
92
+ rdoc_options:
93
+ - --main
94
+ - README.markdown
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ hash: 3
112
+ segments:
113
+ - 0
114
+ version: "0"
115
+ requirements: []
116
+
117
+ rubyforge_project: beerdb
118
+ rubygems_version: 1.8.24
119
+ signing_key:
120
+ specification_version: 3
121
+ summary: beerdb - beer.db command line tool
122
+ test_files: []
123
+