setup 5.1.0 → 5.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.rdoc +49 -60
- data/README.rdoc +35 -32
- data/bin/setup.rb +26 -32
- data/lib/setup/configuration.rb +8 -5
- data/lib/setup/documentor.rb +1 -1
- data/lib/setup/project.rb +22 -17
- data/lib/setup/tester.rb +17 -8
- data/lib/setup/version.rb +1 -1
- metadata +42 -45
- data/Assembly +0 -46
- data/Gemfile +0 -2
- data/SetupReceipt +0 -405
- data/meta/active +0 -1
- data/meta/authors +0 -5
- data/meta/copyrights +0 -4
- data/meta/created +0 -1
- data/meta/description +0 -8
- data/meta/name +0 -1
- data/meta/organization +0 -1
- data/meta/repositories +0 -2
- data/meta/requirements +0 -4
- data/meta/resources +0 -6
- data/meta/summary +0 -1
- data/meta/version +0 -1
- data/script/bootstrap +0 -5
- data/script/bundle +0 -81
- data/script/setup +0 -1302
- data/script/test +0 -3
data/HISTORY.rdoc
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
= RELEASE HISTORY
|
2
2
|
|
3
|
+
== 5.2.0 / 2012-12-20
|
4
|
+
|
5
|
+
This release makes a couple of important changes. First the `.ruby` file
|
6
|
+
is no longer the supported metadata file. While the format is basically
|
7
|
+
the same, the file is now called `.index`. See the {Indexer}[http://github.com/rubyworks/indexer]
|
8
|
+
project for more details. One can still use `.setup/name`, `.setup/version`
|
9
|
+
and `.setup/loadpath` files instead. In addition, `.setup/testrc.rb` has been
|
10
|
+
renamed to `.setup/test.rb`, and for shell-based command use `.setup/test.sh`.
|
11
|
+
|
12
|
+
Changes:
|
13
|
+
|
14
|
+
* Use .index instead of .ruby for metadata.
|
15
|
+
* Testing is handled by either .setup/test.rb or .setup/test.sh.
|
16
|
+
* Automatic RI documentation generation is deprecated for good.
|
17
|
+
|
18
|
+
|
3
19
|
== 5.1.0 / 2012-03-20
|
4
20
|
|
5
21
|
With this release `bin/setup.rb` is now the all-in-one bundled script.
|
@@ -10,15 +26,10 @@ more descriptive of it's purpose for the general user.
|
|
10
26
|
|
11
27
|
Changes:
|
12
28
|
|
13
|
-
*
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
* The `bin/setup.rb` script is now the full-on bundled script.
|
18
|
-
|
19
|
-
* Bug Fixes
|
20
|
-
|
21
|
-
* The `--prefix` option works with `all` command.
|
29
|
+
* Rename `make` phase to `compile`.
|
30
|
+
* So called "MetaConfig" is handled via `.setup/metaconfig.rb`.
|
31
|
+
* The `bin/setup.rb` script is now the full-on bundled script.
|
32
|
+
* The `--prefix` option works with `all` command.
|
22
33
|
|
23
34
|
|
24
35
|
== 5.0.1 / 2010-02-07
|
@@ -28,13 +39,8 @@ and makes some minor adjusemnt to exit error messages.
|
|
28
39
|
|
29
40
|
Changes:
|
30
41
|
|
31
|
-
*
|
32
|
-
|
33
|
-
* Fixed parsing of ruby install parameters on systems with custom configurations.
|
34
|
-
|
35
|
-
* 1 Minor Enhancement
|
36
|
-
|
37
|
-
* Use 'abort $!.message' instead of 'exit 1' when exiting on error.
|
42
|
+
* Fixed parsing of ruby install parameters on systems with custom configurations.
|
43
|
+
* Use 'abort $!.message' instead of 'exit 1' when exiting on error.
|
38
44
|
|
39
45
|
|
40
46
|
== 5.0.0 / 2010-01-12
|
@@ -50,19 +56,14 @@ through them performing the required action.
|
|
50
56
|
|
51
57
|
Changes:
|
52
58
|
|
53
|
-
*
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
* 3 Minor Changes
|
62
|
-
|
63
|
-
* Returned to using InstalledFiles for record installation and improved.
|
64
|
-
* Use SetupConfig instead of .cache/setup/config to store system configuration.
|
65
|
-
* Improved configuration options (eg. can use --type instead of --installdirs)
|
59
|
+
* Split script into distinct classes, one for each setup phase.
|
60
|
+
* Testing is handled by optional script/test or .setup/testrc.rb file.
|
61
|
+
* Renamed 'setup' phase to 'make' phase.
|
62
|
+
* Deprecated MetaConfig API; support singleton extensions instead.
|
63
|
+
* Deprecated support for Ruby versions older than v1.6.2.
|
64
|
+
* Returned to using InstalledFiles for record installation and improved.
|
65
|
+
* Use SetupConfig instead of .cache/setup/config to store system configuration.
|
66
|
+
* Improved configuration options (eg. can use --type instead of --installdirs)
|
66
67
|
|
67
68
|
|
68
69
|
== 4.2.1 / 2009-08-26
|
@@ -73,9 +74,7 @@ in Facets to install both lib/more and lib/core.
|
|
73
74
|
|
74
75
|
Changes:
|
75
76
|
|
76
|
-
*
|
77
|
-
|
78
|
-
* meta/loadpath is now supported if you have multiple paths to install.
|
77
|
+
* meta/loadpath is now supported if you have multiple paths to install.
|
79
78
|
|
80
79
|
|
81
80
|
== 4.2.0 / 2009-08-26
|
@@ -89,19 +88,14 @@ below for more details.
|
|
89
88
|
|
90
89
|
Changes:
|
91
90
|
|
92
|
-
*
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
* documentation generation shells out (for now, b/c of issues with using API)
|
101
|
-
|
102
|
-
* 1 Minor Addition
|
103
|
-
|
104
|
-
* Notice the setup.rb file in the project repo. Guess what that is! ;)
|
91
|
+
* relocated all user configuration files to meta/ and meta/setup
|
92
|
+
* meta/package must exist for doc to be installed.
|
93
|
+
* meta/setup/test.rb must be provided to run tests.
|
94
|
+
* meta/setup/doc.rb can be provided as alternate for generating docs.
|
95
|
+
* meta/setup/metaconfig.rb is now where meta-configuration goes.
|
96
|
+
* documentation is installed to <system-doc-dir>/ruby-<package>/.
|
97
|
+
* documentation generation shells out (for now, b/c of issues with using API)
|
98
|
+
* Notice the setup.rb file in the project repo. Guess what that is! ;)
|
105
99
|
|
106
100
|
|
107
101
|
== 4.1.0 / 2008-11-16
|
@@ -126,21 +120,16 @@ Please report any problems so I can fix them ASAP. Thanks.
|
|
126
120
|
|
127
121
|
Changes:
|
128
122
|
|
129
|
-
*
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
* 2 Minor Enhancements
|
141
|
-
|
142
|
-
* added test from original (needs work)
|
143
|
-
* removed test/suite.rb option from testing
|
123
|
+
* Testing only runs if a test script if provided
|
124
|
+
* Cache files are now stored in .cache/setup/
|
125
|
+
* Renamed binary from rubysetup to setup.rb.
|
126
|
+
* Hoping that the use of a dot in the name is not a problem on Windows.
|
127
|
+
* By using setup.rb for the binary, it matches exactly the name of the old script.
|
128
|
+
* Other developers could do likewise, eg. setup.py; akin to mkfs.ext3 and friends.
|
129
|
+
* Added script/install as a bootstrap installer.
|
130
|
+
* Restored metaconfig
|
131
|
+
* Added test from original (needs work)
|
132
|
+
* Removed test/suite.rb option from testing
|
144
133
|
|
145
134
|
|
146
135
|
== 4.0.0 / 2008-08-15
|
data/README.rdoc
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
= Ruby Setup
|
2
2
|
|
3
3
|
{Website}[http://rubyworks.github.com/setup] /
|
4
|
+
{Guide}[https://github.com/rubyworks/setup/wiki] /
|
4
5
|
{Issues}[http://github.com/rubyworks/setup/issues] /
|
5
6
|
{Source}[http://github.com/rubyworks/setup]
|
7
|
+
( {<img src="https://secure.travis-ci.org/rubyworks/setup.png" />}[http://travis-ci.org/rubyworks/setup] )
|
6
8
|
|
7
|
-
{<img src="https://secure.travis-ci.org/rubyworks/setup.png" />}[http://travis-ci.org/rubyworks/setup]
|
8
9
|
|
9
|
-
|
10
|
-
== INTRODUCTION
|
10
|
+
== Introduction
|
11
11
|
|
12
12
|
Every well practiced Rubyist is aware of Minero Aoki's ever +setup.rb+
|
13
13
|
script. It's how most of us used to install our Ruby programs before RubyGems
|
@@ -21,7 +21,7 @@ from there. As long as a project is setup.rb compliant, as most are,
|
|
21
21
|
then there is little to nothing it's developer must do.
|
22
22
|
|
23
23
|
|
24
|
-
===
|
24
|
+
=== Important
|
25
25
|
|
26
26
|
There a couple very important difference between the old 3.4.1 verison
|
27
27
|
of the setup.rb and Ruby Setup.
|
@@ -33,7 +33,7 @@ of the setup.rb and Ruby Setup.
|
|
33
33
|
* The +setup+ phase has been renamed to the +compile+ phase.
|
34
34
|
|
35
35
|
|
36
|
-
==
|
36
|
+
== Installation
|
37
37
|
|
38
38
|
The easy way to install is via RubyGems.
|
39
39
|
|
@@ -45,11 +45,11 @@ and from the decompressed package directory run:
|
|
45
45
|
$ ruby script/setup
|
46
46
|
|
47
47
|
|
48
|
-
==
|
48
|
+
== Instruction
|
49
49
|
|
50
50
|
To use setup.rb, a project must conform to the setup.rb standard layout.
|
51
51
|
Please see the documentation on the website if you need to know more about
|
52
|
-
what this entails. Most
|
52
|
+
what this entails. Most projects already follow the standard since it was
|
53
53
|
setup.rb that originally popularized most of the current layout conventions.
|
54
54
|
(Note that the on-line documentation is slightly out of sync with the latest
|
55
55
|
release.)
|
@@ -70,25 +70,34 @@ And is equivalent to running the two main phases in sequence.
|
|
70
70
|
Where +compile+ compiles any extensions and +install+ copies project
|
71
71
|
files to the appropriate places on your system.
|
72
72
|
|
73
|
+
For setup.rb to install a project's documentation and library files
|
74
|
+
properly it is best to supply it was basic information about the project.
|
75
|
+
In particular, the +name+, +version+ and +loadpath+ (if not the default `lib`).
|
76
|
+
This can be done either by creating a `.index` file for the project
|
77
|
+
(see {Indexer}[http://github.com/rubyworks/indexer]), or by adding
|
78
|
+
<tt>.setup/name</tt>, <tt>.setup/version</tt> and <tt>.setup/loadpath</tt>
|
79
|
+
to the project.
|
80
|
+
|
73
81
|
Setup.rb also supports two optional phases, +config+ and +test+.
|
74
82
|
|
75
83
|
$ setup config
|
76
84
|
|
77
85
|
Configuration must be run before any other phase in order to be of
|
78
|
-
|
86
|
+
used. Running `config` creates a `SetupConfig` file which you can then
|
79
87
|
edit to make any adjustments neccessary to the installation. When finished
|
80
88
|
editing this file, use setup.rb as before and your custom configuration
|
81
|
-
will be used
|
89
|
+
will be used instead of the standard defaults.
|
82
90
|
|
83
91
|
$ setup.rb test
|
84
92
|
|
85
|
-
This will run tests if a test script is provided.
|
93
|
+
This will run tests if a test script is provided. It must be run after
|
86
94
|
+compile+, but before +install+. Because there are now a deverse selection
|
87
95
|
of testing tools available for Ruby, testing only happens if the developer
|
88
|
-
has provided a test
|
89
|
-
Keep in mind that testing may require support
|
90
|
-
Lemon, Bacon, QED or Cucumber. When using the
|
91
|
-
activate testing via the <tt>--test</tt> or
|
96
|
+
has provided a test runner script, either. <tt>.setup/test.rb</tt> or
|
97
|
+
<tt>.setup/test.sh</tt>. Keep in mind that testing may require support
|
98
|
+
libraries such as RSpec, Lemon, Bacon, QED or Cucumber. When using the
|
99
|
+
+all+ command, you can activate testing via the <tt>--test</tt> or
|
100
|
+
<tt>-t</tt> option.
|
92
101
|
|
93
102
|
If you later decide you want to remove a program from your system, use
|
94
103
|
+uninstall+.
|
@@ -98,10 +107,10 @@ If you later decide you want to remove a program from your system, use
|
|
98
107
|
This will remove all files previously installed via the setup.rb command.
|
99
108
|
Uninstalling is made possible by the 'SetupReceipt' file that is
|
100
109
|
generated by the install process. If that file is deleted than you
|
101
|
-
will not be able to uninstall. (You can get around this be
|
102
|
-
first though).
|
110
|
+
will not be able to uninstall. (You can usually get around this be
|
111
|
+
reinstalling first though).
|
103
112
|
|
104
|
-
During the make phase, by-product files are
|
113
|
+
During the make phase, by-product files are typically created.
|
105
114
|
You can clean up any of these by-products with:
|
106
115
|
|
107
116
|
$ setup.rb clean
|
@@ -111,26 +120,20 @@ And restore them to their absolute pristine state with:
|
|
111
120
|
$ setup.rb distclean
|
112
121
|
|
113
122
|
For further details on using +setup.rb+, or developing a project that can
|
114
|
-
take advantage of setup.rb's special features, please see the website
|
115
|
-
|
116
|
-
|
117
|
-
== COPYRIGHTS
|
118
|
-
|
119
|
-
Copyright (c) 2008,2009 Thomas Sawyer
|
123
|
+
take advantage of setup.rb's special features, please see the website
|
124
|
+
and associated wiki.
|
120
125
|
|
121
|
-
BSD-2-Clause License.
|
122
126
|
|
123
|
-
|
124
|
-
transfire@gmail.com
|
125
|
-
http://rubyworks.github.com
|
127
|
+
== Copyrights
|
126
128
|
|
129
|
+
Setup.rb is copyrighted open source software.
|
127
130
|
|
128
|
-
Copyright (c)
|
131
|
+
Copyright (c) 2008 Rubyworks (BSD-2-Clause)
|
129
132
|
|
130
|
-
|
133
|
+
It can be modified and redistributed in accordance with the **BSD-2-Clause** license.
|
131
134
|
|
132
|
-
|
133
|
-
aamine@loveruby.net
|
134
|
-
http://i.loveruby.net
|
135
|
+
Setup.rb is a rewrite of the original setup.rb script by {Minero Aoki}[http://i.loveruby.net].
|
135
136
|
|
137
|
+
Copyright (c) 2002 Minero Aoki (GNU LGPL 2.1+)
|
136
138
|
|
139
|
+
See LICENSE.txt and NOTICE.rdoc for details.
|
data/bin/setup.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# Setup.rb v5.
|
2
|
+
# Setup.rb v5.2.0
|
3
3
|
#
|
4
4
|
# This is a stand-alone bundle of the setup.rb application.
|
5
5
|
# You can place it in your projects script/ directory, or
|
@@ -16,20 +16,7 @@
|
|
16
16
|
# without issue and without needing to install it for each.
|
17
17
|
require 'yaml'
|
18
18
|
module Setup
|
19
|
-
|
20
|
-
PROFILE = YAML.load(File.new(DIRECTORY + '/profile.yml'))
|
21
|
-
verfile = YAML.load(File.new(DIRECTORY + '/version.yml'))
|
22
|
-
VERSION = verfile.values_at('major','minor','patch','state','build').compact.join('.')
|
23
|
-
def self.const_missing(name)
|
24
|
-
key = name.to_s.downcase
|
25
|
-
if verfile.key?(key)
|
26
|
-
verfile[key]
|
27
|
-
elsif profile.key?(key)
|
28
|
-
PROFILE[key]
|
29
|
-
else
|
30
|
-
super(name)
|
31
|
-
end
|
32
|
-
end
|
19
|
+
VERSION = '5.2.0' #:erb: VERSION = '<%= version %>'
|
33
20
|
end
|
34
21
|
class << File #:nodoc: all
|
35
22
|
unless respond_to?(:read) # Ruby 1.6 and less
|
@@ -55,17 +42,17 @@ module Setup
|
|
55
42
|
end
|
56
43
|
module Setup
|
57
44
|
class Project
|
58
|
-
ROOT_MARKER = '{.
|
45
|
+
ROOT_MARKER = '{.index,setup.rb,.setup,lib/}'
|
59
46
|
def initialize
|
60
|
-
@
|
61
|
-
@
|
47
|
+
@dotindex_file = find('.index')
|
48
|
+
@dotindex = YAML.load_file(@dotindex_file) if @dotindex_file
|
62
49
|
@name = nil
|
63
50
|
@version = nil
|
64
51
|
@loadpath = ['lib']
|
65
|
-
if @
|
66
|
-
@name = @
|
67
|
-
@version = @
|
68
|
-
@loadpath = @
|
52
|
+
if @dotindex
|
53
|
+
@name = @dotindex['name']
|
54
|
+
@version = @dotindex['version']
|
55
|
+
@loadpath = (@dotindex['paths'] || {})['load']
|
69
56
|
else
|
70
57
|
if file = find('.setup/name')
|
71
58
|
@name = File.read(file).strip
|
@@ -78,7 +65,7 @@ module Setup
|
|
78
65
|
end
|
79
66
|
end
|
80
67
|
end
|
81
|
-
attr :
|
68
|
+
attr :dotindex
|
82
69
|
attr :name
|
83
70
|
attr :version
|
84
71
|
attr :loadpath
|
@@ -365,7 +352,7 @@ require 'yaml'
|
|
365
352
|
require 'shellwords'
|
366
353
|
module Setup
|
367
354
|
class Configuration
|
368
|
-
RBCONFIG = ::
|
355
|
+
RBCONFIG = ::RbConfig::CONFIG
|
369
356
|
META_CONFIG_FILE = META_EXTENSION_DIR + '/metaconfig.rb'
|
370
357
|
def self.options
|
371
358
|
@@options ||= []
|
@@ -402,12 +389,12 @@ module Setup
|
|
402
389
|
option :root , :path, 'install to alternate root location'
|
403
390
|
option :installdirs , :pick, 'install location mode (site,std,home)' #, local)
|
404
391
|
option :type , :pick, 'install location mode (site,std,home)'
|
405
|
-
::
|
392
|
+
::RbConfig::CONFIG.each do |key,val|
|
406
393
|
next if key == "configure_args"
|
407
394
|
name = key.to_s.downcase
|
408
395
|
define_method(name){ val }
|
409
396
|
end
|
410
|
-
config_args = Shellwords.shellwords(::
|
397
|
+
config_args = Shellwords.shellwords(::RbConfig::CONFIG["configure_args"])
|
411
398
|
config_args.each do |ent|
|
412
399
|
if ent.index("=")
|
413
400
|
key, val = *ent.split("=")
|
@@ -705,8 +692,9 @@ module Setup
|
|
705
692
|
end
|
706
693
|
def save_config
|
707
694
|
out = to_yaml
|
708
|
-
|
709
|
-
|
695
|
+
dir = File.dirname(CONFIG_FILE)
|
696
|
+
unless File.exist?(dir)
|
697
|
+
FileUtils.mkdir_p(dir)
|
710
698
|
end
|
711
699
|
if File.exist?(CONFIG_FILE)
|
712
700
|
txt = File.read(CONFIG_FILE)
|
@@ -895,7 +883,7 @@ module Setup
|
|
895
883
|
File.extname(file) == ".#{dllext}"
|
896
884
|
end
|
897
885
|
if ents.empty? && !files.empty?
|
898
|
-
raise Error, "ruby extention not compiled: 'setup.rb
|
886
|
+
raise Error, "ruby extention not compiled: 'setup.rb compile' first"
|
899
887
|
end
|
900
888
|
ents
|
901
889
|
end
|
@@ -1056,20 +1044,26 @@ module Setup
|
|
1056
1044
|
end
|
1057
1045
|
module Setup
|
1058
1046
|
class Tester < Base
|
1059
|
-
RUBYSCRIPT = META_EXTENSION_DIR + '/
|
1060
|
-
SHELLSCRIPT = '
|
1047
|
+
RUBYSCRIPT = META_EXTENSION_DIR + '/test.rb'
|
1048
|
+
SHELLSCRIPT = META_EXTENSION_DIR + '/test.sh'
|
1049
|
+
DEPRECATED_RUBYSCRIPT = META_EXTENSION_DIR + '/testrc.rb'
|
1061
1050
|
def testable?
|
1051
|
+
if File.exist?(DEPRECATED_RUBYSCRIPT)
|
1052
|
+
warn "Must use `.setup/test.rb' instead or `.setup/testrc.rb' to support testing."
|
1053
|
+
end
|
1062
1054
|
return false if config.no_test
|
1063
1055
|
return true if File.exist?(RUBYSCRIPT)
|
1064
1056
|
return true if File.exist?(SHELLSCRIPT)
|
1065
1057
|
false
|
1066
1058
|
end
|
1067
1059
|
def test
|
1068
|
-
return true
|
1060
|
+
return true unless testable?
|
1069
1061
|
if File.exist?(RUBYSCRIPT)
|
1070
1062
|
test_rubyscript
|
1071
1063
|
elsif File.exist?(SHELLSCRIPT)
|
1072
1064
|
test_shellscript
|
1065
|
+
else
|
1066
|
+
true
|
1073
1067
|
end
|
1074
1068
|
end
|
1075
1069
|
def test_shellscript
|
data/lib/setup/configuration.rb
CHANGED
@@ -13,7 +13,7 @@ module Setup
|
|
13
13
|
class Configuration
|
14
14
|
|
15
15
|
# Ruby System Configuration
|
16
|
-
RBCONFIG = ::
|
16
|
+
RBCONFIG = ::RbConfig::CONFIG
|
17
17
|
|
18
18
|
## Confgiuration file
|
19
19
|
#CONFIG_FILE = 'SetupConfig' # '.cache/setup/config'
|
@@ -26,7 +26,9 @@ module Setup
|
|
26
26
|
@@options ||= []
|
27
27
|
end
|
28
28
|
|
29
|
+
#
|
29
30
|
# TODO: better methods for path type
|
31
|
+
#
|
30
32
|
def self.option(name, *args) #type, description)
|
31
33
|
options << [name.to_s, *args] #type, description]
|
32
34
|
attr_accessor(name)
|
@@ -76,7 +78,7 @@ module Setup
|
|
76
78
|
|
77
79
|
# Turn all of CONFIG into methods.
|
78
80
|
|
79
|
-
::
|
81
|
+
::RbConfig::CONFIG.each do |key,val|
|
80
82
|
next if key == "configure_args"
|
81
83
|
name = key.to_s.downcase
|
82
84
|
#name = name.sub(/^--/,'')
|
@@ -85,7 +87,7 @@ module Setup
|
|
85
87
|
end
|
86
88
|
|
87
89
|
# Turn all of CONFIG["configure_args"] into methods.
|
88
|
-
config_args = Shellwords.shellwords(::
|
90
|
+
config_args = Shellwords.shellwords(::RbConfig::CONFIG["configure_args"])
|
89
91
|
config_args.each do |ent|
|
90
92
|
if ent.index("=")
|
91
93
|
key, val = *ent.split("=")
|
@@ -593,8 +595,9 @@ module Setup
|
|
593
595
|
# Save configuration.
|
594
596
|
def save_config
|
595
597
|
out = to_yaml
|
596
|
-
|
597
|
-
|
598
|
+
dir = File.dirname(CONFIG_FILE)
|
599
|
+
unless File.exist?(dir)
|
600
|
+
FileUtils.mkdir_p(dir)
|
598
601
|
end
|
599
602
|
if File.exist?(CONFIG_FILE)
|
600
603
|
txt = File.read(CONFIG_FILE)
|