echi-converter 0.2.1 → 0.3.0

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.txt CHANGED
@@ -84,4 +84,22 @@
84
84
  * Major enhancement(s):
85
85
  * Minor enhancement(s):
86
86
  * Bug fix(es):
87
- * Fixed the database schema to pull from the appropriate config file information for the PCO schema
87
+ * Fixed the database schema to pull from the appropriate config file information for the PCO schema
88
+
89
+ == 0.2.2 2007-10-26
90
+
91
+ * Major enhancement(s):
92
+ * Minor enhancement(s):
93
+ * Bug fix(es):
94
+ * Fixed the utility to only process files with the prefix 'chr' in order to avoid picking up other files from the 'to_process' directory
95
+ * Fixed the database_presence.rb to explicitly define tables rather than derive from the application.yml
96
+
97
+ == 0.3.0 2007-11-02
98
+
99
+ * Major enhancement(s):
100
+ * Added the ability to auto-recognize when running on Windows and enable running as a Windows Service (FR#14856/14852)
101
+ * Minor enhancement(s):
102
+ * Changed 'echi_ftp_delete:' default setting to 'Y'
103
+ * A fair amount of internal code refactoring
104
+ * Bug fix(es):
105
+ * Fixed bug so that the log file properly reports when a file is processed
data/Manifest.txt CHANGED
@@ -8,6 +8,7 @@ lib/echi-converter/version.rb
8
8
  lib/database.rb
9
9
  lib/database_presence.rb
10
10
  lib/main.rb
11
+ lib/main_win32.rb
11
12
  lib/echi-converter.rb
12
13
  scripts/txt2html
13
14
  setup.rb
data/bin/echi-converter CHANGED
@@ -4,6 +4,32 @@ require 'daemons'
4
4
  require 'fileutils'
5
5
  include FileUtils
6
6
 
7
+ usage = "Usage:
8
+ echi-converter create myproject - create the local project to run the ECHI converter from (on Windows, directory names must not have spaces)
9
+ echi-converter upgrade myproject - location of project to upgrade after a new gem version is installed"
10
+
11
+ #If we are running on Windows lets load the libraries necessary to run a win32 service
12
+ if RUBY_PLATFORM["-mswin32"]
13
+ require 'win32/service'
14
+ include Win32
15
+ usage = usage +
16
+ "
17
+ echi-converter install myproject - install the service (must specify complete path such as c:\path\to\my\project )
18
+ echi-converter start - start the service
19
+ echi-converter stop - stop the service
20
+ echi-converter pause - pause the service
21
+ echi-converter resume - resume the service
22
+ echi-converter uninstall - uninstall the service
23
+ echi-converter delete - delete the service"
24
+ else
25
+ usage = usage +
26
+ "echi-converter run myproject - Run the ECHI converter interactively from the location given
27
+ echi-converter start myproject - Start the ECHI converter in daemon mode from the location given
28
+ echi-converter stop myproject - Stop the ECHI converter daemon
29
+ echi-converter restart myproject - Restart the ECHI converter
30
+ echi-converter zap myproject - If there has been an unexpected close and the system still thinks the converter is running, clean up the pid files"
31
+ end
32
+
7
33
  def set_operating_environ
8
34
  #Build details on the gem installed and its location and version
9
35
  gem_searcher = Gem::GemPathSearcher.new
@@ -15,7 +41,11 @@ end
15
41
  def create_project dir_name
16
42
  if dir_name == nil
17
43
  puts 'You must specify a directory name, proper usage is:'
18
- puts 'echi-converter-create /path/to/my/directory'
44
+ if RUBY_PLATFORM['-mswin']
45
+ puts 'echi-converter create c:\path\to\my\directory'
46
+ else
47
+ puts 'echi-converter create /path/to/my/directory'
48
+ end
19
49
  puts 'Exiting...'
20
50
  exit
21
51
  end
@@ -70,7 +100,43 @@ def upgrade_project project_name
70
100
  puts 'Successfully upgraded ' + project_name
71
101
  end
72
102
 
73
- #Used launch dynamically or as a deamon
103
+ #Launches as a Windows Service
104
+ def launch_service run_type, project_name
105
+ service_status = nil
106
+ if project_name != nil
107
+ service_exe = "c:\\ruby\\bin\\rubyw.exe " + project_name + "\\lib\\main_win32.rb"
108
+ end
109
+ begin
110
+ case run_type
111
+ when "install"
112
+ s = Service.new()
113
+ s.create_service { |s|
114
+ s.service_name = "ECHI-Converter"
115
+ s.binary_path_name = service_exe
116
+ #s.service_type = Service::AUTO_START
117
+ s.display_name = "ECHI-Converter"
118
+ s.service_description = "ECHI-Converter Service for " + project_name
119
+ }
120
+ s.close
121
+ when "start"
122
+ Service.start("ECHI-Converter")
123
+ when "stop"
124
+ Service.stop("ECHI-Converter")
125
+ when "pause"
126
+ Service.pause("ECHI-Converter")
127
+ when "resume"
128
+ Service.resume("ECHI-Converter")
129
+ when "delete"
130
+ Service.delete("ECHI-Converter")
131
+ end
132
+ service_status = Service.status("ECHI-Converter")
133
+ return service_status.current_state
134
+ rescue => err
135
+ return err
136
+ end
137
+ end
138
+
139
+ #Launches dynamically or as a deamon for *NIX platforms
74
140
  def launch_project run_type, project_name
75
141
 
76
142
  #Set various file paths
@@ -113,17 +179,15 @@ if ARGV[0] == 'create'
113
179
  create_project ARGV[1]
114
180
  elsif ARGV[0] == 'upgrade'
115
181
  upgrade_project ARGV[1]
182
+ elsif RUBY_PLATFORM["-mswin32"]
183
+ if ARGV[0] == 'install' || ARGV[0] == 'start' || ARGV[0] == 'stop' || ARGV[0] == 'pause' || ARGV[0] == 'resume' || ARGV[0] == 'uninstall' || ARGV[0] == 'delete' || ARGV[0] == 'status'
184
+ service_status = launch_service ARGV[0], ARGV[1]
185
+ puts 'ECHI-Converter: ' + service_status
186
+ else
187
+ puts usage
188
+ end
116
189
  elsif ARGV[0] == 'run' || ARGV[0] == 'start' || ARGV[0] == 'stop' || ARGV[0] == 'zap' || ARGV[0] == 'restart'
117
190
  launch_project ARGV[0], ARGV[1]
118
191
  else
119
- usage = "Usage:
120
- echi-converter create myproject - create the local project to run the ECHI converter from
121
- echi-converter upgrade myproject - location of project to upgrade after a new gem version is installed
122
-
123
- echi-converter run myproject - Run the ECHI converter interactively from the location given
124
- echi-converter start myproject - Start the ECHI converter in daemon mode from the location given
125
- echi-converter stop myproject - Stop the ECHI converter daemon
126
- echi-converter restart myproject - Restart the ECHI converter
127
- echi-converter zap myproject - If there has been an unexpected close and the system still thinks the converter is running, clean up the pid files"
128
192
  puts usage
129
- end
193
+ end
@@ -8,7 +8,7 @@ echi_password:
8
8
  echi_connect_type: ftp #only ftp supported now, possible for ssh in the future
9
9
  echi_ftp_directory: #/Users/ftp/anonymous #If blank/nil, the system will not do a CD at the start
10
10
  echi_ftp_retry: 3
11
- echi_ftp_delete: N #to not delete the files off of the FTP server set to N
11
+ echi_ftp_delete: Y #to not delete the files off of the FTP server set to N, Y to delete the files
12
12
  echi_schema: extended_version13.yml
13
13
  echi_format: BINARY #valid settings are ASCII or BINARY
14
14
  echi_process_log: Y #valid is Y/N to turn it on or off
@@ -42,8 +42,4 @@ smtp_server: mail.presenceco.com
42
42
  smtp_port: 25
43
43
 
44
44
  #Special settings for a specific application database
45
- pco_process: N #Set to yes or no if running with a PCO database
46
- pco_record_tablename: PCO_ECHIRECORD
47
- pco_record_seqname: PCO_ECHIRECORDSEQ
48
- pco_log_tablename: PCO_ECHILOG
49
- pco_log_seqname: PCO_ECHILOGSEQ
45
+ pco_process: N #Set to yes or no if running with a PCO database
@@ -37,6 +37,7 @@ files_to_copy:
37
37
  - name: lib/database_presence.rb
38
38
  - name: lib/echi-converter.rb
39
39
  - name: lib/main.rb
40
+ - name: lib/main_win32.rb
40
41
  - name: lib/echi-converter/version.rb
41
42
  - name: examples/schemas/oracle_echi.sql
42
43
 
@@ -45,4 +46,5 @@ files_to_upgrade:
45
46
  - name: lib/database_presence.rb
46
47
  - name: lib/echi-converter.rb
47
48
  - name: lib/main.rb
49
+ - name: lib/main_win32.rb
48
50
  - name: lib/echi-converter/version.rb
@@ -1,9 +1,9 @@
1
1
  class EchiRecord < ActiveRecord::Base
2
- set_table_name @config["pco_record_tablename"]
3
- set_sequence_name @config["pco_record_seqname"]
2
+ set_table_name "PCO_ECHIRECORD"
3
+ set_sequence_name "PCO_ECHIRECORDSEQ"
4
4
  end
5
5
 
6
6
  class EchiLog < ActiveRecord::Base
7
- set_table_name @config["pco_log_tablename"]
8
- set_sequence_name @config["pco_log_seqname"]
7
+ set_table_name "PCO_ECHILOG"
8
+ set_sequence_name "PCO_ECHILOGSEQ"
9
9
  end
@@ -15,10 +15,10 @@ end
15
15
  module EchiConverter
16
16
 
17
17
  def connect_database
18
- databaseconfig = @workingdirectory + '/../config/database.yml'
19
- dblogfile = @workingdirectory + '/../log/database.log'
20
- ActiveRecord::Base.logger = Logger.new(dblogfile, @config["log_number"], @config["log_length"])
21
- case @config["log_level"]
18
+ databaseconfig = $workingdir + '/../config/database.yml'
19
+ dblogfile = $workingdir + '/../log/database.log'
20
+ ActiveRecord::Base.logger = Logger.new(dblogfile, $config["log_number"], $config["log_length"])
21
+ case $config["log_level"]
22
22
  when 'FATAL'
23
23
  ActiveRecord::Base.logger.level = Logger::FATAL
24
24
  when 'ERROR'
@@ -41,9 +41,9 @@ module EchiConverter
41
41
 
42
42
  #Method to open our application log
43
43
  def initiate_logger
44
- logfile = @workingdirectory + '/../log/application.log'
45
- @log = Logger.new(logfile, @config["log_number"], @config["log_length"])
46
- case @config["log_level"]
44
+ logfile = $workingdir + '/../log/application.log'
45
+ @log = Logger.new(logfile, $config["log_number"], $config["log_length"])
46
+ case $config["log_level"]
47
47
  when 'FATAL'
48
48
  @log.level = Logger::FATAL
49
49
  when 'ERROR'
@@ -60,10 +60,10 @@ module EchiConverter
60
60
  #Method to send alert emails
61
61
  def send_email_alert reason
62
62
  begin
63
- Net::SMTP.start(@config["smtp_server"], @config["smtp_port"]) do |smtp|
64
- smtp.open_message_stream('donotreply@echi-converter.rubyforge.org', [@config["alert_email_address"]]) do |f|
63
+ Net::SMTP.start($config["smtp_server"], $config["smtp_port"]) do |smtp|
64
+ smtp.open_message_stream('donotreply@echi-converter.rubyforge.org', [$config["alert_email_address"]]) do |f|
65
65
  f.puts "From: donotreply@echi-converter.rubyforge.org"
66
- f.puts "To: " + @config['alert_email_address']
66
+ f.puts "To: " + $config['alert_email_address']
67
67
  f.puts "Subject: ECHI-Converter Failure"
68
68
  case reason
69
69
  when "DATABASE"
@@ -140,7 +140,7 @@ module EchiConverter
140
140
  #Mehtod that performs the conversions
141
141
  def convert_binary_file filename
142
142
  #Open the file to process
143
- echi_file = @workingdirectory + "/../files/to_process/" + filename
143
+ echi_file = $workingdir + "/../files/to_process/" + filename
144
144
  @binary_file = open(echi_file,"rb")
145
145
  @log.debug "File size: " + @binary_file.stat.size.to_s
146
146
 
@@ -150,7 +150,7 @@ module EchiConverter
150
150
  fileversion = dump_binary 'int', 4
151
151
  @log.debug "Version " + fileversion.to_s
152
152
 
153
- if @config["echi_process_log"] == "Y"
153
+ if $config["echi_process_log"] == "Y"
154
154
  #Log the file
155
155
  echi_log = EchiLog.new
156
156
  echi_log.filename = filename
@@ -208,7 +208,7 @@ module EchiConverter
208
208
  #Move the file to the processed directory
209
209
  FileUtils.mv(echi_file, @processeddirectory)
210
210
 
211
- if @config["echi_process_log"] == "Y"
211
+ if $config["echi_process_log"] == "Y"
212
212
  #Finish logging the details on the file
213
213
  echi_log.records = @record_cnt
214
214
  echi_log.processed_at = Time.now
@@ -221,9 +221,9 @@ module EchiConverter
221
221
  def connect_ftpsession
222
222
  #Open ftp connection
223
223
  begin
224
- if @config["echi_connect_type"] == 'ftp'
225
- ftp_session = Net::FTP.new(@config["echi_host"])
226
- ftp_session.login @config["echi_username"], @config["echi_password"]
224
+ if $config["echi_connect_type"] == 'ftp'
225
+ ftp_session = Net::FTP.new($config["echi_host"])
226
+ ftp_session.login $config["echi_username"], $config["echi_password"]
227
227
  @log.info "Successfully connected to the ECHI FTP server"
228
228
  else
229
229
  #Stub for possible SSH support in the future
@@ -250,14 +250,14 @@ module EchiConverter
250
250
  sleep 5
251
251
  end
252
252
  attempts += 1
253
- if @config["echi_ftp_retry"] == attempts
253
+ if $config["echi_ftp_retry"] == attempts
254
254
  ftp_session = 0
255
255
  end
256
256
  end
257
257
  if ftp_session != 0
258
258
  begin
259
- if @config["echi_ftp_directory"] != nil
260
- ftp_session.chdir(@config["echi_ftp_directory"])
259
+ if $config["echi_ftp_directory"] != nil
260
+ ftp_session.chdir($config["echi_ftp_directory"])
261
261
  end
262
262
  files = ftp_session.list('chr*')
263
263
  file_cnt = 0
@@ -265,10 +265,10 @@ module EchiConverter
265
265
  #ACTION: Need to detect which OS we are running on and then parse the ftp data appropriately
266
266
  file_data = file.split(' ')
267
267
  remote_filename = file_data[8]
268
- local_filename = @workingdirectory + '/../files/to_process/' + remote_filename
268
+ local_filename = $workingdir + '/../files/to_process/' + remote_filename
269
269
  ftp_session.getbinaryfile(remote_filename, local_filename)
270
270
  files_to_process[file_cnt] = remote_filename
271
- if @config["echi_ftp_delete"] == 'Y'
271
+ if $config["echi_ftp_delete"] == 'Y'
272
272
  begin
273
273
  ftp_session.delete(remote_filename)
274
274
  rescue => err
@@ -287,9 +287,9 @@ module EchiConverter
287
287
  end
288
288
 
289
289
  def process_ascii filename
290
- echi_file = @workingdirectory + "/../files/to_process/" + filename
290
+ echi_file = $workingdir + "/../files/to_process/" + filename
291
291
 
292
- if @config["echi_process_log"] == "Y"
292
+ if $config["echi_process_log"] == "Y"
293
293
  #Log the file
294
294
  echi_log = EchiLog.new
295
295
  echi_log.filename = filename
@@ -333,7 +333,7 @@ def process_ascii filename
333
333
  #Move the file to the processed directory
334
334
  FileUtils.mv(echi_file, @processeddirectory)
335
335
 
336
- if @config["echi_process_log"] == "Y"
336
+ if $config["echi_process_log"] == "Y"
337
337
  #Finish logging the details on the file
338
338
  echi_log.records = @record_cnt
339
339
  echi_log.processed_at = Time.now
@@ -343,4 +343,4 @@ def process_ascii filename
343
343
  return @record_cnt
344
344
  end
345
345
 
346
- require @workingdirectory + '/echi-converter/version.rb'
346
+ require $workingdir + '/echi-converter/version.rb'
@@ -1,8 +1,8 @@
1
1
  module EchiConverter #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 2
5
- TINY = 1
4
+ MINOR = 3
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/main.rb CHANGED
@@ -2,57 +2,59 @@ require 'rubygems'
2
2
  require 'yaml'
3
3
 
4
4
  #Determine our working directory
5
- @workingdirectory = File.expand_path(File.dirname(__FILE__))
6
- require @workingdirectory + '/echi-converter.rb'
5
+ $workingdir = File.expand_path File.dirname(__FILE__)
6
+ require $workingdir + '/echi-converter.rb'
7
7
  include EchiConverter
8
+
8
9
 
9
10
  #Open the configuration file
10
- configfile = @workingdirectory + '/../config/application.yml'
11
- @config = YAML::load(File.open(configfile))
11
+ configfile = $workingdir + '/../config/application.yml'
12
+ $config = YAML::load(File.open(configfile))
12
13
 
13
14
  #Load ActiveRecord Models
14
- if @config["pco_process"] == 'Y'
15
- require @workingdirectory + '/database_presence.rb'
15
+ if $config["pco_process"] == 'Y'
16
+ require $workingdir + '/database_presence.rb'
16
17
  else
17
- require @workingdirectory + '/database.rb'
18
+ require $workingdir + '/database.rb'
18
19
  end
19
20
 
20
21
  #Load the configured schema
21
- schemafile = @workingdirectory + "/../config/" + @config["echi_schema"]
22
+ schemafile = $workingdir + "/../config/" + $config["echi_schema"]
22
23
  @echi_schema = YAML::load(File.open(schemafile))
23
24
 
24
25
  #Open the logfile with appropriate output level
25
26
  initiate_logger
26
27
 
27
28
  #If configured for database insertion, connect to the database
28
- if @config["export_type"] == 'database' || @config["export_type"] == 'both'
29
+ if $config["export_type"] == 'database' || $config["export_type"] == 'both'
29
30
  connect_database
30
31
  end
31
32
 
32
33
  @log.info "Running..."
33
34
 
35
+ #Our Main loop
34
36
  loop do
35
37
  #Process the files
36
38
  ftp_files = fetch_ftp_files
37
39
  #Grab filenames from the to_process directory after an FTP fetch, so if the
38
40
  #system fails it may pick up where it left off
39
- to_process_dir = @workingdirectory + "/../files/to_process/"
41
+ to_process_dir = $workingdir + "/../files/to_process/"
40
42
 
41
43
  #Establish where to copy the processed files to
42
- @processeddirectory = set_directory(@workingdirectory)
44
+ @processeddirectory = set_directory($workingdir)
43
45
 
44
46
  Dir.entries(to_process_dir).each do | file |
45
- if file != "." && file != ".."
46
- if @config["echi_format"] == 'BINARY'
47
+ if file.slice(0,3) == 'chr'
48
+ if $config["echi_format"] == 'BINARY'
47
49
  record_cnt = convert_binary_file file
48
- elsif @config["echi_format"] == 'ASCII'
50
+ elsif $config["echi_format"] == 'ASCII'
49
51
  record_cnt = process_ascii file
50
52
  end
53
+ @log.info "Processed file #{file} with #{record_cnt.to_s} records"
51
54
  end
52
- @log.info "Processed file #{file} with #{record_cnt.to_s} records"
53
55
  end
54
56
 
55
- sleep @config["fetch_interval"]
57
+ sleep $config["fetch_interval"]
56
58
 
57
59
  #Make sure we did not lose our database connection while we slept
58
60
  if ActiveRecord::Base.connected? == 'FALSE'
data/lib/main_win32.rb ADDED
@@ -0,0 +1,79 @@
1
+ require 'rubygems'
2
+ require 'yaml'
3
+ require 'win32/service'
4
+ include Win32
5
+
6
+ class EchiDaemon < Daemon
7
+ #Determine our working directory
8
+ $workingdir = File.expand_path File.dirname(__FILE__)
9
+ require $workingdir + '/echi-converter.rb'
10
+ include EchiConverter
11
+
12
+ def initialize
13
+ #Open the configuration file
14
+ configfile = $workingdir + '/../config/application.yml'
15
+ $config = YAML::load(File.open(configfile))
16
+
17
+ #Load ActiveRecord Models
18
+ if $config["pco_process"] == 'Y'
19
+ require $workingdir + '/database_presence.rb'
20
+ else
21
+ require $workingdir + '/database.rb'
22
+ end
23
+
24
+ #Load the configured schema
25
+ schemafile = $workingdir + "/../config/" + $config["echi_schema"]
26
+ @echi_schema = YAML::load(File.open(schemafile))
27
+
28
+ #Open the logfile with appropriate output level
29
+ initiate_logger
30
+
31
+ #If configured for database insertion, connect to the database
32
+ if $config["export_type"] == 'database' || $config["export_type"] == 'both'
33
+ connect_database
34
+ end
35
+
36
+ @log.info "Running..."
37
+ end
38
+
39
+ def service_main
40
+ loop do
41
+ #Process the files
42
+ ftp_files = fetch_ftp_files
43
+ #Grab filenames from the to_process directory after an FTP fetch, so if the
44
+ #system fails it may pick up where it left off
45
+ to_process_dir = $workingdir + "/../files/to_process/"
46
+
47
+ #Establish where to copy the processed files to
48
+ @processeddirectory = set_directory($workingdir)
49
+
50
+ Dir.entries(to_process_dir).each do | file |
51
+ if file.slice(0,3) == 'chr'
52
+ if $config["echi_format"] == 'BINARY'
53
+ record_cnt = convert_binary_file file
54
+ elsif $config["echi_format"] == 'ASCII'
55
+ record_cnt = process_ascii file
56
+ end
57
+ @log.info "Processed file #{file} with #{record_cnt.to_s} records"
58
+ end
59
+ end
60
+
61
+ sleep $config["fetch_interval"]
62
+
63
+ #Make sure we did not lose our database connection while we slept
64
+ if ActiveRecord::Base.connected? == 'FALSE'
65
+ connect_database
66
+ end
67
+ end
68
+ end
69
+
70
+ def service_cleanup
71
+ #Close the logfile
72
+ @log.info "Shutdown..."
73
+ @log.close
74
+ end
75
+ end
76
+
77
+ d = EchiDaemon.new
78
+ d.mainloop
79
+ d.service_cleanup
data/website/index.html CHANGED
@@ -33,7 +33,7 @@
33
33
  <h1>ECHI Converter</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/echi-converter"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/echi-converter" class="numbers">0.2.1</a>
36
+ <a href="http://rubyforge.org/projects/echi-converter" class="numbers">0.3.0</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;echi-converter&#8217;</h1>
39
39
 
@@ -63,6 +63,7 @@
63
63
  <li>Convert from the defined Binary format to <span class="caps">ASCII</span></li>
64
64
  <li>Insert the records into the defined database table using database transactions, via ActiveRecord, on a per file basis to support recovery on failure</li>
65
65
  <li>Change schema structure via <span class="caps">YML</span> configuration file to accommodate various releases of the <span class="caps">ECHI</span> format</li>
66
+ <li>Runs as a daemon (via fork) on *NIX and a service on Windows</li>
66
67
  </ol>
67
68
 
68
69
 
@@ -85,7 +86,8 @@
85
86
  <li><a href="http://activesupport.rubyforge.org/">ActiveSupport v1.4.2+</a></li>
86
87
  <li><a href="http://daemons.rubyforge.org/">Daemons v1.0.7+</a></li>
87
88
  <li><a href="http://fastercsv.rubyforge.org/">FasterCSV v1.2.0+</a></li>
88
- <li><a href="http://rake.rubyforge.org/">Rake v0.7.3+</a></li>
89
+ <li><a href="http://rake.rubyforge.org/">Rake v0.7.3+</a>
90
+ # <a href="http://win32utils.rubyforge.org/">Win32-service v.0.5.2+</a> (Manual install for Windows only)</li>
89
91
  <li><a href="http://rubyforge.org/projects/seattlerb/">Hoe v1.2.2+</a></li>
90
92
  </ol>
91
93
 
@@ -143,6 +145,9 @@
143
145
  </ol>
144
146
 
145
147
 
148
+ <p>For *NIX:</p>
149
+
150
+
146
151
  <ol>
147
152
  <li>echi-converter run myproject &#8211; Run the <span class="caps">ECHI</span> converter interactively from the location given</li>
148
153
  <li>echi-converter start myproject &#8211; Start the <span class="caps">ECHI</span> converter in daemon mode from the location given</li>
@@ -152,6 +157,20 @@
152
157
  </ol>
153
158
 
154
159
 
160
+ <p>For Windows:</p>
161
+
162
+
163
+ <ol>
164
+ <li>echi-converter install myproject &#8211; install the service (must specify complete path such as c:\path\to\my\project )</li>
165
+ <li>echi-converter start &#8211; start the service</li>
166
+ <li>echi-converter stop &#8211; stop the service</li>
167
+ <li>echi-converter pause &#8211; pause the service</li>
168
+ <li>echi-converter resume &#8211; resume the service</li>
169
+ <li>echi-converter uninstall &#8211; uninstall the service</li>
170
+ <li>echi-converter delete &#8211; delete the service&#8221;</li>
171
+ </ol>
172
+
173
+
155
174
  <h2>Demonstration of usage</h2>
156
175
 
157
176
 
@@ -165,14 +184,18 @@
165
184
 
166
185
  <pre syntax="ruby">echi-converter stop myproject</pre>
167
186
 
168
- <h2>ToDo</h2>
187
+ <h2>Limitations</h2>
169
188
 
170
189
 
171
190
  <p>Items to be done to move this out of alpha stage:</p>
172
191
 
173
192
 
174
193
  <ol>
175
- <li>&#8216;echi-converter create&#8217; works fine with <span class="caps">OSX</span>/Linux, need to test validate with a Win32 platform, therefore currently recommended to only run on a Linux/OSX platform, could use <a href="http://www.vmware.com">VMWare</a> to do this on Windows.</li>
194
+ <li>There are currently two limitations when running on Windows
195
+ <ol>
196
+ <li>Project directories may not have spaces</li>
197
+ <li>The Ruby interpreter must be installed in the default location of c:\ruby\bin</li>
198
+ </ol></li>
176
199
  </ol>
177
200
 
178
201
 
@@ -208,7 +231,7 @@
208
231
 
209
232
  <p>Comments are welcome. Send an email to <a href="mailto:jason@goecke.net">jason [at] goecke.net</a>.</p>
210
233
  <p class="coda">
211
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 26th October 2007<br>
234
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 2nd November 2007<br>
212
235
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
213
236
  </p>
214
237
  </div>
data/website/index.txt CHANGED
@@ -22,6 +22,7 @@ The utility provides the following capabilities:
22
22
  # Convert from the defined Binary format to ASCII
23
23
  # Insert the records into the defined database table using database transactions, via ActiveRecord, on a per file basis to support recovery on failure
24
24
  # Change schema structure via YML configuration file to accommodate various releases of the ECHI format
25
+ # Runs as a daemon (via fork) on *NIX and a service on Windows
25
26
 
26
27
  # Table names:
27
28
  ## echi_records - stores all ECHI data
@@ -37,6 +38,7 @@ h2. Requirements
37
38
  # "Daemons v1.0.7+":http://daemons.rubyforge.org/
38
39
  # "FasterCSV v1.2.0+":http://fastercsv.rubyforge.org/
39
40
  # "Rake v0.7.3+":http://rake.rubyforge.org/
41
+ # "Win32-service v.0.5.2+":http://win32utils.rubyforge.org/ (Manual install for Windows only)
40
42
  # "Hoe v1.2.2+":http://rubyforge.org/projects/seattlerb/
41
43
 
42
44
 
@@ -74,12 +76,23 @@ h2. Usage
74
76
  # echi-converter create myproject - create the local project to run the ECHI converter from
75
77
  # echi-converter upgrade myproject - location of project to upgrade after a new gem is installed
76
78
 
79
+ For *NIX:
80
+
77
81
  # echi-converter run myproject - Run the ECHI converter interactively from the location given
78
82
  # echi-converter start myproject - Start the ECHI converter in daemon mode from the location given
79
83
  # echi-converter stop myproject - Stop the ECHI converter daemon
80
84
  # echi-converter restart myproject - Restart the ECHI converter
81
85
  # echi-converter zap myrpoject - If there has been an unexpected close and the system still thinks the converter is running, clean up the pid files
82
86
 
87
+ For Windows:
88
+
89
+ # echi-converter install myproject - install the service (must specify complete path such as c:\path\to\my\project )
90
+ # echi-converter start - start the service
91
+ # echi-converter stop - stop the service
92
+ # echi-converter pause - pause the service
93
+ # echi-converter resume - resume the service
94
+ # echi-converter uninstall - uninstall the service
95
+ # echi-converter delete - delete the service"
83
96
 
84
97
  h2. Demonstration of usage
85
98
 
@@ -92,11 +105,13 @@ Stop the daemon/service:
92
105
  <pre syntax="ruby">echi-converter stop myproject</pre>
93
106
 
94
107
 
95
- h2. ToDo
108
+ h2. Limitations
96
109
 
97
110
  Items to be done to move this out of alpha stage:
98
111
 
99
- # 'echi-converter create' works fine with OSX/Linux, need to test validate with a Win32 platform, therefore currently recommended to only run on a Linux/OSX platform, could use "VMWare":http://www.vmware.com to do this on Windows.
112
+ # There are currently two limitations when running on Windows
113
+ ## Project directories may not have spaces
114
+ ## The Ruby interpreter must be installed in the default location of c:\ruby\bin
100
115
 
101
116
  h2. Screencast
102
117
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: echi-converter
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.1
7
- date: 2007-10-26 00:00:00 -07:00
6
+ version: 0.3.0
7
+ date: 2007-11-03 00:00:00 -07:00
8
8
  summary: ECHI Conversion Utility - Provides a utility to fetch Avaya CMS / ECHI binary files, convert them and insert into a database table via ActiveRecord
9
9
  require_paths:
10
10
  - lib
@@ -38,6 +38,7 @@ files:
38
38
  - lib/echi-converter/version.rb
39
39
  - lib/database.rb
40
40
  - lib/database_presence.rb
41
+ - lib/main_win32.rb
41
42
  - lib/echi-converter.rb
42
43
  - scripts/txt2html
43
44
  - setup.rb