diff options
author | ara.t.howard <ara.t.howard@gmail.com> | 2011-04-12 21:43:35 -0600 |
---|---|---|
committer | ara.t.howard <ara.t.howard@gmail.com> | 2011-04-12 21:43:35 -0600 |
commit | f03ffcf98e497d759715551fc35da7ff1f5fa817 (patch) | |
tree | 3a7cf623acb9416f2d30c288d183e6ba9d99d07c | |
parent | 4963e5053ef49d3549b4571e6bb449cd61514cfb (diff) | |
download | systemu-f03ffcf98e497d759715551fc35da7ff1f5fa817.tar.gz |
1.9.2 compat from ripienaar
-rw-r--r-- | README | 8 | ||||
-rw-r--r-- | Rakefile | 165 | ||||
-rw-r--r-- | lib/systemu.rb | 2 | ||||
-rw-r--r-- | systemu.gemspec | 27 |
4 files changed, 151 insertions, 51 deletions
@@ -53,7 +53,7 @@ SAMPLES ~ > ruby samples/a.rb - [#<Process::Status: pid=95599,exited(0)>, "Thu Jun 24 07:47:38 -0600 2010\n", "Thu Jun 24 07:47:38 -0600 2010\n"] + [#<Process::Status: pid=44129,exited(0)>, "Tue Apr 12 21:43:07 -0600 2011\n", "Tue Apr 12 21:43:07 -0600 2011\n"] <========< samples/b.rb >========> @@ -75,7 +75,7 @@ SAMPLES ~ > ruby samples/b.rb - [#<Process::Status: pid=95604,exited(0)>, "Thu Jun 24 07:47:38 -0600 2010\n", "Thu Jun 24 07:47:38 -0600 2010\n"] + [#<Process::Status: pid=44134,exited(0)>, "Tue Apr 12 21:43:07 -0600 2011\n", "Tue Apr 12 21:43:07 -0600 2011\n"] <========< samples/c.rb >========> @@ -163,7 +163,7 @@ SAMPLES ~ > ruby samples/f.rb - #<Process::Status: pid=95624,signaled(SIGKILL=9)> - "1277387258\n1277387259\n1277387260\n" + #<Process::Status: pid=44154,signaled(SIGKILL=9)> + "1302666187\n1302666188\n1302666189\n" @@ -1,19 +1,67 @@ - This.rubyforge_project = 'codeforpeople' This.author = "Ara T. Howard" This.email = "ara.t.howard@gmail.com" -This.homepage = "http://github.com/ahoward/#{ This.lib }/tree/master" +This.homepage = "http://github.com/ahoward/#{ This.lib }" task :default do - puts(Rake::Task.tasks.map{|task| task.name} - ['default']) + puts((Rake::Task.tasks.map{|task| task.name.gsub(/::/,':')} - ['default']).sort) +end + +task :test do + run_tests! +end + +namespace :test do + task(:unit){ run_tests!(:unit) } + task(:functional){ run_tests!(:functional) } + task(:integration){ run_tests!(:integration) } +end + +def run_tests!(which = nil) + which ||= '**' + test_dir = File.join(This.dir, "test") + test_glob ||= File.join(test_dir, "#{ which }/**_test.rb") + test_rbs = Dir.glob(test_glob).sort + + div = ('=' * 119) + line = ('-' * 119) + helper = "-r ./test/helper.rb" if test(?e, "./test/helper.rb") + + test_rbs.each_with_index do |test_rb, index| + testno = index + 1 + command = "#{ This.ruby } -I ./lib -I ./test/lib #{ helper } #{ test_rb }" + + puts + say(div, :color => :cyan, :bold => true) + say("@#{ testno } => ", :bold => true, :method => :print) + say(command, :color => :cyan, :bold => true) + say(line, :color => :cyan, :bold => true) + + system(command) + + say(line, :color => :cyan, :bold => true) + + status = $?.exitstatus + + if status.zero? + say("@#{ testno } <= ", :bold => true, :color => :white, :method => :print) + say("SUCCESS", :color => :green, :bold => true) + else + say("@#{ testno } <= ", :bold => true, :color => :white, :method => :print) + say("FAILURE", :color => :red, :bold => true) + end + say(line, :color => :cyan, :bold => true) + + exit(status) unless status.zero? + end end task :gemspec do ignore_extensions = 'git', 'svn', 'tmp', /sw./, 'bak', 'gem' - ignore_directories = 'pkg' - ignore_files = 'test/log' + ignore_directories = %w[ pkg ] + ignore_files = %w[ test/log ] shiteless = lambda do |list| @@ -44,8 +92,9 @@ task :gemspec do summary = object.respond_to?(:summary) ? object.summary : "summary: #{ lib } kicks the ass" description = object.respond_to?(:description) ? object.description : "description: #{ lib } kicks the ass" - extensions = This.extensions - if extensions.nil? + if This.extensions.nil? + This.extensions = [] + extensions = This.extensions %w( Makefile configure extconf.rb ).each do |ext| extensions << ext if File.exists?(ext) end @@ -75,8 +124,8 @@ task :gemspec do spec.has_rdoc = #{ has_rdoc.inspect } spec.test_files = #{ test_files.inspect } - #spec.add_dependency 'lib', '>= version' - spec.add_dependency 'fattr' + + # spec.add_dependency 'lib', '>= version' spec.extensions.push(*#{ extensions.inspect }) @@ -89,12 +138,13 @@ task :gemspec do } end - open("#{ lib }.gemspec", "w"){|fd| fd.puts template} - This.gemspec = "#{ lib }.gemspec" + Fu.mkdir_p(This.pkgdir) + This.gemspec = File.join(This.dir, "#{ This.lib }.gemspec") #File.join(This.pkgdir, "gemspec.rb") + open("#{ This.gemspec }", "w"){|fd| fd.puts(template)} end task :gem => [:clean, :gemspec] do - Fu.mkdir_p This.pkgdir + Fu.mkdir_p(This.pkgdir) before = Dir['*.gem'] cmd = "gem build #{ This.gemspec }" `#{ cmd }` @@ -160,6 +210,9 @@ task :release => [:clean, :gemspec, :gem] do cmd = "rubyforge login && rubyforge add_release #{ This.rubyforge_project } #{ This.lib } #{ This.version } #{ This.pkgdir }/#{ This.gem }" puts cmd system cmd + cmd = "gem push #{ This.pkgdir }/#{ This.gem }" + puts cmd + system cmd end @@ -167,26 +220,37 @@ end BEGIN { +# support for this rakefile +# $VERBOSE = nil require 'ostruct' require 'erb' require 'fileutils' + require 'rbconfig' +# fu shortcut +# Fu = FileUtils +# cache a bunch of stuff about this rakefile/environment +# This = OpenStruct.new This.file = File.expand_path(__FILE__) This.dir = File.dirname(This.file) This.pkgdir = File.join(This.dir, 'pkg') +# grok lib +# lib = ENV['LIB'] unless lib - lib = File.basename(Dir.pwd) + lib = File.basename(Dir.pwd).sub(/[-].*$/, '') end This.lib = lib +# grok version +# version = ENV['VERSION'] unless version require "./lib/#{ This.lib }" @@ -196,9 +260,22 @@ BEGIN { end This.version = version +# we need to know the name of the lib an it's version +# abort('no lib') unless This.lib abort('no version') unless This.version +# discover full path to this ruby executable +# + c = Config::CONFIG + bindir = c["bindir"] || c['BINDIR'] + ruby_install_name = c['ruby_install_name'] || c['RUBY_INSTALL_NAME'] || 'ruby' + ruby_ext = c['EXEEXT'] || '' + ruby = File.join(bindir, (ruby_install_name + ruby_ext)) + This.ruby = ruby + +# some utils +# module Util def indent(s, n = 2) s = unindent(s) @@ -214,24 +291,74 @@ BEGIN { end indent ? s.gsub(%r/^#{ indent }/, "") : s end - extend self end +# template support +# class Template def initialize(&block) - @block = block - @binding = @block.respond_to?(:binding) ? @block.binding : @block + @block = block.binding @template = block.call.to_s end - def expand(b=nil) - ERB.new(Util.unindent(@template)).result(b||@binding) + ERB.new(Util.unindent(@template)).result(b||@block) end - alias_method 'to_s', 'expand' end def Template(*args, &block) Template.new(*args, &block) end +# colored console output support +# + This.ansi = { + :clear => "\e[0m", + :reset => "\e[0m", + :erase_line => "\e[K", + :erase_char => "\e[P", + :bold => "\e[1m", + :dark => "\e[2m", + :underline => "\e[4m", + :underscore => "\e[4m", + :blink => "\e[5m", + :reverse => "\e[7m", + :concealed => "\e[8m", + :black => "\e[30m", + :red => "\e[31m", + :green => "\e[32m", + :yellow => "\e[33m", + :blue => "\e[34m", + :magenta => "\e[35m", + :cyan => "\e[36m", + :white => "\e[37m", + :on_black => "\e[40m", + :on_red => "\e[41m", + :on_green => "\e[42m", + :on_yellow => "\e[43m", + :on_blue => "\e[44m", + :on_magenta => "\e[45m", + :on_cyan => "\e[46m", + :on_white => "\e[47m" + } + def say(phrase, *args) + options = args.last.is_a?(Hash) ? args.pop : {} + options[:color] = args.shift.to_s.to_sym unless args.empty? + keys = options.keys + keys.each{|key| options[key.to_s.to_sym] = options.delete(key)} + + color = options[:color] + bold = options.has_key?(:bold) + + parts = [phrase] + parts.unshift(This.ansi[color]) if color + parts.unshift(This.ansi[:bold]) if bold + parts.push(This.ansi[:clear]) if parts.size > 1 + + method = options[:method] || :puts + + Kernel.send(method, parts.join) + end + +# always run out of the project dir +# Dir.chdir(This.dir) } diff --git a/lib/systemu.rb b/lib/systemu.rb index 71838f5..56ea580 100644 --- a/lib/systemu.rb +++ b/lib/systemu.rb @@ -14,7 +14,7 @@ class SystemUniversal # # constants # - SystemUniversal::VERSION = '2.1.0' unless SystemUniversal.send(:const_defined?, :VERSION) + SystemUniversal::VERSION = '2.2.0' unless SystemUniversal.send(:const_defined?, :VERSION) def SystemUniversal.version() SystemUniversal::VERSION end def version() SystemUniversal::VERSION end # diff --git a/systemu.gemspec b/systemu.gemspec deleted file mode 100644 index 2e46c0c..0000000 --- a/systemu.gemspec +++ /dev/null @@ -1,27 +0,0 @@ -## systemu.gemspec -# - -Gem::Specification::new do |spec| - spec.name = "systemu" - spec.version = "2.0.0" - spec.platform = Gem::Platform::RUBY - spec.summary = "systemu" - spec.description = "description: systemu kicks the ass" - - spec.files = ["lib", "lib/systemu.rb", "LICENSE", "Rakefile", "README", "README.erb", "samples", "samples/a.rb", "samples/b.rb", "samples/c.rb", "samples/d.rb", "samples/e.rb", "samples/f.rb", "systemu.gemspec"] - spec.executables = [] - - spec.require_path = "lib" - - spec.has_rdoc = true - spec.test_files = nil - #spec.add_dependency 'lib', '>= version' - spec.add_dependency 'fattr' - - spec.extensions.push(*[]) - - spec.rubyforge_project = "codeforpeople" - spec.author = "Ara T. Howard" - spec.email = "ara.t.howard@gmail.com" - spec.homepage = "http://github.com/ahoward/systemu/tree/master" -end |