detroit 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.ruby CHANGED
@@ -1,45 +1,43 @@
1
- ---
2
- name: detroit
3
- version: 0.1.0
4
- title: Detroit
5
- summary: Software Production Mangement
6
- description: Detroit is an advanced lifecycle build system. With Detroit, build tasks are user defined service instances tied to stops along a track. Whenever the detroit console command is run, a track is followed from beginning to designated destination.
7
- loadpath:
8
- - lib
9
- manifest: Manifest
10
- requires:
1
+ ---
2
+ authors:
3
+ - name: Trans
4
+ email: transfire@gmail.com
5
+ copyrights:
6
+ - holder: Thomas Sawyer
7
+ year: '2007'
8
+ license: GPL3
9
+ replacements: []
10
+ conflicts: []
11
+ requirements:
11
12
  - name: facets
12
- version: 0+
13
- group: []
14
-
15
13
  - name: pom
16
- version: 0+
17
- group: []
18
-
19
14
  - name: qed
20
- version: 0+
21
- group:
15
+ groups:
22
16
  - test
23
- conflicts: []
24
-
25
- replaces: []
26
-
27
- engine_check: []
28
-
29
- organization: Rubyworks
30
- contact: Trans <transfire@gmail.com>
31
- created: 2007-10-10
32
- copyright: Copyright (c) 2007 Thomas Sawyer
33
- licenses:
34
- - GPL3
35
- authors:
36
- - Thomas Sawyer
37
- maintainers: []
38
-
39
- resources:
17
+ development: true
18
+ dependencies: []
19
+ repositories:
20
+ - uri: http://github.com/proutils/detroit.git
21
+ scm: git
22
+ name: upstream
23
+ resources:
40
24
  home: http://rubyworks.github.com/detroit
41
25
  code: http://github.com/rubyworks/detroit
42
26
  mail: http://groups.google.com/rubyworks-mailinglist
43
- repositories:
44
- public: http://github.com/proutils/detroit.git
45
- spec_version: 1.0.0
27
+ load_path:
28
+ - lib
29
+ extra: {}
30
+ source:
31
+ - PROFILE
32
+ alternatives: []
33
+ revision: 0
34
+ version: 0.2.0
35
+ date: '2011-10-18'
36
+ name: detroit
37
+ title: Detroit
38
+ summary: Software Production Mangement
39
+ created: '2007-10-10'
40
+ description: Detroit is an advanced lifecycle build system. With Detroit, build tasks
41
+ are user defined service instances tied to stops along a track. Whenever the detroit
42
+ console command is run, a track is followed from beginning to designated destination.
43
+ organization: Detroit
@@ -2,18 +2,22 @@
2
2
 
3
3
  == Detroit
4
4
 
5
- Copyright (c) 2011 Thomas Sawyer
5
+ Copyright:: (c) 2011 Thomas Sawyer, Rubyworks
6
+ License:: GPL3
7
+ Website:: http://detroit.github.com
6
8
 
7
- This program is free software: you can redistribute it and/or modify
8
- it under the terms of the GNU General Public License as published by
9
- the Free Software Foundation, either version 3 of the License, or
10
- (at your option) any later version.
9
+ Copyright (c) 2011 Thomas Sawyer
11
10
 
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
11
+ This program is free software: you can redistribute it and/or modify
12
+ it under the terms of the GNU General Public License as published by
13
+ the Free Software Foundation, either version 3 of the License, or
14
+ (at your option) any later version.
16
15
 
17
- You should have received a copy of the GNU General Public License
18
- along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ This program is distributed in the hope that it will be useful,
17
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ GNU General Public License for more details.
20
+
21
+ You should have received a copy of the GNU General Public License
22
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
19
23
 
@@ -1,5 +1,25 @@
1
1
  = RELEASE HISTORY
2
2
 
3
+ == 0.2.0 / 2011-10-19
4
+
5
+ The big news here is that Detroit configuration files are now
6
+ called _assembly_ files, and no longer _schedule_ files. The
7
+ new term is much more fitting the general design and overall
8
+ nomenclature of the system. In addition a few general improvements
9
+ and bug fixes have been applied. In effect, this is probabaly the
10
+ first really usable public release of Detroit.
11
+
12
+ Changes:
13
+
14
+ * Schedule was renamed to Assembly.
15
+ * Add help system using man-pages.
16
+ * Put install phase before verify.
17
+ * Add custom method for Ruby-style assemblies.
18
+ * Rename ServiceWrapper to Service.
19
+ * Firm up standard IO API for tools.
20
+ * Fix --config output.
21
+
22
+
3
23
  == 0.1.0 / 2011-06-29
