sqlite2dbf 0.2 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ff3c85738ba063a8b74ca3729e4f4d34fd0310f
4
- data.tar.gz: abfe59914da80f1118822e0a3ebf91a93c5f5a40
3
+ metadata.gz: 1b3185c1faa5124f320a012e00126f27bf98959f
4
+ data.tar.gz: 916a050f7b7cf55108f73f2871aff56ab6149fd1
5
5
  SHA512:
6
- metadata.gz: ef5cbc10c43925b74b319b9049d81ccd9c04e95d2158ddb0954f7232377eff0c2a3323cd4b333193e3947bd7599bdbe0081baa6f8d59752fc77c432bb682048e
7
- data.tar.gz: 48b7629bcf6b490f3f1396d61991a48134a1b6dc05be084136bd49cd0bafbbac7b77714e84a344adb3a50f7d0c1fc1d7211231ba12d1879ba40ce02494807544
6
+ metadata.gz: '00850c4fe8bf96a5e21f0d8fb4c809cb9909ab30ef3c132b20166a9ac6eaf726f28018d47f486e244039e537729e20a4b00b13b4b066327a00ac1f985d0eb194'
7
+ data.tar.gz: 8a8a6fda0faef19b4be0ba93927ce2066a1589b99c64381b3549253b0c5f14ba6f84ec174399593a70c741622032d0e20d64d3ff1465b199cae17ddb6c65a6a4
data/lib/argparser.rb CHANGED
@@ -33,13 +33,15 @@ class ArgParser
33
33
  self.extend(Logging)
34
34
  self.extend(Translating)
35
35
  @@log = init_logger()
36
-
36
+
37
37
  # Returns a structure describing the options.
38
38
  #
39
39
  def self.parse(args)
40
- # The options specified on the command line will be collected in <b>options</b>.
41
- # We set default values here.
42
-
40
+ # The options specified on the command line will be collected in
41
+ # <b>options</b>. No defaults. Most options are optional and do not
42
+ # have to be set at all.
43
+ # The others must be named for each transformation or be set in the
44
+ # configuration-file.
43
45
  options = OpenStruct.new
44
46
 
45
47
  op = OptionParser.new do |opts|
@@ -49,36 +51,36 @@ class ArgParser
49
51
  opts.separator trl("Specific options") << ':'
50
52
 
51
53
  opts.on('-' << trl("s"), '--' << trl("source [PATH]"), trl( "SQLite-file to read.")) do |source|
52
- options.source = source
54
+ options.source = source
53
55
  end
54
56
 
55
57
  opts.on('-' << trl('c'), '--' << trl("config [PATH]"), trl('Configuration file for this transformation')) do |config|
56
- options.config = config
58
+ options.config = config
57
59
  end
58
60
 
59
61
  opts.on('-' << trl('n'), '--' << trl("name [TABLE]"), trl('The name of the table from the SQLite-database to convert')) do |name|
60
- options.name = name
62
+ options.name = name
61
63
  end
62
64
 
63
65
  opts.on('-' << trl("t"), '--' << trl("target [PATH]"), trl( "Path to the dBase-file to be written.")) do |target|
64
- options.target = target
66
+ options.target = target
65
67
  end
66
68
 
67
69
  opts.on('-' << trl("l"), '--' << trl("list"), trl( "Show the list of available tables and exit")) do |target|
68
- options.list = true
70
+ options.list = true
69
71
  end
70
72
 
71
73
  opts.on('-' << trl('o'), '--' << trl("out [PATH]"), trl('Use the table-name as file-name for the DBF-result, store output in PATH')) do |path|
72
- options.name_like_table = true
73
- options.out = path
74
+ options.name_like_table = true
75
+ options.out = path
74
76
  end
75
77
 
76
78
  opts.on('--' << trl("time [list]"), trl( "Fields (table-columns) which shall be handled as timestamp values.")) do |list|
77
- options.time = list.gsub(/[,;]/, '').split
79
+ options.time = list.gsub(/[,;]/, '').split
78
80
  end
