flattendb 0.0.1.96 → 0.0.2.162

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/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to flattendb version 0.0.1
5
+ This documentation refers to flattendb version 0.0.2
6
6
 
7
7
 
8
8
  == DESCRIPTION
data/Rakefile CHANGED
@@ -1,23 +1,21 @@
1
- require 'lib/flattendb/version'
1
+ begin
2
+ require 'hen'
3
+ rescue LoadError
4
+ abort "Please install the 'hen' gem first."
5
+ end
2
6
 
3
- FILES = FileList['lib/**/*.rb'].to_a
4
- EXECS = FileList['bin/*'].to_a
5
- RDOCS = %w[README COPYING ChangeLog]
6
- OTHER = FileList['[A-Z]*', 'example/*'].to_a
7
+ require 'lib/flattendb/version'
7
8
 
8
- task(:doc_spec) {{
9
- :title => 'flattendb Application documentation',
10
- :rdoc_files => RDOCS + FILES
11
- }}
9
+ Hen.lay! {{
10
+ :rubyforge => {
11
+ :package => 'flattendb'
12
+ },
12
13
 
13
- task(:gem_spec) {{
14
- :name => 'flattendb',
15
- :version => FlattenDB::VERSION,
16
- :summary => 'Flatten relational databases',
17
- :files => FILES + EXECS + OTHER,
18
- :require_path => 'lib',
19
- :bindir => 'bin',
20
- :executables => EXECS,
21
- :extra_rdoc_files => RDOCS,
22
- :dependencies => %w[highline mysql libxml-ruby builder]
14
+ :gem => {
15
+ :version => FlattenDB::VERSION,
16
+ :summary => 'Flatten relational databases.',
17
+ :files => FileList['lib/**/*.rb', 'bin/*'].to_a,
18
+ :extra_files => FileList['[A-Z]*', 'example/*'].to_a,
19
+ :dependencies => %w[highline libxml-ruby builder ruby-nuggets]
20
+ }
23
21
  }}
data/bin/flattendb CHANGED
@@ -32,98 +32,160 @@ require 'optparse'
32
32
 
33
33
  require 'rubygems'
34
34
  require 'highline/import'
35
+ require 'nuggets/array/flatten_once'
35
36
 
36
37
  $: << File.join(File.dirname(__FILE__), '..', 'lib')
37
38
 
38
39
  require 'flattendb'
40
+ require 'flattendb/cli'
39
41
 
40
- USAGE = "Usage: #{$0} [-h|--help] [options] <infile> <outfile> <configfile>"
42
+ include FlattenDB::CLI
41
43
 
42
- $options = {
43
- :type => :mysql,
44
+ USAGE = "Usage: #{$0} [-h|--help] [options]"
45
+ abort USAGE if ARGV.empty?
46
+
47
+ $global_options = {
48
+ :type => :mysql,
49
+ :infiles => [],
50
+ :outfile => nil,
51
+ :confile => nil,
52
+ :keep => false,
53
+ :mysql => {
54
+ :intype => :xml
55
+ },
56
+ :mdb => {
57
+ :intype => :mdb
58
+ }
59
+ }
60
+
61
+ $opts_by_type = {
44
62
  :mysql => {
45
- :intype => :xml,
46
- :keep => false
63
+ :title => 'MySQL',
64
+ :opts => lambda { |opts|
65
+ opts.on('-x', '--mysql-xml', "Input file is of type XML [This is the default]") {
66
+ $global_options[:mysql][:intype] = :xml
67
+ }
68
+ opts.on('-s', '--sql', "Input file is of type SQL") {
69
+ $global_options[:mysql][:intype] = :sql
70
+ }
71
+ }
72
+ },
73
+ :mdb => {
74
+ :title => 'MS Access',
75
+ :opts => lambda { |opts|
76
+ opts.on('-m', '--mdb', "Input file is of type MDB [This is the default]") {
77
+ $global_options[:mdb][:intype] = :mdb
78
+ }
79
+ opts.on('-y', '--mdb-xml', "Input file is of type XML") {
80
+ $global_options[:mdb][:intype] = :xml
81
+ }
82
+ }
47
83
  }
48
84
  }
49
85
 
50
86
  def type_options(type, opts, with_heading = true)
51
- heading = lambda { |name|
87
+ if type == :all
88
+ $opts_by_type.keys.sort_by { |t| t.to_s }.each { |t|
89
+ type_options(t, opts, with_heading)
90
+ }
91
+ else
92
+ opt = $opts_by_type[type.to_sym]
93
+
52
94
  if with_heading
53
95
  opts.separator ''
54
- opts.separator "- #{name}"
96
+ opts.separator " - [#{type}] #{opt[:title]}"
55
97
  end
56
- }
57
-
58
- case type.to_sym
59
- when :mysql
60
- heading['MySQL']
61
98
 
62
- opts.on('-x', '--xml', "Input file is of type XML [This is the default]") {
63
- $options[:mysql][:intype] = :xml
64
- }
65
- opts.on('-s', '--sql', "Input file is of type SQL") {
66
- $options[:mysql][:intype] = :sql
67
- }
68
- opts.on('-k', '--keep', "Keep intermediate XML dump; only applies if input type is 'sql'") {
69
- $options[:mysql][:keep] = true
70
- }
99
+ opt[:opts][opts]
71
100
  end
72
101
  end
73
102
 
74
103
  OptionParser.new { |opts|
75
104
  opts.banner = USAGE
76
- opts.separator ''
77
105
 
106
+ opts.separator ''
78
107
  opts.separator 'Options:'
108
+
79
109
  if $type
80
110
  opts.separator " [-t, --type] TYPE OVERRIDE IN EFFECT (#{$type})"
81
111
  else
82
- opts.on('-t', '--type TYPE', "Type of database at hand [Default: #{$options[:type]}]") { |t|
83
- $options[:type] = t.downcase.to_sym
112
+ opts.on('-t', '--type TYPE', "Type of database at hand [Default: #{$global_options[:type]}]") { |t|
113
+ $global_options[:type] = t.downcase.to_sym
84
114
  }
85
115
  end
86
116
 
117
+ opts.separator ''
118
+
119
+ opts.on('-i', '--input-files FILES...', "Input file(s); depending on the database type, multiple files may be given [REQUIRED]") { |f|
120
+ $global_options[:infiles] = f
121
+ }
122
+
123
+ opts.on('-o', '--output-file FILE', "Output file (flat XML) [REQUIRED]") { |f|
124
+ $global_options[:outfile] = f
125
+ }
126
+
127
+ opts.on('-c', '--config-file FILE', "Configuration file (YAML) [REQUIRED]") { |f|
128
+ $global_options[:confile] = f
129
+ }
130
+
131
+ opts.separator ''
132
+
133
+ opts.on('-k', '--keep', "Keep any intermediate files (generated XML dumps, etc.)") {
134
+ $global_options[:keep] = true
135
+ }
136
+
87
137
  opts.separator ''
88
138
  opts.separator 'Database-specific Options:'
89
139
 
90
140
  if $type
91
141
  type_options($type, opts, false)
92
142
  else
93
- %w[mysql].each { |t|
94
- type_options(t, opts)
95
- }
143
+ type_options(:all, opts)
96
144
  end
97
145
 
98
146
  opts.separator ''
99
147
  opts.separator 'Generic options:'
148
+
100
149
  opts.on('-h', '--help', 'Print this help message and exit') {
101
150
  abort opts.to_s
102
151
  }
152
+
103
153
  opts.on('--version', 'Print program version and exit') {
104
154
  abort "#{File.basename($0)} v#{FlattenDB::VERSION}"
105
155
  }
106
156
  }.parse!
107
157
 
108
- $type ||= $options[:type]
109
- $options = $options[$type] || {}
158
+ $type ||= $global_options[:type]
159
+ $options = $global_options[$type] || {}
110
160
 
111
161
  # Load corresponding module
112
162
  begin
113
- require "flattendb/#{$type}"
163
+ require "flattendb/types/#{$type}"
114
164
  rescue LoadError
115
165
  abort "Database type '#{$type}' is not supported at the moment."
116
166
  end
117
167
 
118
- abort USAGE unless ARGV.size == 3
168
+ abort "No output file specified" unless $global_options[:outfile]
169
+ abort "No configuration file specified" unless $global_options[:confile]
170
+ abort "Configuration file not found: #{confile}" unless File.readable?(confile)
119
171
 
120
- $infile, $outfile, configfile = ARGV
172
+ $global_options[:infiles].each { |infile|
173
+ abort "Input file not found: #{infile}" unless File.readable?(infile)
174
+ }
121
175
 
122
- abort "Input file not found: #{$infile}" unless File.readable?($infile)
176
+ $infiles = $global_options[:infiles]
177
+ $outfile = $global_options[:outfile]
178
+ $confile = $global_options[:confile]
123
179
 
124
180
  # Load type-specific script
125
- load File.join(File.dirname(__FILE__), "flattendb.#{$type}")
181
+ begin
182
+ load File.join(File.dirname(__FILE__), "flattendb.#{$type}")
183
+ rescue LoadError
184
+ # silently ignore
185
+ end
126
186
 
127
- FlattenDB[$type].new($infile, $outfile, configfile).flatten!.to_xml
187
+ FlattenDB[$type].new($infile || $infiles, $outfile, $confile).flatten!.to_xml
128
188
 
129
- File.delete($dump_file) if $dump_file && !$options[:keep]
189
+ unless $global_options[:keep]
190
+ File.delete($dump_file) if $dump_file
191
+ end
data/bin/flattendb.mdb ADDED
@@ -0,0 +1,54 @@
1
+ #! /usr/bin/ruby
2
+
3
+ # vi:ft=ruby
4
+
5
+ #--
6
+ ###############################################################################
7
+ # #
8
+ # flattendb -- Flatten relational databases #
9
+ # #
10
+ # Copyright (C) 2007 University of Cologne, #
11
+ # Albertus-Magnus-Platz, #
12
+ # 50932 Cologne, Germany #
13
+ # #
14
+ # Authors: #
15
+ # Jens Wille <jens.wille@uni-koeln.de> #
16
+ # #
17
+ # flattendb is free software; you can redistribute it and/or modify it under #
18
+ # the terms of the GNU General Public License as published by the Free #
19
+ # Software Foundation; either version 3 of the License, or (at your option) #
20
+ # any later version. #
21
+ # #
22
+ # flattendb is distributed in the hope that it will be useful, but WITHOUT #
23
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
24
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
25
+ # more details. #
26
+ # #
27
+ # You should have received a copy of the GNU General Public License along #
28
+ # with flattendb. If not, see <http://www.gnu.org/licenses/>. #
29
+ # #
30
+ ###############################################################################
31
+ #++
32
+
33
+ if $0 == __FILE__
34
+ $type = :mdb
35
+ load File.join(File.dirname(__FILE__), 'flattendb')
36
+ else
37
+ case $options[:intype]
38
+ when :xml
39
+ $infiles.each { |infile|
40
+ abort "Input file doesn't seem to be a valid XML file, XML declaration missing: #{infile}" \
41
+ unless IO.read(infile, 6) == '<?xml '
42
+ }
43
+ when :mdb
44
+ tables_cmd = 'mdb-tables'
45
+ export_cmd = 'mdb-export'
46
+
47
+ require_commands(tables_cmd, export_cmd, :pkg => 'mdbtools')
48
+ require_libraries('fastercsv')
49
+
50
+ $infiles.map! { |infile|
51
+ $dump_file
52
+ }
53
+ end
54
+ end
data/bin/flattendb.mysql CHANGED
@@ -34,25 +34,18 @@ if $0 == __FILE__
34
34
  $type = :mysql
35
35
  load File.join(File.dirname(__FILE__), 'flattendb')
36
36
  else
37
+ $infile = $infiles.first
38
+
37
39
  case $options[:intype]
38
40
  when :xml
39
41
  abort "Input file doesn't seem to be a valid XML file, XML declaration missing" \
40
42
  unless IO.read($infile, 6) == '<?xml '
41
43
  when :sql
42
- require 'mysql'
43
-
44
44
  mysql_cmd = 'mysql'
45
45
  dump_cmd = 'mysqldump'
46
46
 
47
- [mysql_cmd, dump_cmd].each { |cmd|
48
- catch :cmd_found do
49
- ENV['PATH'].split(':').each { |path|
50
- throw :cmd_found if File.executable?(File.join(path, cmd))
51
- }
52
-
53
- abort "Command not found: #{cmd}"
54
- end
55
- }
47
+ require_commands(mysql_cmd, dump_cmd, :pkg => 'a suitable MySQL client')
48
+ require_libraries('mysql')
56
49
 
57
50
  mysql_user = ask('Please enter the MySQL user name: ') \
58
51
  { |q| q.default = ENV['USER'] }
@@ -26,6 +26,8 @@
26
26
  ###############################################################################
27
27
  #++
28
28
 
29
+ require 'yaml'
30
+
29
31
  require 'rubygems'
30
32
  require 'builder'
31
33
 
@@ -58,9 +60,47 @@ module FlattenDB
58
60
  protected
59
61
 
60
62
  def inherited(klass)
61
- types[klass.name.split('::')[1..-1].downcase.to_sym] = klass
63
+ types[klass.name.split('::')[1..-1].join('/').downcase.to_sym] = klass
64
+ end
65
+
66
+ end
67
+
68
+ attr_reader :root, :config, :input, :output
69
+
70
+ def initialize(infiles, outfile, config)
71
+ config = case config
72
+ when Hash
73
+ config
74
+ when String
75
+ # assume file name
76
+ YAML.load_file(config)
77
+ else
78
+ raise ArgumentError, "invalid config argument of type '#{config.class}'"
62
79
  end
80
+ raise ArgumentError, "can't have more than one primary (root) table" if config.size > 1
81
+
82
+ (@root, @config), _ = *config # get "first" (and only) hash element
83
+
84
+ @input = [*infiles].map { |infile|
85
+ case infile
86
+ when String
87
+ infile
88
+ when File
89
+ infile.path
90
+ else
91
+ raise ArgumentError, "invalid infile argument of type '#{infile.class}'"
92
+ end
93
+ }
63
94
 
95
+ @output = case outfile
96
+ when IO
97
+ outfile
98
+ when String
99
+ # assume file name
100
+ File.open(outfile, 'w')
101
+ else
102
+ raise ArgumentError, "invalid outfile argument of type '#{outfile.class}'"
103
+ end
64
104
  end
65
105
 
66
106
  def flatten!(*args)
@@ -0,0 +1,79 @@
1
+ #--
2
+ ###############################################################################
3
+ # #
4
+ # A component of flattendb, the relational database flattener. #
5
+ # #
6
+ # Copyright (C) 2007 University of Cologne, #
7
+ # Albertus-Magnus-Platz, #
8
+ # 50932 Cologne, Germany #
9
+ # #
10
+ # Authors: #
11
+ # Jens Wille <jens.wille@uni-koeln.de> #
12
+ # #
13
+ # flattendb is free software; you can redistribute it and/or modify it under #
14
+ # the terms of the GNU General Public License as published by the Free #
15
+ # Software Foundation; either version 3 of the License, or (at your option) #
16
+ # any later version. #
17
+ # #
18
+ # flattendb is distributed in the hope that it will be useful, but WITHOUT #
19
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
20
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
21
+ # more details. #
22
+ # #
23
+ # You should have received a copy of the GNU General Public License along #
24
+ # with flattendb. If not, see <http://www.gnu.org/licenses/>. #
25
+ # #
26
+ ###############################################################################
27
+ #++
28
+
29
+ module FlattenDB
30
+
31
+ module CLI
32
+
33
+ def require_libraries(*libraries)
34
+ parse_arguments(libraries, :gem).each { |lib, gem|
35
+ begin
36
+ require lib
37
+ rescue LoadError
38
+ abort_with_msg('Ruby library not found: %s', lib, 'Please install gem %s first', gem)
39
+ end
40
+ }
41
+ end
42
+
43
+ def require_commands(*commands)
44
+ parse_arguments(commands, :pkg).each { |cmd, pkg|
45
+ catch :cmd_found do
46
+ ENV['PATH'].split(':').each { |path|
47
+ throw :cmd_found if File.executable?(File.join(path, cmd))
48
+ }
49
+
50
+ abort_with_msg("Command not found: #{cmd}", "Please install #{pkg} first", pkg || cmd)
51
+ end
52
+ }
53
+ end
54
+
55
+ def abort_with_msg(msg1, arg1, msg2, arg2)
56
+ msg = msg1 % arg1
57
+ msg += " (#{msg2})" % (arg2 || arg1)
58
+
59
+ abort msg
60
+ end
61
+
62
+ private
63
+
64
+ def parse_arguments(arguments, option)
65
+ options = arguments.last.is_a?(Hash) ? arguments.pop : {}
66
+ special = options.delete(option)
67
+
68
+ arguments.map { |arg|
69
+ [arg, special]
70
+ } + options.map { |args, spx|
71
+ [*args].map { |arg|
72
+ [arg, spx]
73
+ }
74
+ }.flatten_once
75
+ end
76
+
77
+ end
78
+
79
+ end
@@ -0,0 +1,53 @@
1
+ #--
2
+ ###############################################################################
3
+ # #
4
+ # A component of flattendb, the relational database flattener. #
5
+ # #
6
+ # Copyright (C) 2007 University of Cologne, #
7
+ # Albertus-Magnus-Platz, #
8
+ # 50932 Cologne, Germany #
9
+ # #
10
+ # Authors: #
11
+ # Jens Wille <jens.wille@uni-koeln.de> #
12
+ # #
13
+ # flattendb is free software; you can redistribute it and/or modify it under #
14
+ # the terms of the GNU General Public License as published by the Free #
15
+ # Software Foundation; either version 3 of the License, or (at your option) #
16
+ # any later version. #
17
+ # #
18
+ # flattendb is distributed in the hope that it will be useful, but WITHOUT #
19
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
20
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
21
+ # more details. #
22
+ # #
23
+ # You should have received a copy of the GNU General Public License along #
24
+ # with flattendb. If not, see <http://www.gnu.org/licenses/>. #
25
+ # #
26
+ ###############################################################################
27
+ #++
28
+
29
+ require 'xml/libxml'
30
+
31
+ require 'flattendb/base'
32
+
33
+ module FlattenDB
34
+
35
+ class MDB < Base
36
+
37
+ JOIN_KEY = '@key'
38
+
39
+ def initialize(infiles, outfile, config)
40
+ super
41
+ end
42
+
43
+ def flatten!(options = {}, builder_options = {})
44
+ self
45
+ end
46
+
47
+ def to_xml(output = output, builder_options = {})
48
+ self
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -26,7 +26,6 @@
26
26
  ###############################################################################
27
27
  #++
28
28
 
29
- require 'yaml'
30
29
  require 'xml/libxml'
31
30
 
32
31
  require 'flattendb/base'
@@ -37,41 +36,12 @@ module FlattenDB
37
36
 
38
37
  JOIN_KEY = '@key'
39
38
 
40
- attr_reader :root, :config, :output, :document, :database, :name, :tables, :builder
39
+ attr_reader :document, :database, :name, :tables, :builder
41
40
 
42
41
  def initialize(infile, outfile, config)
43
- config = case config
44
- when Hash
45
- config
46
- when String
47
- # assume file name
48
- YAML.load_file(config)
49
- else
50
- raise ArgumentError, "invalid config argument of type '#{config.class}'"
51
- end
52
- raise ArgumentError, "can't have more than one primary (root) table" if config.size > 1
53
-
54
- (@root, @config), _ = *config # get "first" (and only) hash element
55
-
56
- @output = case outfile
57
- when IO
58
- outfile
59
- when String
60
- # assume file name
61
- File.open(outfile, 'w')
62
- else
63
- raise ArgumentError, "invalid outfile argument of type '#{outfile.class}'"
64
- end
65
-
66
- @document = XML::Document.file(case infile
67
- when String
68
- infile
69
- when File
70
- infile.path
71
- else
72
- raise ArgumentError, "invalid infile argument of type '#{infile.class}'"
73
- end)
42
+ super
74
43
 
44
+ @document = XML::Document.file(@input.first)
75
45
  @database = @document.root.find_first('database[@name]')
76
46
  @name = @database[:name]
77
47
  @tables = {}
@@ -32,7 +32,7 @@ module FlattenDB
32
32
 
33
33
  MAJOR = 0
34
34
  MINOR = 0
35
- TINY = 1
35
+ TINY = 2
36
36
 
37
37
  class << self
38
38
 
metadata CHANGED
@@ -1,97 +1,116 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: flattendb
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.0.1.96
7
- date: 2007-10-11 00:00:00 +02:00
8
- summary: Flatten relational databases
9
- require_paths:
10
- - lib
11
- email: jens.wille@uni-koeln.de
12
- homepage:
13
- rubyforge_project:
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.0.2.162
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Jens Wille
31
- files:
32
- - lib/flattendb.rb
33
- - lib/flattendb/version.rb
34
- - lib/flattendb/mysql.rb
35
- - lib/flattendb/base.rb
36
- - bin/flattendb
37
- - bin/flattendb.mysql
38
- - COPYING
39
- - README
40
- - ChangeLog
41
- - Rakefile
42
- - example/mysql-sample.sql
43
- - example/mysql-sample2flat.yaml
44
- - example/mysql-sample.flat.xml
45
- - example/mysql-sample.xml
46
- test_files: []
47
-
48
- rdoc_options: []
49
-
50
- extra_rdoc_files:
51
- - README
52
- - COPYING
53
- - ChangeLog
54
- executables:
55
- - flattendb
56
- - flattendb.mysql
57
- extensions: []
58
-
59
- requirements: []
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
60
11
 
12
+ date: 2008-01-08 00:00:00 +01:00
13
+ default_executable:
61
14
  dependencies:
62
15
  - !ruby/object:Gem::Dependency
63
16
  name: highline
64
17
  version_requirement:
65
- version_requirements: !ruby/object:Gem::Version::Requirement
18
+ version_requirements: !ruby/object:Gem::Requirement
66
19
  requirements:
67
- - - ">"
20
+ - - ">="
68
21
  - !ruby/object:Gem::Version
69
- version: 0.0.0
22
+ version: "0"
70
23
  version:
71
24
  - !ruby/object:Gem::Dependency
72
- name: mysql
25
+ name: libxml-ruby
73
26
  version_requirement:
74
- version_requirements: !ruby/object:Gem::Version::Requirement
27
+ version_requirements: !ruby/object:Gem::Requirement
75
28
  requirements:
76
- - - ">"
29
+ - - ">="
77
30
  - !ruby/object:Gem::Version
78
- version: 0.0.0
31
+ version: "0"
79
32
  version:
80
33
  - !ruby/object:Gem::Dependency
81
- name: libxml-ruby
34
+ name: builder
82
35
  version_requirement:
83
- version_requirements: !ruby/object:Gem::Version::Requirement
36
+ version_requirements: !ruby/object:Gem::Requirement
84
37
  requirements:
85
- - - ">"
38
+ - - ">="
86
39
  - !ruby/object:Gem::Version
87
- version: 0.0.0
40
+ version: "0"
88
41
  version:
89
42
  - !ruby/object:Gem::Dependency
90
- name: builder
43
+ name: ruby-nuggets
91
44
  version_requirement:
92
- version_requirements: !ruby/object:Gem::Version::Requirement
45
+ version_requirements: !ruby/object:Gem::Requirement
93
46
  requirements:
94
- - - ">"
47
+ - - ">="
95
48
  - !ruby/object:Gem::Version
96
- version: 0.0.0
49
+ version: "0"
97
50
  version:
51
+ description: Flatten relational databases.
52
+ email: jens.wille@uni-koeln.de
53
+ executables:
54
+ - flattendb
55
+ - flattendb.mysql
56
+ - flattendb.mdb
57
+ extensions: []
58
+
59
+ extra_rdoc_files:
60
+ - README
61
+ - COPYING
62
+ - ChangeLog
63
+ files:
64
+ - lib/flattendb/version.rb
65
+ - lib/flattendb/base.rb
66
+ - lib/flattendb/cli.rb
67
+ - lib/flattendb/types/mysql.rb
68
+ - lib/flattendb/types/mdb.rb
69
+ - lib/flattendb.rb
70
+ - bin/flattendb
71
+ - bin/flattendb.mysql
72
+ - bin/flattendb.mdb
73
+ - COPYING
74
+ - README
75
+ - ChangeLog
76
+ - Rakefile
77
+ - example/mysql-sample.sql
78
+ - example/mysql-sample2flat.yaml
79
+ - example/mysql-sample.flat.xml
80
+ - example/mysql-sample.xml
81
+ has_rdoc: true
82
+ homepage: http://prometheus.rubyforge.org/flattendb
83
+ post_install_message:
84
+ rdoc_options:
85
+ - --all
86
+ - --inline-source
87
+ - --charset
88
+ - UTF-8
89
+ - --main
90
+ - README
91
+ - --title
92
+ - flattendb Application documentation
93
+ - --line-numbers
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ version:
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: "0"
107
+ version:
108
+ requirements: []
109
+
110
+ rubyforge_project: prometheus
111
+ rubygems_version: 1.0.1
112
+ signing_key:
113
+ specification_version: 2
114
+ summary: Flatten relational databases.
115
+ test_files: []
116
+