4
24
 
5
25
  Detroit is a lifecycle build system for Ruby. Detroit was originally
@@ -0,0 +1,87 @@
1
+ ## initialize
2
+
3
+ Load schedule text written in Ruby DSL.
4
+
5
+ check do |ruby|
6
+ Detroit::Schedule.new(ruby)
7
+ end
8
+
9
+ ok <<-HERE
10
+ Email :myself do |s|
11
+ s.mailto = 'transfire@gmail.com'
12
+ s.active = true
13
+ end
14
+
15
+ Syntax do |s|
16
+ s.exclude = ['lib/plugins']
17
+ s.active = false
18
+ end
19
+ HERE
20
+
21
+ Load schedule from a file written in Ruby DSL.
22
+
23
+ check do |file|
24
+ path = File.join(root_dir, file)
25
+ Detroit::Schedule.new(File.new(path))
26
+ end
27
+
28
+ ok 'samples/example_schedule.rb'
29
+
30
+ Load schedule text written in YAML"
31
+
32
+ check do |yaml|
33
+ Detroit::Schedule.new(yaml)
34
+ end
35
+
36
+ ok <<-HERE
37
+ ---
38
+ myself:
39
+ service: email
40
+ mailto : transfire@gmail.com
41
+ active : true
42
+ end
43
+
44
+ syntax:
45
+ exclude: [lib/plugins]
46
+ active : false
47
+ HERE
48
+
49
+ Load schedule from a file written in YAML.
50
+
51
+ check do |file|
52
+ path = File.join(root_dir, file)
53
+ Detroit::Schedule.new(File.new(path))
54
+ end
55
+
56
+ ok 'samples/example_schedule.yml'
57
+
58
+
59
+ = RDoc Plugin
60
+
61
+ The RDoc plugin should generate rdoc doumentation according
62
+ to the parameters provided.
63
+
64
+ Given a suitable project.
65
+
66
+ Dir.chdir 'sample'
67
+
68
+ Now if we run 'syckle document' on the sample project.
69
+
70
+ `detroit document`
71
+
72
+ The documentation should be generated as expected.
73
+
74
+ File.assert.directory?('doc/rdoc')
75
+
76
+ Lets clean up after ourselves.
77
+
78
+ FileUtils.rm_r 'doc'
79
+ Dir.chdir '..'
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
@@ -1,14 +1,14 @@
1
1
  = Detroit
2
2
 
3
3
  Author:: Thomas Sawyer
4
- Licence:: GPL v.3
4
+ License:: GPL v.3
5
5
  Copyright:: (c) 2011 Rubyworks, Thomas Sawyer
6
6
 
7
7
 
8
8
  == DESCRIPTION
9
9
 
10
10
  Detroit is a software production management aid for Ruby developers.
11
- Detroit utilizes a lifecycle methodology to help developers prepare and
11
+ Detroit utilizes a life-cycle methodology to help developers prepare and
12
12
  release Ruby software in a clear, repeatable, linear fashion.
13
13
 
14
14
 
@@ -124,10 +124,10 @@ and give Detroit a try please let us know of any issues you encounter.
124
124
 
125
125
  == HISTORY
126
126
 
127
- Detroit is actaully the offspring of Reap v.10, and was called Syckle for
127
+ Detroit is actaully the offspring of Reap v10, and was called Syckle for
128
128
  a number of years as it matured. It represents many years of design considerations
129
- (and reconsiderations), that evolved Reap from its simple Rake extension origins,
130
- which pre-dated Hoe, to the lifecycle system it is today.
129
+ (and reconsiderations) that evolved Reap from its simple Rake extension origins,
130
+ which pre-dated Hoe, to the life-cycle system it is today.
131
131
 
132
132
 
133
133
  == COPYRIGHT & LICENSE
@@ -13,7 +13,7 @@ module Detroit
13
13
  end
14
14
 
15
15
  # TODO: Only here b/c of bug in Ruby 1.8.x
16
- #VERSION = "0.1.0"
16
+ #VERSION = "0.2.0"
17
17
  end
18
18
 
19
19
  # Erb is used to to script YAML-based schedule files.
