replace term-ansicolor with built-in colorization

This commit is contained in:
David Dollar committed 2012-03-16 16:34:14 -04:00
1 parent bb3377407a
commit 2f982ff9c7
5 files changed
+81 -21

No files matched your search

-2
View File
@@ -2,7 +2,6 @@ PATH
remote: . remote: .
specs: specs:
foreman (0.40.0) foreman (0.40.0)
term-ansicolor (~> 1.0.7)
thor (>= 0.13.6) thor (>= 0.13.6)
GEM GEM
@@ -47,7 +46,6 @@ GEM
multi_json (~> 1.0.3) multi_json (~> 1.0.3)
simplecov-html (~> 0.5.3) simplecov-html (~> 0.5.3)
simplecov-html (0.5.3) simplecov-html (0.5.3)
term-ansicolor (1.0.7)
thor (0.14.6) thor (0.14.6)
win32console (1.3.0-x86-mingw32) win32console (1.3.0-x86-mingw32)
xml-simple (1.0.15) xml-simple (1.0.15)
+1 -2
View File
@@ -16,8 +16,7 @@ Gem::Specification.new do |gem|
gem.files = Dir["**/*"].select { |d| d =~ %r{^(README|bin/|data/|ext/|lib/|spec/|test/)} } gem.files = Dir["**/*"].select { |d| d =~ %r{^(README|bin/|data/|ext/|lib/|spec/|test/)} }
gem.files << "man/foreman.1" gem.files << "man/foreman.1"
gem.add_dependency 'term-ansicolor', '~> 1.0.7' gem.add_dependency 'thor', '>= 0.13.6'
gem.add_dependency 'thor', '>= 0.13.6'
if ENV["PLATFORM"] == "java" if ENV["PLATFORM"] == "java"
gem.add_dependency "posix-spawn", "~> 0.3.6" gem.add_dependency "posix-spawn", "~> 0.3.6"
+40
View File
@@ -0,0 +1,40 @@
require "foreman"
module Foreman::Color
ANSI = {
:reset => 0,
:black => 30,
:red => 31,
:green => 32,
:yellow => 33,
:blue => 34,
:magenta => 35,
:cyan => 36,
:white => 37,
:bright_black => 30,
:bright_red => 31,
:bright_green => 32,
:bright_yellow => 33,
:bright_blue => 34,
:bright_magenta => 35,
:bright_cyan => 36,
:bright_white => 37,
}
def self.enable(io)
io.extend(self)
end
def color?
return false unless self.respond_to?(:isatty)
self.isatty && ENV["TERM"]
end
def color(name)
return "" unless color?
return "" unless ansi = ANSI[name.to_sym]
"\e[#{ansi}m"
end
end
+9 -17
View File
@@ -1,10 +1,10 @@
require "foreman" require "foreman"
require "foreman/color"
require "foreman/process" require "foreman/process"
require "foreman/procfile" require "foreman/procfile"
require "foreman/utils" require "foreman/utils"
require "tempfile" require "tempfile"
require "timeout" require "timeout"
require "term/ansicolor"
require "fileutils" require "fileutils"
require "thread" require "thread"
@@ -15,11 +15,10 @@ class Foreman::Engine
attr_reader :directory attr_reader :directory
attr_reader :options attr_reader :options
extend Term::ANSIColor COLORS = %w( cyan yellow green magenta red blue intense_cyan intense_yellow
intense_green intense_magenta intense_red, intense_blue )
COLORS = [ cyan, yellow, green, magenta, red, blue, Foreman::Color.enable($stdout)
intense_cyan, intense_yellow, intense_green, intense_magenta,
intense_red, intense_blue ]
def initialize(procfile, options={}) def initialize(procfile, options={})
@procfile = Foreman::Procfile.new(procfile) @procfile = Foreman::Procfile.new(procfile)
@@ -128,11 +127,11 @@ private ######################################################################
rescue Errno::ECHILD rescue Errno::ECHILD
end end
def info(message, name="system", color=Term::ANSIColor.white) def info(message, name="system", color=:white)
output = "" output = ""
output += color output += $stdout.color(color)
output += "#{Time.now.strftime("%H:%M:%S")} #{pad_process_name(name)} | " output += "#{Time.now.strftime("%H:%M:%S")} #{pad_process_name(name)} | "
output += Term::ANSIColor.reset output += $stdout.color(:reset)
output += message.chomp output += message.chomp
puts output puts output
end end
@@ -182,8 +181,8 @@ private ######################################################################
end end
def assign_colors def assign_colors
procfile.entries.each do |entry| procfile.entries.each_with_index do |entry, idx|
colors[entry.name] = next_color colors[entry.name] = COLORS[idx % COLORS.length]
end end
end end
@@ -191,13 +190,6 @@ private ######################################################################
readers.invert[reader] readers.invert[reader]
end end
def next_color
@current_color ||= -1
@current_color += 1
@current_color = 0 if COLORS.length < @current_color
COLORS[@current_color]
end
def read_environment_files(filenames) def read_environment_files(filenames)
environment = {} environment = {}
+31
View File
@@ -0,0 +1,31 @@
require "spec_helper"
require "foreman/color"
describe Foreman::Color do
let(:io) { Object.new }
it "should extend an object with colorization" do
Foreman::Color.enable(io)
io.should respond_to(:color)
end
it "should not colorize if the object does not respond to isatty" do
mock(io).respond_to?(:isatty) { false }
Foreman::Color.enable(io)
io.color(:white).should == ""
end
it "should not colorize if the object is not a tty" do
mock(io).isatty { false }
Foreman::Color.enable(io)
io.color(:white).should == ""
end
it "should colorize if the object is a tty" do
mock(io).isatty { true }
Foreman::Color.enable(io)
io.color(:white).should == "\e[37m"
end
end