miga-base 0.7.21.0 → 0.7.24.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/README.md +1 -1
- data/Rakefile +1 -0
- data/lib/miga/cli/action/add.rb +1 -2
- data/lib/miga/cli/action/classify_wf.rb +12 -11
- data/lib/miga/cli/action/derep_wf.rb +3 -9
- data/lib/miga/cli/action/edit.rb +0 -1
- data/lib/miga/cli/action/find.rb +1 -1
- data/lib/miga/cli/action/generic.rb +1 -1
- data/lib/miga/cli/action/get.rb +7 -2
- data/lib/miga/cli/action/get_db.rb +16 -21
- data/lib/miga/cli/action/init.rb +41 -93
- data/lib/miga/cli/action/init/daemon_helper.rb +1 -2
- data/lib/miga/cli/action/init/files_helper.rb +118 -0
- data/lib/miga/cli/action/ncbi_get.rb +1 -1
- data/lib/miga/cli/action/new.rb +15 -9
- data/lib/miga/cli/action/option.rb +44 -0
- data/lib/miga/cli/action/quality_wf.rb +3 -3
- data/lib/miga/cli/action/tax_dist.rb +1 -1
- data/lib/miga/cli/action/tax_test.rb +1 -1
- data/lib/miga/cli/action/wf.rb +32 -30
- data/lib/miga/cli/base.rb +1 -0
- data/lib/miga/cli/objects_helper.rb +23 -18
- data/lib/miga/common.rb +4 -2
- data/lib/miga/common/net.rb +74 -0
- data/lib/miga/common/with_option.rb +83 -0
- data/lib/miga/common/with_result.rb +3 -2
- data/lib/miga/dataset/base.rb +20 -2
- data/lib/miga/dataset/result.rb +3 -2
- data/lib/miga/metadata.rb +25 -13
- data/lib/miga/project/base.rb +82 -2
- data/lib/miga/project/result.rb +4 -4
- data/lib/miga/remote_dataset.rb +2 -0
- data/lib/miga/result/stats.rb +2 -2
- data/lib/miga/version.rb +4 -2
- data/scripts/aai_distances.bash +1 -1
- data/scripts/ani_distances.bash +1 -1
- data/scripts/essential_genes.bash +1 -2
- data/scripts/haai_distances.bash +1 -1
- data/scripts/mytaxa.bash +6 -5
- data/scripts/mytaxa_scan.bash +8 -7
- data/scripts/ogs.bash +2 -3
- data/scripts/ssu.bash +16 -2
- data/test/dataset_test.rb +5 -5
- data/test/net_test.rb +34 -0
- data/test/with_option_test.rb +115 -0
- data/utils/cleanup-databases.rb +2 -3
- data/utils/distance/commands.rb +2 -2
- data/utils/distance/database.rb +1 -1
- data/utils/distance/pipeline.rb +2 -4
- data/utils/distance/runner.rb +15 -23
- data/utils/index_metadata.rb +1 -2
- data/utils/requirements.txt +6 -5
- data/utils/subclade/runner.rb +10 -11
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82ca84b468df712ab38eba74071c26e8dcb1d87335764dde2ba86075abc8c8d5
|
4
|
+
data.tar.gz: 36583e298fc020faa5cc16af2f6a3fcc88c30619a4f529fd6f03772f6c437bb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d78a3709fecba4594d8dc9a2351f217b3605022237e424eb1a194ccf62ddf2059eb1df274f68a15cda74936dfece3f2123485483773172cc62cfba9ff454c5d2
|
7
|
+
data.tar.gz: fbf11b04c062701b204f4ba93425dea6f8ff1492fe48f7182472e65b16fccbde98e86d396a79cf51c6e410a246c3b9e9509043eaf952b320191ec086e2efa573
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[![Code Climate](https://codeclimate.com/github/bio-miga/miga/badges/gpa.svg)](https://codeclimate.com/github/bio-miga/miga)
|
2
2
|
[![Test Coverage](https://codeclimate.com/github/bio-miga/miga/badges/coverage.svg)](https://codeclimate.com/github/bio-miga/miga/coverage)
|
3
|
-
[![Build Status](https://
|
3
|
+
[![Build Status](https://github.com/bio-miga/miga/workflows/build/badge.svg)](https://github.com/bio-miga/miga/actions?query=workflow:build)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/miga-base.svg)](https://badge.fury.io/rb/miga-base)
|
5
5
|
[![Inch docs](http://inch-ci.org/github/bio-miga/miga.svg)](http://inch-ci.org/github/bio-miga/miga)
|
6
6
|
|
data/Rakefile
CHANGED
data/lib/miga/cli/action/add.rb
CHANGED
@@ -65,8 +65,7 @@ class MiGA::Cli::Action::Add < MiGA::Cli::Action
|
|
65
65
|
next if d.nil?
|
66
66
|
|
67
67
|
copy_file_to_project(file, file_type, d, p)
|
68
|
-
|
69
|
-
d.save
|
68
|
+
cli.add_metadata(d)
|
70
69
|
p.add_dataset(d.name)
|
71
70
|
res = d.first_preprocessing(true)
|
72
71
|
cli.say " result: #{res}"
|
@@ -49,23 +49,24 @@ class MiGA::Cli::Action::ClassifyWf < MiGA::Cli::Action
|
|
49
49
|
def perform
|
50
50
|
# Input data
|
51
51
|
ref_db = reference_db
|
52
|
-
|
53
|
-
|
54
|
-
.map { |i| ["run_#{i}", false] }
|
52
|
+
norun = %w[
|
53
|
+
project_stats haai_distances aai_distances ani_distances clade_finding
|
55
54
|
]
|
56
|
-
p_metadata
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
p_metadata = Hash[norun.map { |i| ["run_#{i}", false] }]
|
56
|
+
p = create_project(
|
57
|
+
:assembly,
|
58
|
+
p_metadata,
|
59
|
+
run_ssu: false, run_mytaxa_scan: false, run_distances: false
|
60
|
+
)
|
61
|
+
p.set_option(:ref_project, ref_db.path)
|
62
|
+
p.set_option(:tax_pvalue, cli[:pvalue], true)
|
60
63
|
# Run
|
61
64
|
run_daemon
|
62
65
|
summarize(%w[cds assembly essential_genes]) if cli[:summaries]
|
63
66
|
summarize(['taxonomy'])
|
64
67
|
cli.say "Summary: classification"
|
65
|
-
|
66
|
-
|
67
|
-
'-o', File.expand_path('classification.tsv', cli[:outdir])
|
68
|
-
])
|
68
|
+
ofile = File.expand_path('classification.tsv', cli[:outdir])
|
69
|
+
call_cli(['ls', '-P', cli[:outdir], '-m', 'tax', '--tab', '-o', ofile])
|
69
70
|
cleanup
|
70
71
|
end
|
71
72
|
|
@@ -52,17 +52,11 @@ class MiGA::Cli::Action::DerepWf < MiGA::Cli::Action
|
|
52
52
|
# Input data
|
53
53
|
p = create_project(
|
54
54
|
:assembly,
|
55
|
-
{
|
56
|
-
run_project_stats: false,
|
57
|
-
run_clades: false,
|
58
|
-
gsp_metric: cli[:metric],
|
59
|
-
:"gsp_#{cli[:metric]}" => cli[:threshold]
|
60
|
-
},
|
55
|
+
{ run_project_stats: false, run_clades: false },
|
61
56
|
{ run_mytaxa_scan: false, run_ssu: false }
|
62
57
|
)
|
63
|
-
|
64
|
-
|
65
|
-
end
|
58
|
+
p.set_option(:gsp_metric, cli[:metric])
|
59
|
+
p.set_option(:"gsp_#{cli[:metric]}", cli[:threshold])
|
66
60
|
|
67
61
|
# Run
|
68
62
|
run_daemon
|
data/lib/miga/cli/action/edit.rb
CHANGED
data/lib/miga/cli/action/find.rb
CHANGED
@@ -20,7 +20,7 @@ class MiGA::Cli::Action::Generic < MiGA::Cli::Action
|
|
20
20
|
opt.on(
|
21
21
|
'-v', '--version',
|
22
22
|
'Show MiGA version'
|
23
|
-
) { puts MiGA::MiGA.
|
23
|
+
) { puts MiGA::MiGA.FULL_VERSION; exit }
|
24
24
|
opt.on(
|
25
25
|
'-V', '--long-version',
|
26
26
|
'Show complete MiGA version'
|
data/lib/miga/cli/action/get.rb
CHANGED
@@ -6,8 +6,9 @@ require 'miga/remote_dataset'
|
|
6
6
|
|
7
7
|
class MiGA::Cli::Action::Get < MiGA::Cli::Action
|
8
8
|
def parse_cli
|
9
|
-
cli.defaults = {
|
10
|
-
|
9
|
+
cli.defaults = {
|
10
|
+
query: false, universe: :ncbi, db: :nuccore, get_md: false, only_md: false
|
11
|
+
}
|
11
12
|
cli.parse do |opt|
|
12
13
|
cli.opt_object(opt, [:project, :dataset, :dataset_type])
|
13
14
|
opt.on(
|
@@ -141,6 +142,10 @@ class MiGA::Cli::Action::Get < MiGA::Cli::Action
|
|
141
142
|
|
142
143
|
def create_dataset(sub_cli, p, rd)
|
143
144
|
sub_cli.say 'Creating dataset'
|
145
|
+
if Dataset.exist?(p, sub_cli[:dataset])
|
146
|
+
raise "Dataset already exists: #{sub_cli[:dataset]}"
|
147
|
+
end
|
148
|
+
|
144
149
|
dummy_d = Dataset.new(p, sub_cli[:dataset])
|
145
150
|
md = sub_cli.add_metadata(dummy_d).metadata.data
|
146
151
|
md[:metadata_only] = true if cli[:only_md]
|
@@ -2,9 +2,7 @@
|
|
2
2
|
# @license Artistic-2.0
|
3
3
|
|
4
4
|
require 'miga/cli/action'
|
5
|
-
require 'net/ftp'
|
6
5
|
require 'digest/md5'
|
7
|
-
require 'open-uri'
|
8
6
|
|
9
7
|
class MiGA::Cli::Action::GetDb < MiGA::Cli::Action
|
10
8
|
def parse_cli
|
@@ -12,7 +10,7 @@ class MiGA::Cli::Action::GetDb < MiGA::Cli::Action
|
|
12
10
|
database: :recommended,
|
13
11
|
version: :latest,
|
14
12
|
local: File.expand_path('.miga_db', ENV['MIGA_HOME']),
|
15
|
-
host:
|
13
|
+
host: MiGA::MiGA.known_hosts(:miga_db),
|
16
14
|
pb: true,
|
17
15
|
overwrite: true
|
18
16
|
}
|
@@ -50,6 +48,14 @@ class MiGA::Cli::Action::GetDb < MiGA::Cli::Action
|
|
50
48
|
end
|
51
49
|
|
52
50
|
def perform
|
51
|
+
# Quick check when the database is not an alias
|
52
|
+
dir = File.join(cli[:local], cli[:database].to_s)
|
53
|
+
if !cli[:overwrite] && Dir.exist?(dir)
|
54
|
+
cli.puts "Database exists: #{dir}"
|
55
|
+
return
|
56
|
+
end
|
57
|
+
|
58
|
+
# Remote manifest
|
53
59
|
@ftp = remote_connection
|
54
60
|
manif = remote_manifest(@ftp)
|
55
61
|
cli.puts "# Host: #{manif[:host]}"
|
@@ -59,6 +65,8 @@ class MiGA::Cli::Action::GetDb < MiGA::Cli::Action
|
|
59
65
|
list_versions(db) and return
|
60
66
|
ver = version_requested(db)
|
61
67
|
check_target and return
|
68
|
+
|
69
|
+
# Download and expand
|
62
70
|
file = download_file(@ftp, ver[:path])
|
63
71
|
check_digest(ver, file)
|
64
72
|
unarchive(file)
|
@@ -78,27 +86,14 @@ class MiGA::Cli::Action::GetDb < MiGA::Cli::Action
|
|
78
86
|
|
79
87
|
def remote_connection
|
80
88
|
cli.say "Connecting to '#{cli[:host]}'"
|
81
|
-
|
82
|
-
raise 'Only FTP hosts are supported' unless uri.scheme == 'ftp'
|
83
|
-
|
84
|
-
ftp = Net::FTP.new(uri.host)
|
85
|
-
ftp.passive = true
|
86
|
-
ftp.login
|
87
|
-
ftp.chdir(uri.path)
|
88
|
-
ftp
|
89
|
+
MiGA::MiGA.remote_connection(cli[:host])
|
89
90
|
end
|
90
91
|
|
91
92
|
def download_file(ftp, path)
|
92
93
|
cli.say "Downloading '#{path}'"
|
93
|
-
Dir.mkdir(cli[:local]) unless Dir.exist? cli[:local]
|
94
94
|
file = File.expand_path(path, cli[:local])
|
95
|
-
|
96
|
-
|
97
|
-
ftp.getbinaryfile(path, file, 1024) do |data|
|
98
|
-
if cli[:pb]
|
99
|
-
transferred += data.size
|
100
|
-
cli.advance("#{path}:", transferred, filesize)
|
101
|
-
end
|
95
|
+
MiGA::MiGA.download_file_ftp(ftp, path, file) do |n, size|
|
96
|
+
cli.advance("#{path}:", n, size) if cli[:pb]
|
102
97
|
end
|
103
98
|
cli.print "\n" if cli[:pb]
|
104
99
|
file
|
@@ -165,7 +160,7 @@ class MiGA::Cli::Action::GetDb < MiGA::Cli::Action
|
|
165
160
|
def check_target
|
166
161
|
return false if cli[:overwrite]
|
167
162
|
|
168
|
-
file = File.
|
163
|
+
file = File.join(cli[:local], cli[:database].to_s)
|
169
164
|
if Dir.exist? file
|
170
165
|
warn "The target directory already exists: #{file}"
|
171
166
|
true
|
@@ -195,7 +190,7 @@ class MiGA::Cli::Action::GetDb < MiGA::Cli::Action
|
|
195
190
|
|
196
191
|
def unarchive(file)
|
197
192
|
cli.say "Unarchiving #{file}"
|
198
|
-
`cd "#{cli[:local]}" && tar -zxf "#{file}"`
|
193
|
+
`cd "#{cli[:local]}" && tar -zxf "#{file}" && rm "#{file}"`
|
199
194
|
end
|
200
195
|
|
201
196
|
def register_database(manif, db, ver)
|
data/lib/miga/cli/action/init.rb
CHANGED
@@ -1,18 +1,24 @@
|
|
1
|
-
#
|
2
|
-
# @license Artistic-2.0
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'miga/cli/action'
|
5
4
|
require 'shellwords'
|
6
5
|
|
7
6
|
class MiGA::Cli::Action::Init < MiGA::Cli::Action
|
8
7
|
require 'miga/cli/action/init/daemon_helper'
|
8
|
+
require 'miga/cli/action/init/files_helper'
|
9
9
|
include MiGA::Cli::Action::Init::DaemonHelper
|
10
|
+
include MiGA::Cli::Action::Init::FilesHelper
|
10
11
|
|
11
12
|
def parse_cli
|
12
13
|
cli.interactive = true
|
13
|
-
cli.defaults = {
|
14
|
-
|
15
|
-
|
14
|
+
cli.defaults = {
|
15
|
+
mytaxa: nil,
|
16
|
+
rdp: nil,
|
17
|
+
config: File.join(ENV['MIGA_HOME'], '.miga_modules'),
|
18
|
+
ask: false,
|
19
|
+
auto: false,
|
20
|
+
dtype: :bash
|
21
|
+
}
|
16
22
|
cli.parse do |opt|
|
17
23
|
opt.on(
|
18
24
|
'-c', '--config PATH',
|
@@ -21,9 +27,14 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
|
|
21
27
|
) { |v| cli[:config] = v }
|
22
28
|
opt.on(
|
23
29
|
'--[no-]mytaxa',
|
24
|
-
'Should I try setting up MyTaxa its dependencies?',
|
30
|
+
'Should I try setting up MyTaxa and its dependencies?',
|
25
31
|
'By default: interactive (true if --auto)'
|
26
32
|
) { |v| cli[:mytaxa] = v }
|
33
|
+
opt.on(
|
34
|
+
'--[no-]rdp',
|
35
|
+
'Should I try setting up the RDP classifier?',
|
36
|
+
'By default: interactive (true if --auto)'
|
37
|
+
) { |v| cli[:rdp] = v }
|
27
38
|
opt.on(
|
28
39
|
'--daemon-type STRING',
|
29
40
|
'Type of daemon launcher, one of: bash, ssh, qsub, msub, slurm',
|
@@ -47,13 +58,13 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
|
|
47
58
|
BANNER
|
48
59
|
list_requirements
|
49
60
|
rc_fh = open_rc_file
|
50
|
-
check_configuration_script
|
51
|
-
paths = check_software_requirements
|
52
|
-
check_additional_files
|
53
|
-
check_r_packages
|
54
|
-
check_ruby_gems
|
61
|
+
check_configuration_script(rc_fh)
|
62
|
+
paths = check_software_requirements(rc_fh)
|
63
|
+
check_additional_files(paths)
|
64
|
+
check_r_packages(paths)
|
65
|
+
check_ruby_gems(paths)
|
55
66
|
configure_daemon
|
56
|
-
close_rc_file
|
67
|
+
close_rc_file(rc_fh)
|
57
68
|
cli.puts 'Configuration complete. MiGA is ready to work!'
|
58
69
|
cli.puts ''
|
59
70
|
end
|
@@ -116,58 +127,18 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
|
|
116
127
|
|
117
128
|
private
|
118
129
|
|
119
|
-
def open_rc_file
|
120
|
-
rc_path = File.expand_path('.miga_rc', ENV['HOME'])
|
121
|
-
if File.exist? rc_path
|
122
|
-
if cli.ask_user(
|
123
|
-
'I found a previous configuration. Do you want to continue?',
|
124
|
-
'yes', %w(yes no)
|
125
|
-
) == 'no'
|
126
|
-
cli.puts 'OK, see you soon!'
|
127
|
-
exit(0)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
rc_fh = File.open(rc_path, 'w')
|
131
|
-
rc_fh.puts <<~BASH
|
132
|
-
#!/bin/bash
|
133
|
-
# `miga init` made this on #{Time.now}
|
134
|
-
|
135
|
-
BASH
|
136
|
-
rc_fh
|
137
|
-
end
|
138
|
-
|
139
|
-
def check_configuration_script(rc_fh)
|
140
|
-
unless File.exist? cli[:config]
|
141
|
-
cli[:config] = cli.ask_user(
|
142
|
-
'Is there a script I need to load at startup?',
|
143
|
-
cli[:config]
|
144
|
-
)
|
145
|
-
end
|
146
|
-
if File.exist? cli[:config]
|
147
|
-
cli[:config] = File.expand_path(cli[:config])
|
148
|
-
cli.puts "Found bash configuration script: #{cli[:config]}"
|
149
|
-
rc_fh.puts "MIGA_STARTUP='#{cli[:config]}'"
|
150
|
-
rc_fh.puts '. "$MIGA_STARTUP"'
|
151
|
-
else
|
152
|
-
cli[:config] = '/dev/null'
|
153
|
-
end
|
154
|
-
cli.puts ''
|
155
|
-
end
|
156
|
-
|
157
130
|
def check_software_requirements(rc_fh)
|
158
131
|
cli.puts 'Looking for requirements:'
|
159
|
-
|
160
|
-
rc_fh.puts
|
132
|
+
ask_for_optional(:mytaxa, 'MyTaxa')
|
133
|
+
rc_fh.puts "export MIGA_MYTAXA='#{cli[:mytaxa] ? 'yes' : 'no'}'"
|
134
|
+
ask_for_optional(:rdp, 'RDP classifier')
|
135
|
+
rc_fh.puts "export MIGA_RDP='#{cli[:rdp] ? 'yes' : 'no'}'"
|
161
136
|
paths = {}
|
162
137
|
rc_fh.puts 'MIGA_PATH=""'
|
163
138
|
req_path = File.expand_path('utils/requirements.txt', MiGA.root_path)
|
164
139
|
File.open(req_path, 'r') do |fh|
|
165
140
|
fh.each_line do |ln|
|
166
|
-
|
167
|
-
|
168
|
-
r = ln.chomp.split(/\t+/)
|
169
|
-
next if r[0] =~ /\(opt\)$/ && !cli[:mytaxa]
|
170
|
-
|
141
|
+
r = define_software(ln) or next
|
171
142
|
cli.print "Testing #{r[0]}#{" (#{r[3]})" if r[3]}... "
|
172
143
|
path = find_software(r[1])
|
173
144
|
paths[r[1]] = File.expand_path(r[1], path).shellescape
|
@@ -178,11 +149,20 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
|
|
178
149
|
paths
|
179
150
|
end
|
180
151
|
|
181
|
-
def
|
182
|
-
|
183
|
-
|
152
|
+
def define_software(ln)
|
153
|
+
r = ln.chomp.split(/\t+/)
|
154
|
+
return if %w[Software --------].include?(r[0])
|
155
|
+
return if r[0] =~ /\(mytaxa\)$/ && !cli[:mytaxa]
|
156
|
+
return if r[0] =~ /\(rdp\)$/ && !cli[:rdp]
|
157
|
+
|
158
|
+
r
|
159
|
+
end
|
160
|
+
|
161
|
+
def ask_for_optional(symbol, name)
|
162
|
+
if cli[symbol].nil?
|
163
|
+
cli[symbol] =
|
184
164
|
cli.ask_user(
|
185
|
-
|
165
|
+
"Should I include #{name} modules?",
|
186
166
|
'yes', %w(yes no)
|
187
167
|
) == 'yes'
|
188
168
|
end
|
@@ -209,27 +189,6 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
|
|
209
189
|
path
|
210
190
|
end
|
211
191
|
|
212
|
-
def check_additional_files(paths)
|
213
|
-
if cli[:mytaxa]
|
214
|
-
cli.puts 'Looking for MyTaxa databases:'
|
215
|
-
mt = File.dirname paths['MyTaxa']
|
216
|
-
cli.print 'Looking for scores... '
|
217
|
-
unless Dir.exist?(File.expand_path('db', mt))
|
218
|
-
cli.puts "no\nExecute 'python2 #{mt}/utils/download_db.py'"
|
219
|
-
exit(1)
|
220
|
-
end
|
221
|
-
cli.puts 'yes'
|
222
|
-
cli.print 'Looking for diamond db... '
|
223
|
-
unless File.exist?(File.expand_path('AllGenomes.faa.dmnd', mt))
|
224
|
-
cli.puts "no\nDownload " \
|
225
|
-
"'http://enve-omics.ce.gatech.edu/data/public_mytaxa/" \
|
226
|
-
"AllGenomes.faa.dmnd' into #{mt}"
|
227
|
-
exit(1)
|
228
|
-
end
|
229
|
-
cli.puts ''
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
192
|
def check_r_packages(paths)
|
234
193
|
cli.puts 'Looking for R packages:'
|
235
194
|
%w(ape cluster vegan).each do |pkg|
|
@@ -266,15 +225,4 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
|
|
266
225
|
end
|
267
226
|
cli.puts ''
|
268
227
|
end
|
269
|
-
|
270
|
-
def close_rc_file(rc_fh)
|
271
|
-
rc_fh.puts <<~FOOT
|
272
|
-
|
273
|
-
MIGA_CONFIG_VERSION='#{MiGA::MiGA.VERSION}'
|
274
|
-
MIGA_CONFIG_LONGVERSION='#{MiGA::MiGA.LONG_VERSION}'
|
275
|
-
MIGA_CONFIG_DATE='#{Time.now}'
|
276
|
-
|
277
|
-
FOOT
|
278
|
-
rc_fh.close
|
279
|
-
end
|
280
228
|
end
|