@@ -29,7 +29,7 @@ require 'yaml'
29
29
  require 'ansi/terminal'
30
30
  require 'ansi/code'
31
31
 
32
- # The parallel gem is used to (optionally) to multitask services.
32
+ # The parallel gem is used to (optionally) multitask services.
33
33
  begin
34
34
  require 'parallel'
35
35
  rescue LoadError
@@ -38,30 +38,27 @@ end
38
38
  # POM is used to access project metadata.
39
39
  require 'pom'
40
40
 
41
- # Redtools provides the standard services.
42
- require 'redtools'
43
-
44
41
  # And all the rest is Detroit, baby.
45
42
  if RUBY_VERSION > '1.9'
46
43
  require_relative 'detroit/core_ext'
47
44
  require_relative 'detroit/config'
48
45
  require_relative 'detroit/service'
49
46
  require_relative 'detroit/tool'
50
- require_relative 'detroit/assembly'
47
+ require_relative 'detroit/assembly_system'
51
48
  require_relative 'detroit/standard_assembly'
52
49
  require_relative 'detroit/control'
53
50
  require_relative 'detroit/application'
54
- require_relative 'detroit/schedule'
51
+ require_relative 'detroit/assembly'
55
52
  require_relative 'detroit/custom'
56
53
  else
57
54
  require 'detroit/core_ext'
58
55
  require 'detroit/config'
59
56
  require 'detroit/service'
60
57
  require 'detroit/tool'
61
- require 'detroit/assembly'
58
+ require 'detroit/assembly_system'
62
59
  require 'detroit/standard_assembly'
63
60
  require 'detroit/control'
64
61
  require 'detroit/application'
65
- require 'detroit/schedule'
62
+ require 'detroit/assembly'
66
63
  require 'detroit/custom'
67
64
  end
@@ -1,45 +1,43 @@
1
- ---
2
- name: detroit
3
- version: 0.1.0
4
- title: Detroit
5
- summary: Software Production Mangement
6
- description: Detroit is an advanced lifecycle build system. With Detroit, build tasks are user defined service instances tied to stops along a track. Whenever the detroit console command is run, a track is followed from beginning to designated destination.
7
- loadpath:
8
- - lib
9
- manifest: Manifest
10
- requires:
1
+ ---
2
+ authors:
3
+ - name: Trans
4
+ email: transfire@gmail.com
5
+ copyrights:
6
+ - holder: Thomas Sawyer
7
+ year: '2007'
8
+ license: GPL3
9
+ replacements: []
10
+ conflicts: []
11
+ requirements:
11
12
  - name: facets
12
- version: 0+
13
- group: []
14
-
15
13
  - name: pom
16
- version: 0+
17
- group: []
18
-
19
14
  - name: qed
20
- version: 0+
21
- group:
15
+ groups:
22
16
  - test
23
- conflicts: []
24
-
25
- replaces: []
26
-
27
- engine_check: []
28
-
29
- organization: Rubyworks
30
- contact: Trans <transfire@gmail.com>
31
- created: 2007-10-10
32
- copyright: Copyright (c) 2007 Thomas Sawyer
33
- licenses:
34
- - GPL3
35
- authors:
36
- - Thomas Sawyer
37
- maintainers: []
38
-
39
- resources:
17
+ development: true
18
+ dependencies: []
19
+ repositories:
20
+ - uri: http://github.com/proutils/detroit.git
21
+ scm: git
22
+ name: upstream
23
+ resources:
40
24
  home: http://rubyworks.github.com/detroit
41
25
  code: http://github.com/rubyworks/detroit
42
26
  mail: http://groups.google.com/rubyworks-mailinglist
43
- repositories:
44
- public: http://github.com/proutils/detroit.git
45
- spec_version: 1.0.0
27
+ load_path:
28
+ - lib
29
+ extra: {}
30
+ source:
31
+ - PROFILE
32
+ alternatives: []
33
+ revision: 0
34
+ version: 0.2.0
35
+ date: '2011-10-18'
36
+ name: detroit
37
+ title: Detroit
38
+ summary: Software Production Mangement
39
+ created: '2007-10-10'
40
+ description: Detroit is an advanced lifecycle build system. With Detroit, build tasks
41
+ are user defined service instances tied to stops along a track. Whenever the detroit
42
+ console command is run, a track is followed from beginning to designated destination.
43
+ organization: Detroit
@@ -1,7 +1,7 @@
1
1
  module Detroit