79
81
 
80
82
  opts.on('--' << trl("date [list]"), trl( "Fields (table-columns) which shall be handled as date-time values.")) do |list|
81
- options.datetime = list.gsub(/[,;]/, '').split
83
+ options.datetime = list.gsub(/[,;]/, '').split
82
84
  end
83
85
 
84
86
  =begin
@@ -88,13 +90,13 @@ class ArgParser
88
90
  # much management.
89
91
 
90
92
  opts.on("-c", "--config [CONFIG FILE]",
91
- "Read alternative configuration from this file") do |conf|
92
- $LOG.debug("config-file should be #{conf}") if $LOG
93
- options.config = File.expand_path(conf )
93
+ "Read alternative configuration from this file") do |conf|
94
+ $LOG.debug("config-file should be #{conf}") if $LOG
95
+ options.config = File.expand_path(conf )
94
96
  end
95
97
  opts.on("-g", "--generic [CONFIG FILE]",
96
- "Write generic configuration options to this file") do |file|
97
- options.generic = File.expand_path(file )
98
+ "Write generic configuration options to this file") do |file|
99
+ options.generic = File.expand_path(file )
98
100
  end
99
101
  =end
100
102
  opts.separator ""
@@ -103,20 +105,20 @@ end
103
105
  # No argument, shows at tail. This will print an options summary.
104
106
  #
105
107
  opts.on_tail(trl("-d"), trl("--debug"), trl("Show debug-messages") ) do
106
- options.debug = true
107
- @@log.level = Logger::DEBUG
108
+ options.debug = true
109
+ @@log.level = Logger::DEBUG
108
110
  end
109
111
 
110
112
 
111
113
  opts.on_tail(trl("-h"), trl("--help"), trl("Show this message") ) do
112
- puts opts
113
- exit true
114
+ puts opts
115
+ exit true
114
116
  end
115
117
 
116
118
  opts.on_tail(trl("-v"), trl("--version"), trl("Show version and program information") ) do
117
- puts "\t#{$APPNAME}"
118
- puts "\t© #{$YEARS}, <#{$AUTHORS.join(', ')}>"
119
- exit true
119
+ puts "\t#{$APPNAME}"
120
+ puts "\t© #{$YEARS}, <#{$AUTHORS.join(', ')}>"
121
+ exit true
120
122
  end
121
123
  end
122
124
  begin
data/lib/config CHANGED
@@ -84,7 +84,7 @@ time:
84
84
  # Example: joined
85
85
  # "expires since last_update"
86
86
  # Default: empty (NOT required)
87
- date: last_visit_date
87
+ date:
88
88
 
89
89
  # Shall the dBase-file be named after the table? Is set by specifying a
90
90
  # target-directory as value to this option.
data/lib/constants.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  $APPNAME = 'sqlite2dbf'
2
- $VERSION = '0.2'
2
+ $VERSION = '0.2.2'
3
3
  $DATE = '2016-11-24'
4
4
  $AUTHORS = ["Michael Uplawski <michael.uplawski@uplawski.eu>"]
5
5
  $EMAIL = 'michael.uplawski@uplawski.eu'
data/lib/log.conf CHANGED
@@ -35,7 +35,6 @@ warn = Logger::WARN
35
35
  unknown = Logger::UNKNOWN
36
36
  {
37
37
  # <---------------- to here !
38
-
39
38
  # Enter your settings here, but take into consideration that not all
40
39
  # the named classes will really produce readable output. Well, you can
41
40
  # always try... Either name just the log-level or make the log-level
data/lib/mapping.rb CHANGED
@@ -52,8 +52,8 @@ class Mapping
52
52
  }
53
53
 
54
54
  # Constructor
55
- # Creates a mapping for the table of name 'table'
56
- # and basedon the table_info.
55
+ # Creates a mapping for the table of name config.name and basedon the
56
+ # table_info.
57
57
  def initialize config, table_info, content
