wtnabe-shlauncher 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +4 -0
- data/README.doc +62 -0
- data/Rakefile +147 -0
- data/bin/shlauncher_test +20 -0
- data/bin/tractor +5 -0
- data/lib/tractor.rb +87 -0
- data/test/script/README +0 -0
- data/test/script/example +12 -0
- data/test/script/foo/bar +5 -0
- data/test/script/foo/baz +5 -0
- data/test/shlauncher_test.rb +59 -0
- data/test/tractor_test.rb +10 -0
- metadata +88 -0
    
        data/ChangeLog
    ADDED
    
    
    
        data/README.doc
    ADDED
    
    | @@ -0,0 +1,62 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            = Shlauncher - A shell script launcher
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Scaffold your custom launcher. Launch from your shell script ( and also Ruby script ) collection.
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            == Installation
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            === Archive Installation
         | 
| 9 | 
            +
             | 
| 10 | 
            +
             rake install
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            === Gem Installation
         | 
| 13 | 
            +
             | 
| 14 | 
            +
             gem install wtnabe-shlauncher
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            == Features/Problems
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            * scaffold launcher  ( by `tractor' command )
         | 
| 19 | 
            +
            * collect scripts in script/ directory and list up as task
         | 
| 20 | 
            +
            * exec all tasks in some scope
         | 
| 21 | 
            +
            * generate gem
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            == Synopsis
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            Scaffold your launcher.
         | 
| 26 | 
            +
             | 
| 27 | 
            +
             $ tractor LAUNCHER_NAME
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            Put your script into script/ directory and make executable.
         | 
| 30 | 
            +
             | 
| 31 | 
            +
             $ cd LAUNCHER_NAME
         | 
| 32 | 
            +
             $ ./bin/LAUNCHER_NAME
         | 
| 33 | 
            +
             $ echo '# script sample' > script/sample
         | 
| 34 | 
            +
             $ chmod a+x script/sample
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            Run your launcher.
         | 
| 37 | 
            +
             | 
| 38 | 
            +
             $ ./bin/LAUNCHER_NAME
         | 
| 39 | 
            +
             | 
| 40 | 
            +
             LAUNCHER_NAME sample  # script sample
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            Generate gem from your launcher.
         | 
| 43 | 
            +
             | 
| 44 | 
            +
             $ rake gem
         | 
| 45 | 
            +
             $ ls pkg
         | 
| 46 | 
            +
             | 
| 47 | 
            +
             LAUNCHER_NAME-0.0.1.gem 
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            == Thanks
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            `Cutagem' inspires and be helpful to this product.
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            * http://github.com/genki/cutagem/tree/master
         | 
| 54 | 
            +
            * http://cutagem.rubyforge.org/
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            Thank you, cho45 and genki !
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            == Copyright
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            Author::    wtnabe <wtnabe@gmail.com>
         | 
| 61 | 
            +
            Copyright:: Copyright (c) 2009 wtnabe
         | 
| 62 | 
            +
            License::   Two-claused BSD
         | 
    
        data/Rakefile
    ADDED
    
    | @@ -0,0 +1,147 @@ | |
| 1 | 
            +
            # -*- mode: ruby -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'rubygems'
         | 
| 4 | 
            +
            require 'rake'
         | 
| 5 | 
            +
            require 'rake/clean'
         | 
| 6 | 
            +
            require 'rake/testtask'
         | 
| 7 | 
            +
            require 'rake/packagetask'
         | 
| 8 | 
            +
            require 'rake/gempackagetask'
         | 
| 9 | 
            +
            require 'rake/rdoctask'
         | 
| 10 | 
            +
            require 'rake/contrib/rubyforgepublisher'
         | 
| 11 | 
            +
            require 'rake/contrib/sshpublisher'
         | 
| 12 | 
            +
            require 'fileutils'
         | 
| 13 | 
            +
            require 'lib/tractor'
         | 
| 14 | 
            +
            require 'template/lib/shlauncher'
         | 
| 15 | 
            +
            include FileUtils
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            NAME              = "shlauncher"
         | 
| 18 | 
            +
            AUTHOR            = "wtnabe"
         | 
| 19 | 
            +
            EMAIL             = "wtnabe@gmail.com"
         | 
| 20 | 
            +
            DESCRIPTION       = "A shell script launcher"
         | 
| 21 | 
            +
            RUBYFORGE_PROJECT = ""
         | 
| 22 | 
            +
            HOMEPATH          = ""
         | 
| 23 | 
            +
            BIN_FILES         = %w( tractor )
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            VERS              = Shlauncher_Tractor::VERSION
         | 
| 26 | 
            +
            REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
         | 
| 27 | 
            +
            CLEAN.include ['**/.*.sw?', '*.gem', '.config']
         | 
| 28 | 
            +
            RDOC_OPTS = [
         | 
| 29 | 
            +
            	'--title', "#{NAME} documentation",
         | 
| 30 | 
            +
            	"--charset", "utf-8",
         | 
| 31 | 
            +
            	"--opname", "index.html",
         | 
| 32 | 
            +
            	"--line-numbers",
         | 
| 33 | 
            +
            	"--main", "README.doc",
         | 
| 34 | 
            +
            	"--inline-source",
         | 
| 35 | 
            +
            ]
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            task :default => [:test]
         | 
| 38 | 
            +
            task :package => [:clean]
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            Rake::TestTask.new("test") do |t|
         | 
| 41 | 
            +
            	t.libs   << "test"
         | 
| 42 | 
            +
            	t.pattern = "test/**/*_test.rb"
         | 
| 43 | 
            +
            	t.verbose = true
         | 
| 44 | 
            +
            end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            spec = Gem::Specification.new do |s|
         | 
| 47 | 
            +
            	s.name              = NAME
         | 
| 48 | 
            +
            	s.version           = VERS
         | 
| 49 | 
            +
            	s.platform          = Gem::Platform::RUBY
         | 
| 50 | 
            +
            	s.has_rdoc          = true
         | 
| 51 | 
            +
            	s.extra_rdoc_files  = ["README.doc", "ChangeLog"]
         | 
| 52 | 
            +
            	s.rdoc_options     += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
         | 
| 53 | 
            +
            	s.summary           = "Scaffold your custom launcher. Launch from your shell script ( and also Ruby script ) collection."
         | 
| 54 | 
            +
            	s.description       = DESCRIPTION
         | 
| 55 | 
            +
            	s.author            = AUTHOR
         | 
| 56 | 
            +
            	s.email             = EMAIL
         | 
| 57 | 
            +
            	s.homepage          = HOMEPATH
         | 
| 58 | 
            +
            	s.executables       = BIN_FILES
         | 
| 59 | 
            +
            	s.rubyforge_project = RUBYFORGE_PROJECT
         | 
| 60 | 
            +
            	s.bindir            = "bin"
         | 
| 61 | 
            +
            	s.require_path      = "lib"
         | 
| 62 | 
            +
            	#s.autorequire       = ""
         | 
| 63 | 
            +
            	s.test_files        = Dir["test/*_test.rb"]
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            	s.add_dependency('rake', '>= 0')
         | 
| 66 | 
            +
            	#s.required_ruby_version = '>= 1.8.2'
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            	s.files = %w(README.doc ChangeLog Rakefile) +
         | 
| 69 | 
            +
            		Dir.glob("{bin,doc,test,lib,templates,generator,extras,website,script}/**/*") + 
         | 
| 70 | 
            +
            		Dir.glob("ext/**/*.{h,c,rb}") +
         | 
| 71 | 
            +
            		Dir.glob("examples/**/*.rb") +
         | 
| 72 | 
            +
            		Dir.glob("tools/*.rb") +
         | 
| 73 | 
            +
            		Dir.glob("rails/*.rb")
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            	s.extensions = FileList["ext/**/extconf.rb"].to_a
         | 
| 76 | 
            +
            end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            Rake::GemPackageTask.new(spec) do |p|
         | 
| 79 | 
            +
            	p.need_tar = true
         | 
| 80 | 
            +
            	p.gem_spec = spec
         | 
| 81 | 
            +
            end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            task :install do
         | 
| 84 | 
            +
            	name = "#{NAME}-#{VERS}.gem"
         | 
| 85 | 
            +
            	sh %{rake package}
         | 
| 86 | 
            +
            	sh %{sudo gem install pkg/#{name}}
         | 
| 87 | 
            +
            end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            task :uninstall => [:clean] do
         | 
| 90 | 
            +
            	sh %{sudo gem uninstall #{NAME}}
         | 
| 91 | 
            +
            end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
             | 
| 94 | 
            +
            Rake::RDocTask.new do |rdoc|
         | 
| 95 | 
            +
            	rdoc.rdoc_dir = 'html'
         | 
| 96 | 
            +
            	rdoc.options += RDOC_OPTS
         | 
| 97 | 
            +
            	rdoc.template = "resh"
         | 
| 98 | 
            +
            	#rdoc.template = "#{ENV['template']}.rb" if ENV['template']
         | 
| 99 | 
            +
            	if ENV['DOC_FILES']
         | 
| 100 | 
            +
            		rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
         | 
| 101 | 
            +
            	else
         | 
| 102 | 
            +
            		rdoc.rdoc_files.include('README.doc', 'ChangeLog')
         | 
| 103 | 
            +
            		rdoc.rdoc_files.include('lib/**/*.rb')
         | 
| 104 | 
            +
            		rdoc.rdoc_files.include('ext/**/*.c')
         | 
| 105 | 
            +
            	end
         | 
| 106 | 
            +
            end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            desc "Publish to RubyForge"
         | 
| 109 | 
            +
            task :rubyforge => [:rdoc, :package] do
         | 
| 110 | 
            +
            	require 'rubyforge'
         | 
| 111 | 
            +
            	Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'watanabe').upload
         | 
| 112 | 
            +
            end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            desc 'Package and upload the release to rubyforge.'
         | 
| 115 | 
            +
            task :release => [:clean, :package] do |t|
         | 
| 116 | 
            +
            	v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
         | 
| 117 | 
            +
            	abort "Versions don't match #{v} vs #{VERS}" unless v == VERS
         | 
| 118 | 
            +
            	pkg = "pkg/#{NAME}-#{VERS}"
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            	require 'rubyforge'
         | 
| 121 | 
            +
            	rf = RubyForge.new.configure
         | 
| 122 | 
            +
            	puts "Logging in"
         | 
| 123 | 
            +
            	rf.login
         | 
| 124 | 
            +
             | 
| 125 | 
            +
            	c = rf.userconfig
         | 
| 126 | 
            +
            #	c["release_notes"] = description if description
         | 
| 127 | 
            +
            #	c["release_changes"] = changes if changes
         | 
| 128 | 
            +
            	c["preformatted"] = true
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            	files = [
         | 
| 131 | 
            +
            		"#{pkg}.tgz",
         | 
| 132 | 
            +
            		"#{pkg}.gem"
         | 
| 133 | 
            +
            	].compact
         | 
| 134 | 
            +
             | 
| 135 | 
            +
            	puts "Releasing #{NAME} v. #{VERS}"
         | 
| 136 | 
            +
            	rf.add_release RUBYFORGE_PROJECT, NAME, VERS, *files
         | 
| 137 | 
            +
            end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
            desc 'Show information about the gem.'
         | 
| 140 | 
            +
            task :debug_gem do
         | 
| 141 | 
            +
            	puts spec.to_ruby
         | 
| 142 | 
            +
            end
         | 
| 143 | 
            +
             | 
| 144 | 
            +
            desc 'Update gem spec'
         | 
| 145 | 
            +
            task :gemspec do
         | 
| 146 | 
            +
              open("#{NAME}.gemspec", 'w').write spec.to_ruby
         | 
| 147 | 
            +
            end
         | 
    
        data/bin/shlauncher_test
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            #! /usr/bin/env rake -f
         | 
| 2 | 
            +
            # -*- mode: ruby; coding: utf-8 -*-
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require File.dirname( __FILE__ ) + '/../template/lib/shlauncher'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            launcher = Shlauncher.new( File.dirname( __FILE__ ) + '/../test/script' )
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            launcher.tasks.each { |t|
         | 
| 9 | 
            +
              desc launcher.desc( t )
         | 
| 10 | 
            +
              task t do
         | 
| 11 | 
            +
                launcher.launch( t )
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            task :default do
         | 
| 16 | 
            +
              app = Rake.application
         | 
| 17 | 
            +
              app.name = File.basename( __FILE__ )
         | 
| 18 | 
            +
              app.options.show_task_pattern = Regexp.new('')
         | 
| 19 | 
            +
              app.display_tasks_and_comments
         | 
| 20 | 
            +
            end
         | 
    
        data/bin/tractor
    ADDED
    
    
    
        data/lib/tractor.rb
    ADDED
    
    | @@ -0,0 +1,87 @@ | |
| 1 | 
            +
            # -*- mode: ruby; coding: utf-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'optparse'
         | 
| 4 | 
            +
            require 'fileutils'
         | 
| 5 | 
            +
            require 'erb'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class Shlauncher_Tractor
         | 
| 8 | 
            +
              VERSION = "0.0.1"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              include FileUtils::Verbose
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def initialize( argv )
         | 
| 13 | 
            +
                @argv        = argv
         | 
| 14 | 
            +
                @launcher    = nil
         | 
| 15 | 
            +
                @email       = nil
         | 
| 16 | 
            +
                @author      = nil
         | 
| 17 | 
            +
                @description = nil
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
              attr_reader :launcher, :email, :author, :description
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def run
         | 
| 22 | 
            +
                @launcher = parse_args
         | 
| 23 | 
            +
                if ( File.exist?( launcher_dir ) )
         | 
| 24 | 
            +
                  puts "'#{launcher}' directory already existed."
         | 
| 25 | 
            +
                else
         | 
| 26 | 
            +
                  deploy_template
         | 
| 27 | 
            +
                  rewrite_template
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def launcher_dir
         | 
| 32 | 
            +
                return File.join( Dir.pwd, launcher )
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              def deploy_template
         | 
| 36 | 
            +
                cp_r( File.expand_path( File.dirname( __FILE__ ) + '/../template/' ),
         | 
| 37 | 
            +
                      launcher_dir )
         | 
| 38 | 
            +
                Dir.chdir( launcher_dir ) {
         | 
| 39 | 
            +
                  mkdir( 'script' )
         | 
| 40 | 
            +
                  mv( 'bin/shlauncher', "bin/#{launcher}" )
         | 
| 41 | 
            +
                }
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              def rewrite_template
         | 
| 45 | 
            +
                Dir.chdir( launcher_dir ) {
         | 
| 46 | 
            +
                  %w( Rakefile Changelog README ).each { |file|
         | 
| 47 | 
            +
                    open( file, 'r+' ) { |f|
         | 
| 48 | 
            +
                      erb = ERB.new( f.read )
         | 
| 49 | 
            +
                      f.rewind
         | 
| 50 | 
            +
                      f.truncate( 0 )
         | 
| 51 | 
            +
                      f.puts erb.result( binding )
         | 
| 52 | 
            +
                    }
         | 
| 53 | 
            +
                    puts "rewrited #{file}"
         | 
| 54 | 
            +
                  }
         | 
| 55 | 
            +
                }
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
              def parse_args
         | 
| 59 | 
            +
                app = File.basename( $0 )
         | 
| 60 | 
            +
                opt = OptionParser.new { |parser|
         | 
| 61 | 
            +
                  parser.version = VERSION
         | 
| 62 | 
            +
                  parser.banner  =<<EOD
         | 
| 63 | 
            +
            #{app} #{VERSION}
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            Usage: #{app} LAUNCHER_NAME
         | 
| 66 | 
            +
            EOD
         | 
| 67 | 
            +
                  parser.on( '-e', '--email ADDR' ) { |email|
         | 
| 68 | 
            +
                    @email = email
         | 
| 69 | 
            +
                  }
         | 
| 70 | 
            +
                  parser.on( '-a', '--author NAME' ) { |author|
         | 
| 71 | 
            +
                    @author = author
         | 
| 72 | 
            +
                  }
         | 
| 73 | 
            +
                  parser.on( '-d', '--description DESC' ) { |desc|
         | 
| 74 | 
            +
                    @description = desc
         | 
| 75 | 
            +
                  }
         | 
| 76 | 
            +
                }
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                rest_args = opt.parse!( @argv )
         | 
| 79 | 
            +
                if ( rest_args.size > 0 )
         | 
| 80 | 
            +
                  return rest_args.first
         | 
| 81 | 
            +
                else
         | 
| 82 | 
            +
                  puts opt.help
         | 
| 83 | 
            +
                  exit
         | 
| 84 | 
            +
                end
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            end
         | 
    
        data/test/script/README
    ADDED
    
    | 
            File without changes
         | 
    
        data/test/script/example
    ADDED
    
    
    
        data/test/script/foo/bar
    ADDED
    
    
    
        data/test/script/foo/baz
    ADDED
    
    
| @@ -0,0 +1,59 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "test/unit"
         | 
| 4 | 
            +
            require File.dirname(__FILE__) + '/../template/lib/shlauncher'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class ShlauncherTest < Test::Unit::TestCase
         | 
| 7 | 
            +
              def setup
         | 
| 8 | 
            +
                @obj = Shlauncher.new( File.dirname( __FILE__ ) + '/script' )
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def test_tasks
         | 
| 12 | 
            +
                assert( @obj.tasks == %w( example foo foo:bar foo:baz ) )
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def test_commands_ignored
         | 
| 16 | 
            +
                assert( %w( example~ example.bak ) )
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def test_desc
         | 
| 20 | 
            +
                assert( @obj.desc( 'example' ) == 'just example, Usage: example' )
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              def test_command_path
         | 
| 24 | 
            +
                assert( @obj.command_path( 'abc' ) == 'abc' )
         | 
| 25 | 
            +
                assert( @obj.command_path( 'foo:bar' ) == 'foo/bar' )
         | 
| 26 | 
            +
                assert( @obj.command_path( 'foo/bar' ) == 'foo/bar' )
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def test_task
         | 
| 30 | 
            +
                assert( @obj.task( 'abc' ) == 'abc' )
         | 
| 31 | 
            +
                assert( @obj.task( 'foo/bar' ) == 'foo:bar' )
         | 
| 32 | 
            +
                assert( @obj.task( 'foo//bar' ) == 'foo::bar' )
         | 
| 33 | 
            +
                assert( @obj.task( 'foo:bar' ) == 'foo:bar' )
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def test_script_path
         | 
| 37 | 
            +
                assert( @obj.script_path == File.expand_path( File.dirname( __FILE__ ) ) + '/script' )
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              def test_shebang_or_localvar_line?
         | 
| 41 | 
            +
                assert( @obj.shebang_or_localvar_line?( '#! /bin/sh' ) )
         | 
| 42 | 
            +
                assert( @obj.shebang_or_localvar_line?( '# -*- mode: ruby -*-' ) )
         | 
| 43 | 
            +
                assert( @obj.shebang_or_localvar_line?( '# -*- coding: utf-8 -*-' ) )
         | 
| 44 | 
            +
                assert( !@obj.shebang_or_localvar_line?( 'abc' ) )
         | 
| 45 | 
            +
                assert( !@obj.shebang_or_localvar_line?( '# regular comment' ) )
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              def test_empty_line?
         | 
| 49 | 
            +
                assert( @obj.empty_line?( '' ) )
         | 
| 50 | 
            +
                assert( @obj.empty_line?( ' ' ) )
         | 
| 51 | 
            +
                assert( !@obj.empty_line?( '#' ) )
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              def test_not_comment_line?
         | 
| 55 | 
            +
                assert( @obj.not_comment_line?( 'abc' ) )
         | 
| 56 | 
            +
                assert( !@obj.not_comment_line?( '  #  ' ) )
         | 
| 57 | 
            +
                assert( !@obj.not_comment_line?( '#   ' ) )
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,88 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: wtnabe-shlauncher
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors: 
         | 
| 7 | 
            +
            - wtnabe
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            date: 2009-08-27 00:00:00 -07:00
         | 
| 13 | 
            +
            default_executable: tractor
         | 
| 14 | 
            +
            dependencies: 
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 16 | 
            +
              name: rake
         | 
| 17 | 
            +
              type: :runtime
         | 
| 18 | 
            +
              version_requirement: 
         | 
| 19 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 20 | 
            +
                requirements: 
         | 
| 21 | 
            +
                - - ">="
         | 
| 22 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 23 | 
            +
                    version: "0"
         | 
| 24 | 
            +
                version: 
         | 
| 25 | 
            +
            description: A shell script launcher
         | 
| 26 | 
            +
            email: wtnabe@gmail.com
         | 
| 27 | 
            +
            executables: 
         | 
| 28 | 
            +
            - tractor
         | 
| 29 | 
            +
            extensions: []
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            extra_rdoc_files: 
         | 
| 32 | 
            +
            - README.doc
         | 
| 33 | 
            +
            - ChangeLog
         | 
| 34 | 
            +
            files: 
         | 
| 35 | 
            +
            - README.doc
         | 
| 36 | 
            +
            - ChangeLog
         | 
| 37 | 
            +
            - Rakefile
         | 
| 38 | 
            +
            - bin/shlauncher_test
         | 
| 39 | 
            +
            - bin/tractor
         | 
| 40 | 
            +
            - test/script
         | 
| 41 | 
            +
            - test/script/example
         | 
| 42 | 
            +
            - test/script/foo
         | 
| 43 | 
            +
            - test/script/foo/bar
         | 
| 44 | 
            +
            - test/script/foo/baz
         | 
| 45 | 
            +
            - test/script/README
         | 
| 46 | 
            +
            - test/shlauncher_test.rb
         | 
| 47 | 
            +
            - test/tractor_test.rb
         | 
| 48 | 
            +
            - lib/tractor.rb
         | 
| 49 | 
            +
            has_rdoc: false
         | 
| 50 | 
            +
            homepage: ""
         | 
| 51 | 
            +
            post_install_message: 
         | 
| 52 | 
            +
            rdoc_options: 
         | 
| 53 | 
            +
            - --title
         | 
| 54 | 
            +
            - shlauncher documentation
         | 
| 55 | 
            +
            - --charset
         | 
| 56 | 
            +
            - utf-8
         | 
| 57 | 
            +
            - --opname
         | 
| 58 | 
            +
            - index.html
         | 
| 59 | 
            +
            - --line-numbers
         | 
| 60 | 
            +
            - --main
         | 
| 61 | 
            +
            - README.doc
         | 
| 62 | 
            +
            - --inline-source
         | 
| 63 | 
            +
            - --exclude
         | 
| 64 | 
            +
            - ^(examples|extras)/
         | 
| 65 | 
            +
            require_paths: 
         | 
| 66 | 
            +
            - lib
         | 
| 67 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 68 | 
            +
              requirements: 
         | 
| 69 | 
            +
              - - ">="
         | 
| 70 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 71 | 
            +
                  version: "0"
         | 
| 72 | 
            +
              version: 
         | 
| 73 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 74 | 
            +
              requirements: 
         | 
| 75 | 
            +
              - - ">="
         | 
| 76 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 77 | 
            +
                  version: "0"
         | 
| 78 | 
            +
              version: 
         | 
| 79 | 
            +
            requirements: []
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            rubyforge_project: ""
         | 
| 82 | 
            +
            rubygems_version: 1.2.0
         | 
| 83 | 
            +
            signing_key: 
         | 
| 84 | 
            +
            specification_version: 3
         | 
| 85 | 
            +
            summary: Scaffold your custom launcher. Launch from your shell script ( and also Ruby script ) collection.
         | 
| 86 | 
            +
            test_files: 
         | 
| 87 | 
            +
            - test/shlauncher_test.rb
         | 
| 88 | 
            +
            - test/tractor_test.rb
         |