2
2
 
3
- #
4
- DEFAULT_ASSEMBLY = :standard
3
+ # The default assembly system to use.
4
+ DEFAULT_ASSEMBLY_SYSTEM = :standard
5
5
 
6
6
  # Application class is the main controller class for running
7
7
  # a session of Detroit.
@@ -17,48 +17,75 @@ module Detroit
17
17
  def initialize(options)
18
18
  @options = options
19
19
  #load_standard_plugins
20
+
21
+ self.skip = options[:skip]
22
+ self.quiet = options[:quiet]
23
+ self.system = options[:system]
24
+ self.multitask = options[:multitask]
25
+ self.assemblies = options[:assemblies]
20
26
  end
21
27
 
22
- # # Load standard plugins.
23
- # def load_standard_plugins
24
- # #::Plugin.find("detroit/*.rb").each do |file|
25
- # Detroit.standard_plugins.each do |file|
26
- # begin
27
- # require(file)
28
- # rescue => err
29
- # $stderr.puts err if $DEBUG
30
- # end
31
- # end
32
- # end
28
+ # Quiet mode?
29
+ def quiet?
30
+ @quiet
31
+ end
32
+
33
+ # Set quiet mode.
34
+ def quiet=(boolean)
35
+ @quiet = !!boolean
36
+ end
37
+
38
+ # List of service names to skip.
39
+ def skip
40
+ @skip
41
+ end
42
+
43
+ # Set skip list.
44
+ def skip=(list)
45
+ @skip = list.to_list.map{ |s| s.downcase }
46
+ end
33
47
 
34
48
  # The selected assembly system.
35
- def assembly
36
- options[:assembly] || DEFAULT_ASSEMBLY
49
+ def system
50
+ @system
37
51
  end
38
52
 
39
- # Quiet mode?
40
- def quiet?
41
- options[:quiet]
53
+ # Set assembly system to use.
54
+ def system=(name)
55
+ @system = (name || DEFAULT_ASSEMBLY_SYSTEM)
42
56
  end
43
57
 
58
+ # Alias for #system.
59
+ alias :assembly_system :system
60
+
44
61
  # Multitask mode?
45
62
  def multitask?
46
- options[:multitask] && defined?(Parallel)
63
+ @multitask
47
64
  end
48
65
 
49
- # Returns a list of services to skip as specificed on the commandline.
50
- def skip
51
- @skip ||= options[:skip].to_list.map{ |s| s.downcase }
66
+ # Set multi-task mode.
67
+ def multitask=(boolean)
68
+ if boolean && !defined?(Parallel)
69
+ puts "Parallel gem must be installed to multitask."
70
+ @multitask = false
71
+ else
72
+ @multitask = boolean
73
+ end
74
+ end
75
+
76
+ # List of assembly files to use.
77
+ def assemblies
78
+ @assemblies
52
79
  end
53
80
 
54
81
  #
55
- def schedules
56
- @schedules ||= options[:schedules]
82
+ def assemblies=(files)
83
+ @assemblies = files
57
84
  end
58
85
 
59
86
  # Detroit configuration.
60
87
  def config
61
- @config ||= Detroit::Config.new(schedules)
88
+ @config ||= Detroit::Config.new(assemblies)
62
89
  end
63
90
 
64
91
  # Provides access to the Project instance via `Detroit.project` class method.
@@ -73,14 +100,38 @@ module Detroit
73
100
  config.defaults
74
101
  end
75
102
 
76
- # Generates a configuration template for particular tool or all tools.
77
- # This is only used for reference purposes.
78
- def config_template(name=nil)
79
- if name
80
- list = [name, Detroit.tools[name]]
103
+ # # Load standard plugins.
104
+ # def load_standard_plugins
105
+ # #::Plugin.find("detroit/*.rb").each do |file|
106
+ # Detroit.standard_plugins.each do |file|
107
+ # begin
108
+ # require(file)
109
+ # rescue => err
110
+ # $stderr.puts err if $DEBUG
111
+ # end
112
+ # end
113
+ # end
114
+
115
+ # Display detailed help for a given tool.
116
+ def display_help(name)
117
+ if not Detroit.tools.key?(name)
118
+ config.load_plugin(name)
119
+ end
120
+ tool = Detroit.tools[name]
121
+ if tool.respond_to?(:man_page)
122
+ Kernel.system "man #{tool.man_page}"
81
123
  else