58
58
  init_logger()
59
59
 
data/lib/sqlite2dbf.rb CHANGED
@@ -73,24 +73,28 @@ class SQLite2DBF
73
73
  exit false
74
74
  end
75
75
 
76
+ # dbf_file is eather named explicitly
76
77
  dbf_file = @config.target if @config.target
77
- if(@config.out)
78
- dbf_file = @config.out << File::Separator << @config.name
79
- end
80
- dbf_file ||= File.dirname(sqlite_file) << File::Separator << File.basename(sqlite_file, '.*')
78
+ # .., derived from the table-name
79
+ dbf_file = @config.out << File::Separator << @config.name if(@config.out)
80
+ # .., or identical with the original sqlite-file, minus extension, plus dbf
81
+ dbf_file ||= File.dirname(sqlite_file) << File::Separator << File.basename(sqlite_file, '.*') << '.dbf'
81
82
 
82
83
  msg = nil
83
84
 
85
+ # check if dbf_file can be used
84
86
  if(File.exist?(dbf_file))
85
87
  msg = File_Checking.file_check(dbf_file, :file, :writable)
86
88
  elsif(File.exist?(File.dirname(dbf_file)))
87
89
  msg = File_Checking.file_check(File.dirname(dbf_file), :directory, :writable)
88
90
  end
89
91
 
92
+ # then do it
90
93
  if(!msg)
91
- @log.debug('will transform ' << sqlite_file << ' to ' << dbf_file.to_s << '.dbf')
94
+ @log.debug('will transform ' << sqlite_file << ' to ' << dbf_file.to_s)
92
95
  transform(db, dbf_file)
93
96
  else
97
+ # or not
94
98
  msg = trl("ERROR! Unsuitable file") << " : %s" %msg
95
99
  @log.error(msg)
96
100
  exit false
@@ -124,20 +128,20 @@ class SQLite2DBF
124
128
  end
125
129
  end
126
130
 
131
+ # create a date-value from value
127
132
  def date(db, value)
128
133
  dbf_value = db.execute("select strftime('%Y-%m-%d %H:%M:%S', " << value.to_s << ", 'unixepoch')").join
134
+ # ... or not.
129
135
  @log.warn(trl("ATTN! SQLite2DBF cannot convert the date-value %s into DBF-compatible format.") %value.to_s) if dbf_value.start_with?('-')
130
136
  dbf_value = db.execute("select strftime('%s', " << value.to_s << ")").join if dbf_value.start_with?('-')
131
137
  end
132
138
 
139
+ # create a time-vaue from value
133
140
  def time(db, value)
134
141
  db.execute("select strftime('%s', " << value.to_s << ", 'unixepoch')").join
135
142
  end
136
143
 
137
-
138
-
139
144
  def transform(db, dbf_file)
140
-
141
145
  begin
142
146
  tname = @config.name
143
147
  table_info = db.table_info(tname)
data/lib/translating.rb CHANGED
@@ -35,15 +35,23 @@ require_relative 'logging'
35
35
  =end
36
36
  module Translating
37
37
  self.extend(Logging)
38
+
39
+ # intitialize class variabes (static attributes)
40
+
38
41
  @@log = init_logger(STDOUT)
39
42
  # There are better ways to extend a translated
40
43
  # string, but I keep the 'wild-card' for
41
44
  # historical reasons.
45
+ # TODO: get rid of this crap!
42
46
  @@awild = 'XX'
43
47
 
44
48
  @@lang = nil
49
+ # TODO: reflect about this. The possibility to write a LANG-file is
50
+ # okay, sometimes. Most of the time it is not.
45
51
  @@lang_file = format("%s%s", RD, 'LANG')
52
+
46
53
  @@tr = YAML::load_file("#{RD}translations")
54
+
47
55
  # find the current language-setting and return it.
48
56
  def self.language()
49
57
  if @@lang == nil