82
- list = Detroit.tools
124
+ puts "Sorry, no detailed help available for `#{name}'."
83
125
  end
126
+ end
127
+
128
+ # Generates a configuration template for particular tool.
129
+ # This is only used for reference purposes.
130
+ def config_template(name)
131
+ if not Detroit.tools.key?(name)
132
+ config.load_plugin(name)
133
+ end
134
+ list = {name => Detroit.tools[name]}
84
135
  cfg = {}
85
136
  list.each do |srv_name, srv_class|
86
137
  attrs = srv_class.options #instance_methods.select{ |m| m.to_s =~ /\w+=$/ && !%w{taguri=}.include?(m.to_s) }
@@ -92,21 +143,28 @@ module Detroit
92
143
  cfg
93
144
  end
94
145
 
95
- # Active services are services defined in schedule files and do not
146
+ # TODO: Setup all services, then ween out inactive ones?
147
+ #def services
148
+ #end
149
+
150
+ # Active services are services defined in assembly files and do not
96
151
  # have their active setting turned off.
97
152
  #
98
153
  # Returns Array of active services.
99
154
  def active_services
100
155
  @active_services ||= (
101
- activelist = []
156
+ list = []
102
157
 
103
158
  config.each do |key, opts|
104
- next unless opts && opts['active'] != false
105
-
106
- # omit any service in the skip list
159
+ next unless opts
160
+ next unless opts['active'] != false
107
161
  next if skip.include?(key.to_s)
108
162
 
109
- tool_name = (opts.delete('tool') || opts.delete('service') || key).to_s.downcase
163
+ tool_name = (
164
+ opts.delete('tool') ||
165
+ opts.delete('service') ||
166
+ key
167
+ ).to_s.downcase
110
168
 
111
169
  unless Detroit.tools.key?(tool_name)
112
170
  config.load_plugin(tool_name)
@@ -121,39 +179,21 @@ module Detroit
121
179
  options = defaults[tool_name.downcase].to_h
122
180
  options = options.merge(common_tool_options)
123
181
  options = options.merge(opts)
124
- #activelist << tool_class.new(key, options) #script,
125
- ## remove any services specified by the --skip option on the comamndline
126
- activelist << ServiceWrapper.new(key, tool_class, options) #script,
182
+
183
+ list << Service.new(key, tool_class, options) #script,
127
184
  #else
128
185
  # warn "Service #{tool_class} is not available."
129
186
  end
130
187
  end
131
188
 
132
189
  # sorting here trickles down to processing later
133
- activelist = activelist.sort_by{ |s| s.priority || 0 }
190
+ #list = list.sort_by{ |s| s.priority || 0 }
134
191
 
135
- activelist
192
+ list
136
193
  )
137
194
  end
138
195
 
139
- #alias_method :services, :active_services
140
-
141
- # Service configuration, from project's schedule file(s).
142
- #
143
- # Returns Hash of service name and settings.
144
- #def service_configs
145
- # config.services
146
- #end
147
-
148
- # Run individual detroit scripts.
149
- #def runscript(script, stop)
150
- # @config.services.clear
151
- # @config.load_schedule_file(script)
152
- # #@service_configs = load_service_configs(script)
153
- # run(stop)
154
- #end
155
-
156
- # Start the run.
196
+ # Change direectory to project root and run.
157
197
  def start(stop)
158
198
  Dir.chdir(project.root) do # change into project directory
159
199
  run(stop)
@@ -175,9 +215,9 @@ module Detroit
175
215
  name = name.to_sym
176
216
  stop = stop.to_sym if stop
177
217
 
178
- assm = Detroit.assemblies[assembly]
218
+ assm = Detroit.assembly_systems[system]
179
219
 
180
- raise "Unkown assembly `#{assembly}'" unless assm
220
+ raise "Unkown assembly system `#{system}'" unless assm
181
221
 
182
222
  track = assm.get_track(name, stop)
183
223
 
@@ -191,17 +231,14 @@ module Detroit
191
231
  exit 0
192
232
  end
193
233
 
234
+ @destination = stop
235
+
194
236
  # prime the services (so as to fail early)
195
237
  active_services.each do |srv|
196
238
  srv.preconfigure if srv.respond_to?("preconfigure")
197
239
  end
198
240
 
199
- if multitask?
200
- h = ["#{project.metadata.title} v#{project.metadata.version} [M]", "#{project.root}"]
201
- else
202
- h = ["#{project.metadata.title} v#{project.metadata.version}", "#{project.root}"]
203
- end
204
- status_header(*h)
241
+ status_header(*header_message)
205
242
 
206
243
  start_time = Time.now
207
244
 
@@ -239,7 +276,7 @@ module Detroit
239
276
 
240
277
  # Returns a project's Detroit hooks directory.
241
278
  def hook_directory
242
- dir = project.root.glob("{.,}detroit/hooks").first
279
+ project.root.glob("{.,}detroit/hooks").first
243
280
  end
244
281
 
245
282
  #
@@ -260,9 +297,12 @@ module Detroit
260
297
  end
261
298
 
262
299
  # Make service calls.
300
+ #
301
+ # This groups services by priority b/c groups of the same priority can be run
302
+ # in parallel if the multitask option is on.
263
303
  def service_calls(track, stop)
264
304
  prioritized_services = active_services.group_by{ |srv| srv.priority }.sort_by{ |k,v| k }
265
- prioritized_services.each do |(priority, services)|
305
+ prioritized_services.each do |priority, services|
266
306
  ## remove any services specified by the --skip option on the comamndline
267
307
  #services = services.reject{ |srv| skip.include?(srv.key.to_s) }
268
308
  ## only servies that are on the track
@@ -286,36 +326,27 @@ module Detroit
286
326
  # run if the service supports the track and stop.
287
327
  #if srv.respond_to?("#{track}_#{stop}")
288
328
  if srv.stop?(stop)
289
- if options[:verbose]
329
+ if options[:trace] #options[:verbose]
290
330
  #status_line("#{srv.key.to_s} (#{srv.class}##{track}_#{stop})", stop.to_s.gsub('_', '-').capitalize)
291
331
  status_line("#{srv.key.to_s} (#{srv.class}##{stop})", stop.to_s.gsub('_', '-').capitalize)
292
332
  else
293
333
  status_line("#{srv.key.to_s}", stop.to_s.gsub('_', '-').capitalize)
294
334
  end
295
335
  #srv.__send__("#{track}_#{stop}")
296
- srv.invoke(stop)
336
+ srv.invoke(stop, @destination)
297
337
  end
298
338
  end
299
339
 
300
- # Returns a list of all terminal stops, i.e. stops at a tracks end.
301
- # FIXME: stop_map is not defined.
302
- def end_stops
303
- (stop_map.keys - stop_map.values).compact
304
- end
340
+ # --- Print Methods -------------------------------------------------------
305
341
 
306
- # Give an overview of stops this track supports.
307
- # FIXME: end_stops blows up.
308
- def overview
309
- end_stops.each do |stop_name|
310
- action_plan(stop_name).each do |act|
311
- display_action(act)
312
- end
313
- puts
342
+ def header_message
343
+ if multitask?
344
+ ["#{project.metadata.title} v#{project.metadata.version} [M]", "#{project.root}"]
345
+ else
346
+ ["#{project.metadata.title} v#{project.metadata.version}", "#{project.root}"]
314
347
  end
315
348
  end
316
349
 
317
- # --- Print Methods ------------------------------------------------------
318
-
319
350
  # Print a status header, which consists of project name and version on the
320
351
  # left and stop location on the right.
321
352
  #
@@ -355,7 +386,7 @@ module Detroit
355
386
 
356
387
  #
357
388
  def print_header(left, right)
358
- if ANSI::SUPPORTED
389
+ if $ansi #ANSI::SUPPORTED
359
390
  printline('', '', :pad=>1, :sep=>' ', :style=>[:negative, :bold], :left=>[:bold], :right=>[:bold])
360
391
  printline(left, right, :pad=>2, :sep=>' ', :style=>[:negative, :bold], :left=>[:bold], :right=>[:bold])
361
392
  printline('', '', :pad=>1, :sep=>' ', :style=>[:negative, :bold], :left=>[:bold], :right=>[:bold])
@@ -366,7 +397,7 @@ module Detroit
366
397
 
367
398
  #
368
399
  def print_phase(left, right)
369
- if ANSI::SUPPORTED
400
+ if $ansi #ANSI::SUPPORTED
370
401
  printline(left, right, :pad=>2, :sep=>' ', :style=>[:on_white, :black, :bold], :left=>[:bold], :right=>[:bold])
371
402
  else
372
403
  printline(left, right, :pad=>2, :sep=>'-')