@@ -62,6 +70,9 @@ module Translating
62
70
  # The args parameter may contain replacement-text which
63
71
  # will appear at the positions indicated by wildcard-characters
64
72
  # in the original string.
73
+ #
74
+ # TODO: Come on! sprintf-syntax is far better than the awkward 'wildcard'.
75
+ # Just remove this crap.
65
76
  def self.trl(t, *args)
66
77
 
67
78
  @@log.debug('@tr is ' << @@tr.to_s)
data/lib/translations CHANGED
@@ -29,7 +29,7 @@ Usage:
29
29
 
30
30
  or %s [Common options]:
31
31
  de: oder %s [Allgemeine Optionen]
32
- fr: ou %s [Options généraux]
32
+ fr: ou %s [Options générales]
33
33
 
34
34
  Specific options:
35
35
  de: Spezielle Optionen
@@ -134,7 +134,7 @@ out [PATH]:
134
134
 
135
135
  Common options:
136
136
  de: Allgemeine Optionen
137
- fr: Options généraux
137
+ fr: Options générales
138
138
 
139
139
  # program option -d (debug)
140
140
  -d:
data/sqlite2dbf.gemspec CHANGED
@@ -3,13 +3,16 @@ Gem::Specification.new do |s|
3
3
  s.name = $APPNAME
4
4
  s.version = $VERSION
5
5
  s.date = $DATE
6
- s.summary = "Rewrite of the main-class SQLite2DBF, mappings in the new class Mappings, the configuration can be persisted. New program-options. New translations."
6
+ s.summary = "Runtime-requirements added. Rewrite of the main-class SQLite2DBF, mappings in the new class Mappings, the configuration can be persisted. New program-options. New translations."
7
7
  s.description = "converts SQLite to DBase"
8
8
  s.authors = $AUTHORS
9
9
  s.email = $EMAIL
10
10
  s.files = %w~sqlite2dbf~.collect{|f| 'bin/' << f} + %w~constants.rb mapping.rb argparser.rb sqlite2dbf.rb file_checking.rb log.conf logging.rb mapping.rb configuration.rb config translating.rb translations ~.collect{|f| 'lib/' << f} + %w~sqlite2dbf.gemspec~.collect{|f|f}
11
11
  s.requirements = 'shp, sqlite3'
12
+ s.add_runtime_dependency 'shp', '~> 0.0', '>= 0.0.3'
13
+ s.add_runtime_dependency 'sqlite3', '~> 1.3', '>= 1.3.12'
12
14
  s.executables = 'sqlite2dbf'
13
15
  s.license = $LICENSE
16
+ s.homepage = 'https://rubygems.org/gems/sqlite2dbf'
14
17
  s.required_ruby_version = '>= 2.3'
15
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlite2dbf
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Uplawski <michael.uplawski@uplawski.eu>
@@ -9,7 +9,47 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2016-11-24 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: shp
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.0.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.0.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: sqlite3
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.3'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.3.12
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.3'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.3.12
13
53
  description: converts SQLite to DBase
14
54
  email: michael.uplawski@uplawski.eu
15
55
  executables:
@@ -30,7 +70,7 @@ files:
30
70
  - lib/translating.rb
31
71
  - lib/translations
32
72
  - sqlite2dbf.gemspec
33
- homepage:
73
+ homepage: https://rubygems.org/gems/sqlite2dbf
34
74
  licenses:
35
75
  - GPL-3.0
36
76
  metadata: {}
@@ -54,6 +94,7 @@ rubyforge_project:
54
94
  rubygems_version: 2.6.8
55
95
  signing_key:
56
96
  specification_version: 4
57
- summary: Rewrite of the main-class SQLite2DBF, mappings in the new class Mappings,
58
- the configuration can be persisted. New program-options. New translations.
97
+ summary: Runtime-requirements added. Rewrite of the main-class SQLite2DBF, mappings
98
+ in the new class Mappings, the configuration can be persisted. New program-options.
99
+ New translations.
59
100
  test_files: []