necktie 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +174 -0
- data/bin/necktie +2 -1
- data/lib/necktie/files.rb +29 -0
- data/lib/necktie/rake.rb +127 -0
- data/lib/necktie/services.rb +11 -7
- data/lib/necktie.rb +4 -54
- data/necktie.gemspec +3 -3
- data/vendor/rake/CHANGES +477 -0
- data/vendor/rake/MIT-LICENSE +21 -0
- data/vendor/rake/README.rdoc +194 -0
- data/vendor/rake/Rakefile +421 -0
- data/vendor/rake/TODO +20 -0
- data/vendor/rake/bin/rake +31 -0
- data/vendor/rake/doc/command_line_usage.rdoc +102 -0
- data/vendor/rake/doc/example/Rakefile1 +38 -0
- data/vendor/rake/doc/example/Rakefile2 +35 -0
- data/vendor/rake/doc/example/a.c +6 -0
- data/vendor/rake/doc/example/b.c +6 -0
- data/vendor/rake/doc/example/main.c +11 -0
- data/vendor/rake/doc/glossary.rdoc +51 -0
- data/vendor/rake/doc/jamis.rb +591 -0
- data/vendor/rake/doc/proto_rake.rdoc +127 -0
- data/vendor/rake/doc/rake.1.gz +0 -0
- data/vendor/rake/doc/rakefile.rdoc +566 -0
- data/vendor/rake/doc/rational.rdoc +151 -0
- data/vendor/rake/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/vendor/rake/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/vendor/rake/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/vendor/rake/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/vendor/rake/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/vendor/rake/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/vendor/rake/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/vendor/rake/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/vendor/rake/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/vendor/rake/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/vendor/rake/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/vendor/rake/doc/release_notes/rake-0.8.2.rdoc +165 -0
- data/vendor/rake/doc/release_notes/rake-0.8.3.rdoc +112 -0
- data/vendor/rake/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/vendor/rake/doc/release_notes/rake-0.8.5.rdoc +53 -0
- data/vendor/rake/doc/release_notes/rake-0.8.6.rdoc +55 -0
- data/vendor/rake/doc/release_notes/rake-0.8.7.rdoc +55 -0
- data/vendor/rake/install.rb +88 -0
- data/vendor/rake/lib/rake/alt_system.rb +108 -0
- data/vendor/rake/lib/rake/application.rb +579 -0
- data/vendor/rake/lib/rake/classic_namespace.rb +9 -0
- data/vendor/rake/lib/rake/clean.rb +35 -0
- data/vendor/rake/lib/rake/cloneable.rb +25 -0
- data/vendor/rake/lib/rake/contrib/compositepublisher.rb +24 -0
- data/vendor/rake/lib/rake/contrib/ftptools.rb +153 -0
- data/vendor/rake/lib/rake/contrib/publisher.rb +75 -0
- data/vendor/rake/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/vendor/rake/lib/rake/contrib/sshpublisher.rb +47 -0
- data/vendor/rake/lib/rake/contrib/sys.rb +209 -0
- data/vendor/rake/lib/rake/default_loader.rb +10 -0
- data/vendor/rake/lib/rake/dsl.rb +136 -0
- data/vendor/rake/lib/rake/early_time.rb +18 -0
- data/vendor/rake/lib/rake/environment.rb +40 -0
- data/vendor/rake/lib/rake/ext/module.rb +60 -0
- data/vendor/rake/lib/rake/ext/string.rb +165 -0
- data/vendor/rake/lib/rake/ext/time.rb +14 -0
- data/vendor/rake/lib/rake/file_creation_task.rb +24 -0
- data/vendor/rake/lib/rake/file_list.rb +395 -0
- data/vendor/rake/lib/rake/file_task.rb +47 -0
- data/vendor/rake/lib/rake/file_utils.rb +108 -0
- data/vendor/rake/lib/rake/gempackagetask.rb +97 -0
- data/vendor/rake/lib/rake/invocation_chain.rb +51 -0
- data/vendor/rake/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/rake/lib/rake/lib/project.rake +24 -0
- data/vendor/rake/lib/rake/loaders/makefile.rb +44 -0
- data/vendor/rake/lib/rake/multi_task.rb +16 -0
- data/vendor/rake/lib/rake/name_space.rb +25 -0
- data/vendor/rake/lib/rake/packagetask.rb +184 -0
- data/vendor/rake/lib/rake/psuedo_status.rb +24 -0
- data/vendor/rake/lib/rake/rake_file_utils.rb +133 -0
- data/vendor/rake/lib/rake/rake_module.rb +25 -0
- data/vendor/rake/lib/rake/rake_test_loader.rb +15 -0
- data/vendor/rake/lib/rake/rdoctask.rb +209 -0
- data/vendor/rake/lib/rake/ruby182_test_unit_fix.rb +25 -0
- data/vendor/rake/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/rake/lib/rake/runtest.rb +23 -0
- data/vendor/rake/lib/rake/task.rb +318 -0
- data/vendor/rake/lib/rake/task_argument_error.rb +7 -0
- data/vendor/rake/lib/rake/task_arguments.rb +78 -0
- data/vendor/rake/lib/rake/task_manager.rb +328 -0
- data/vendor/rake/lib/rake/tasklib.rb +24 -0
- data/vendor/rake/lib/rake/testtask.rb +175 -0
- data/vendor/rake/lib/rake/win32.rb +55 -0
- data/vendor/rake/lib/rake.rb +72 -0
- data/vendor/rake/rake.blurb +19 -0
- data/vendor/rake/rake.gemspec +214 -0
- data/vendor/rake/rakelib/extra.rake +8 -0
- data/vendor/rake/rakelib/publish.rake +22 -0
- data/vendor/rake/rakelib/rbx.rake +82 -0
- data/vendor/rake/rakelib/ruby19.rake +88 -0
- data/vendor/rake/rakelib/tags.rake +18 -0
- data/vendor/rake/test/capture_stdout.rb +26 -0
- data/vendor/rake/test/check_expansion.rb +5 -0
- data/vendor/rake/test/check_no_expansion.rb +5 -0
- data/vendor/rake/test/contrib/test_sys.rb +47 -0
- data/vendor/rake/test/data/chains/Rakefile +15 -0
- data/vendor/rake/test/data/comments/Rakefile +18 -0
- data/vendor/rake/test/data/default/Rakefile +19 -0
- data/vendor/rake/test/data/dryrun/Rakefile +22 -0
- data/vendor/rake/test/data/file_creation_task/Rakefile +33 -0
- data/vendor/rake/test/data/imports/Rakefile +19 -0
- data/vendor/rake/test/data/imports/deps.mf +1 -0
- data/vendor/rake/test/data/multidesc/Rakefile +17 -0
- data/vendor/rake/test/data/namespace/Rakefile +66 -0
- data/vendor/rake/test/data/nosearch/dummy +1 -0
- data/vendor/rake/test/data/rakelib/test1.rb +5 -0
- data/vendor/rake/test/data/rakelib/test2.rake +3 -0
- data/vendor/rake/test/data/rbext/rakefile.rb +3 -0
- data/vendor/rake/test/data/sample.mf +14 -0
- data/vendor/rake/test/data/statusreturn/Rakefile +8 -0
- data/vendor/rake/test/data/sys/sys1.rake +3 -0
- data/vendor/rake/test/data/unittest/Rakefile +1 -0
- data/vendor/rake/test/data/unittest/subdir/README +0 -0
- data/vendor/rake/test/data/verbose/Rakefile +34 -0
- data/vendor/rake/test/filecreation.rb +32 -0
- data/vendor/rake/test/functional/functional_test.rb +15 -0
- data/vendor/rake/test/functional/session_based_tests.rb +442 -0
- data/vendor/rake/test/in_environment.rb +32 -0
- data/vendor/rake/test/lib/application_test.rb +769 -0
- data/vendor/rake/test/lib/clean_test.rb +15 -0
- data/vendor/rake/test/lib/definitions_test.rb +85 -0
- data/vendor/rake/test/lib/dsl_test.rb +41 -0
- data/vendor/rake/test/lib/earlytime_test.rb +35 -0
- data/vendor/rake/test/lib/environment_test.rb +18 -0
- data/vendor/rake/test/lib/extension_test.rb +63 -0
- data/vendor/rake/test/lib/file_creation_task_test.rb +62 -0
- data/vendor/rake/test/lib/file_task_test.rb +143 -0
- data/vendor/rake/test/lib/filelist_test.rb +623 -0
- data/vendor/rake/test/lib/fileutils_test.rb +251 -0
- data/vendor/rake/test/lib/ftp_test.rb +59 -0
- data/vendor/rake/test/lib/invocation_chain_test.rb +81 -0
- data/vendor/rake/test/lib/makefile_loader_test.rb +26 -0
- data/vendor/rake/test/lib/multitask_test.rb +53 -0
- data/vendor/rake/test/lib/namespace_test.rb +55 -0
- data/vendor/rake/test/lib/package_task_test.rb +118 -0
- data/vendor/rake/test/lib/pathmap_test.rb +210 -0
- data/vendor/rake/test/lib/pseudo_status_test.rb +26 -0
- data/vendor/rake/test/lib/rake_test.rb +41 -0
- data/vendor/rake/test/lib/rdoc_task_test.rb +88 -0
- data/vendor/rake/test/lib/require_test.rb +35 -0
- data/vendor/rake/test/lib/rules_test.rb +349 -0
- data/vendor/rake/test/lib/task_arguments_test.rb +89 -0
- data/vendor/rake/test/lib/task_manager_test.rb +173 -0
- data/vendor/rake/test/lib/task_test.rb +376 -0
- data/vendor/rake/test/lib/tasklib_test.rb +12 -0
- data/vendor/rake/test/lib/test_task_test.rb +77 -0
- data/vendor/rake/test/lib/testtask_test.rb +49 -0
- data/vendor/rake/test/lib/top_level_functions_test.rb +86 -0
- data/vendor/rake/test/lib/win32_test.rb +72 -0
- data/vendor/rake/test/rake_test_setup.rb +24 -0
- data/vendor/rake/test/reqfile.rb +3 -0
- data/vendor/rake/test/reqfile2.rb +3 -0
- data/vendor/rake/test/reqfile3.rake +3 -0
- data/vendor/rake/test/shellcommand.rb +3 -0
- data/vendor/rake/test/test_helper.rb +13 -0
- metadata +212 -56
- /data/{rush → vendor/rush}/README.rdoc +0 -0
- /data/{rush → vendor/rush}/Rakefile +0 -0
- /data/{rush → vendor/rush}/VERSION +0 -0
- /data/{rush → vendor/rush}/bin/rush +0 -0
- /data/{rush → vendor/rush}/bin/rushd +0 -0
- /data/{rush → vendor/rush}/lib/rush/access.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/array_ext.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/box.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/commands.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/config.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/dir.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/embeddable_shell.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/entry.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/exceptions.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/file.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/find_by.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/fixnum_ext.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/head_tail.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/local.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/process.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/process_set.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/remote.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/search_results.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/server.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/shell.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/ssh_tunnel.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush/string_ext.rb +0 -0
- /data/{rush → vendor/rush}/lib/rush.rb +0 -0
- /data/{rush → vendor/rush}/rush.gemspec +0 -0
- /data/{rush → vendor/rush}/spec/access_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/array_ext_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/base.rb +0 -0
- /data/{rush → vendor/rush}/spec/box_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/commands_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/config_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/dir_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/embeddable_shell_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/entry_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/file_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/find_by_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/fixnum_ext_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/local_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/process_set_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/process_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/remote_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/rush_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/search_results_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/shell_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/ssh_tunnel_spec.rb +0 -0
- /data/{rush → vendor/rush}/spec/string_ext_spec.rb +0 -0
- /data/{session → vendor/session}/lib/session-2.4.0.rb +0 -0
- /data/{session → vendor/session}/lib/session.rb +0 -0
- /data/{session → vendor/session}/test/session.rb +0 -0
@@ -0,0 +1,108 @@
|
|
1
|
+
# ###########################################################################
|
2
|
+
# This a FileUtils extension that defines several additional commands to be
|
3
|
+
# added to the FileUtils utility functions.
|
4
|
+
#
|
5
|
+
module FileUtils
|
6
|
+
RUBY = File.join(
|
7
|
+
Config::CONFIG['bindir'],
|
8
|
+
Config::CONFIG['ruby_install_name'] + Config::CONFIG['EXEEXT']).
|
9
|
+
sub(/.*\s.*/m, '"\&"')
|
10
|
+
|
11
|
+
OPT_TABLE['sh'] = %w(noop verbose)
|
12
|
+
OPT_TABLE['ruby'] = %w(noop verbose)
|
13
|
+
|
14
|
+
# Run the system command +cmd+. If multiple arguments are given the command
|
15
|
+
# is not run with the shell (same semantics as Kernel::exec and
|
16
|
+
# Kernel::system).
|
17
|
+
#
|
18
|
+
# Example:
|
19
|
+
# sh %{ls -ltr}
|
20
|
+
#
|
21
|
+
# sh 'ls', 'file with spaces'
|
22
|
+
#
|
23
|
+
# # check exit status after command runs
|
24
|
+
# sh %{grep pattern file} do |ok, res|
|
25
|
+
# if ! ok
|
26
|
+
# puts "pattern not found (status = #{res.exitstatus})"
|
27
|
+
# end
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
def sh(*cmd, &block)
|
31
|
+
options = (Hash === cmd.last) ? cmd.pop : {}
|
32
|
+
shell_runner = block_given? ? block : create_shell_runner(cmd)
|
33
|
+
set_verbose_option(options)
|
34
|
+
options[:noop] ||= RakeFileUtils.nowrite_flag
|
35
|
+
rake_check_options options, :noop, :verbose
|
36
|
+
rake_output_message cmd.join(" ") if options[:verbose]
|
37
|
+
unless options[:noop]
|
38
|
+
res = rake_system(*cmd)
|
39
|
+
status = $?
|
40
|
+
status = PseudoStatus.new(1) if !res && status.nil?
|
41
|
+
shell_runner.call(res, status)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def create_shell_runner(cmd)
|
46
|
+
show_command = cmd.join(" ")
|
47
|
+
show_command = show_command[0,42] + "..." unless $trace
|
48
|
+
block = lambda { |ok, status|
|
49
|
+
ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]"
|
50
|
+
}
|
51
|
+
end
|
52
|
+
private :create_shell_runner
|
53
|
+
|
54
|
+
def set_verbose_option(options)
|
55
|
+
if options[:verbose].nil?
|
56
|
+
options[:verbose] = RakeFileUtils.verbose_flag.nil? || RakeFileUtils.verbose_flag
|
57
|
+
end
|
58
|
+
end
|
59
|
+
private :set_verbose_option
|
60
|
+
|
61
|
+
def rake_system(*cmd)
|
62
|
+
Rake::AltSystem.system(*cmd)
|
63
|
+
end
|
64
|
+
private :rake_system
|
65
|
+
|
66
|
+
# Run a Ruby interpreter with the given arguments.
|
67
|
+
#
|
68
|
+
# Example:
|
69
|
+
# ruby %{-pe '$_.upcase!' <README}
|
70
|
+
#
|
71
|
+
def ruby(*args,&block)
|
72
|
+
options = (Hash === args.last) ? args.pop : {}
|
73
|
+
if args.length > 1 then
|
74
|
+
sh(*([RUBY] + args + [options]), &block)
|
75
|
+
else
|
76
|
+
sh("#{RUBY} #{args.first}", options, &block)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
LN_SUPPORTED = [true]
|
81
|
+
|
82
|
+
# Attempt to do a normal file link, but fall back to a copy if the link
|
83
|
+
# fails.
|
84
|
+
def safe_ln(*args)
|
85
|
+
unless LN_SUPPORTED[0]
|
86
|
+
cp(*args)
|
87
|
+
else
|
88
|
+
begin
|
89
|
+
ln(*args)
|
90
|
+
rescue StandardError, NotImplementedError => ex
|
91
|
+
LN_SUPPORTED[0] = false
|
92
|
+
cp(*args)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# Split a file path into individual directory names.
|
98
|
+
#
|
99
|
+
# Example:
|
100
|
+
# split_all("a/b/c") => ['a', 'b', 'c']
|
101
|
+
#
|
102
|
+
def split_all(path)
|
103
|
+
head, tail = File.split(path)
|
104
|
+
return [tail] if head == '.' || tail == '/'
|
105
|
+
return [head, tail] if head == '/'
|
106
|
+
return split_all(head) + [tail]
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Define a package task library to aid in the definition of GEM
|
4
|
+
# packages.
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'rake'
|
8
|
+
require 'rake/packagetask'
|
9
|
+
require 'rubygems/user_interaction'
|
10
|
+
require 'rubygems/builder'
|
11
|
+
|
12
|
+
module Rake
|
13
|
+
|
14
|
+
# Create a package based upon a Gem spec. Gem packages, as well as
|
15
|
+
# zip files and tar/gzipped packages can be produced by this task.
|
16
|
+
#
|
17
|
+
# In addition to the Rake targets generated by PackageTask, a
|
18
|
+
# GemPackageTask will also generate the following tasks:
|
19
|
+
#
|
20
|
+
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.gem"</b>]
|
21
|
+
# Create a Ruby GEM package with the given name and version.
|
22
|
+
#
|
23
|
+
# Example using a Ruby GEM spec:
|
24
|
+
#
|
25
|
+
# require 'rubygems'
|
26
|
+
#
|
27
|
+
# spec = Gem::Specification.new do |s|
|
28
|
+
# s.platform = Gem::Platform::RUBY
|
29
|
+
# s.summary = "Ruby based make-like utility."
|
30
|
+
# s.name = 'rake'
|
31
|
+
# s.version = PKG_VERSION
|
32
|
+
# s.requirements << 'none'
|
33
|
+
# s.require_path = 'lib'
|
34
|
+
# s.autorequire = 'rake'
|
35
|
+
# s.files = PKG_FILES
|
36
|
+
# s.description = <<EOF
|
37
|
+
# Rake is a Make-like program implemented in Ruby. Tasks
|
38
|
+
# and dependencies are specified in standard Ruby syntax.
|
39
|
+
# EOF
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# Rake::GemPackageTask.new(spec) do |pkg|
|
43
|
+
# pkg.need_zip = true
|
44
|
+
# pkg.need_tar = true
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
class GemPackageTask < PackageTask
|
48
|
+
# Ruby GEM spec containing the metadata for this package. The
|
49
|
+
# name, version and package_files are automatically determined
|
50
|
+
# from the GEM spec and don't need to be explicitly provided.
|
51
|
+
attr_accessor :gem_spec
|
52
|
+
|
53
|
+
# Create a GEM Package task library. Automatically define the gem
|
54
|
+
# if a block is given. If no block is supplied, then +define+
|
55
|
+
# needs to be called to define the task.
|
56
|
+
def initialize(gem_spec)
|
57
|
+
init(gem_spec)
|
58
|
+
yield self if block_given?
|
59
|
+
define if block_given?
|
60
|
+
end
|
61
|
+
|
62
|
+
# Initialization tasks without the "yield self" or define
|
63
|
+
# operations.
|
64
|
+
def init(gem)
|
65
|
+
super(gem.name, gem.version)
|
66
|
+
@gem_spec = gem
|
67
|
+
@package_files += gem_spec.files if gem_spec.files
|
68
|
+
end
|
69
|
+
|
70
|
+
# Create the Rake tasks and actions specified by this
|
71
|
+
# GemPackageTask. (+define+ is automatically called if a block is
|
72
|
+
# given to +new+).
|
73
|
+
def define
|
74
|
+
super
|
75
|
+
task :package => [:gem]
|
76
|
+
desc "Build the gem file #{gem_file}"
|
77
|
+
task :gem => ["#{package_dir}/#{gem_file}"]
|
78
|
+
file "#{package_dir}/#{gem_file}" => [package_dir] + @gem_spec.files do
|
79
|
+
when_writing("Creating GEM") {
|
80
|
+
Gem::Builder.new(gem_spec).build
|
81
|
+
verbose(true) {
|
82
|
+
mv gem_file, "#{package_dir}/#{gem_file}"
|
83
|
+
}
|
84
|
+
}
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def gem_file
|
89
|
+
if @gem_spec.platform == Gem::Platform::RUBY
|
90
|
+
"#{package_name}.gem"
|
91
|
+
else
|
92
|
+
"#{package_name}-#{@gem_spec.platform}.gem"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Rake
|
2
|
+
|
3
|
+
####################################################################
|
4
|
+
# InvocationChain tracks the chain of task invocations to detect
|
5
|
+
# circular dependencies.
|
6
|
+
class InvocationChain
|
7
|
+
def initialize(value, tail)
|
8
|
+
@value = value
|
9
|
+
@tail = tail
|
10
|
+
end
|
11
|
+
|
12
|
+
def member?(obj)
|
13
|
+
@value == obj || @tail.member?(obj)
|
14
|
+
end
|
15
|
+
|
16
|
+
def append(value)
|
17
|
+
if member?(value)
|
18
|
+
fail RuntimeError, "Circular dependency detected: #{to_s} => #{value}"
|
19
|
+
end
|
20
|
+
self.class.new(value, self)
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
"#{prefix}#{@value}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.append(value, chain)
|
28
|
+
chain.append(value)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def prefix
|
34
|
+
"#{@tail.to_s} => "
|
35
|
+
end
|
36
|
+
|
37
|
+
class EmptyInvocationChain
|
38
|
+
def member?(obj)
|
39
|
+
false
|
40
|
+
end
|
41
|
+
def append(value)
|
42
|
+
InvocationChain.new(value, self)
|
43
|
+
end
|
44
|
+
def to_s
|
45
|
+
"TOP"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
EMPTY = EmptyInvocationChain.new
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Rake
|
2
|
+
module InvocationExceptionMixin
|
3
|
+
# Return the invocation chain (list of Rake tasks) that were in
|
4
|
+
# effect when this execption was detected by rake. May be null if
|
5
|
+
# no tasks were active.
|
6
|
+
def chain
|
7
|
+
@rake_invocation_chain ||= nil
|
8
|
+
end
|
9
|
+
|
10
|
+
# Set the invocation chain in effect when this exception was
|
11
|
+
# detected.
|
12
|
+
def chain=(value)
|
13
|
+
@rake_invocation_chain = value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
task "create:project" => ["lib", "test", "Rakefile"]
|
5
|
+
|
6
|
+
directory "lib"
|
7
|
+
directory "test"
|
8
|
+
|
9
|
+
file "Rakefile" do
|
10
|
+
File.open("Rakefile", "w") do |out|
|
11
|
+
out.puts %{# -*- ruby -*-
|
12
|
+
|
13
|
+
require 'rake/clean'
|
14
|
+
require 'rake/testtask'
|
15
|
+
|
16
|
+
task :default => :test
|
17
|
+
|
18
|
+
Rake::TestTask.new do |t|
|
19
|
+
t.verbose = false
|
20
|
+
t.test_files = FileList['test/test_*.rb']
|
21
|
+
end
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
module Rake
|
4
|
+
|
5
|
+
# Makefile loader to be used with the import file loader.
|
6
|
+
class MakefileLoader
|
7
|
+
include Rake::DSL
|
8
|
+
|
9
|
+
SPACE_MARK = "__&NBSP;__"
|
10
|
+
|
11
|
+
# Load the makefile dependencies in +fn+.
|
12
|
+
def load(fn)
|
13
|
+
open(fn) do |mf|
|
14
|
+
lines = mf.read
|
15
|
+
lines.gsub!(/\\ /, SPACE_MARK)
|
16
|
+
lines.gsub!(/#[^\n]*\n/m, "")
|
17
|
+
lines.gsub!(/\\\n/, ' ')
|
18
|
+
lines.split("\n").each do |line|
|
19
|
+
process_line(line)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
# Process one logical line of makefile data.
|
27
|
+
def process_line(line)
|
28
|
+
file_tasks, args = line.split(':')
|
29
|
+
return if args.nil?
|
30
|
+
dependents = args.split.map { |d| respace(d) }
|
31
|
+
file_tasks.strip.split.each do |file_task|
|
32
|
+
file_task = respace(file_task)
|
33
|
+
file file_task => dependents
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def respace(str)
|
38
|
+
str.gsub(/#{SPACE_MARK}/, ' ')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Install the handler
|
43
|
+
Rake.application.add_loader('mf', MakefileLoader.new)
|
44
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Rake
|
2
|
+
|
3
|
+
# Same as a regular task, but the immediate prerequisites are done in
|
4
|
+
# parallel using Ruby threads.
|
5
|
+
#
|
6
|
+
class MultiTask < Task
|
7
|
+
private
|
8
|
+
def invoke_prerequisites(args, invocation_chain)
|
9
|
+
threads = @prerequisites.collect { |p|
|
10
|
+
Thread.new(p) { |r| application[r, @scope].invoke_with_call_chain(args, invocation_chain) }
|
11
|
+
}
|
12
|
+
threads.each { |t| t.join }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Rake
|
2
|
+
|
3
|
+
# The NameSpace class will lookup task names in the the scope
|
4
|
+
# defined by a +namespace+ command.
|
5
|
+
#
|
6
|
+
class NameSpace
|
7
|
+
|
8
|
+
# Create a namespace lookup object using the given task manager
|
9
|
+
# and the list of scopes.
|
10
|
+
def initialize(task_manager, scope_list)
|
11
|
+
@task_manager = task_manager
|
12
|
+
@scope = scope_list.dup
|
13
|
+
end
|
14
|
+
|
15
|
+
# Lookup a task named +name+ in the namespace.
|
16
|
+
def [](name)
|
17
|
+
@task_manager.lookup(name, @scope)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Return the list of tasks defined in this and nested namespaces.
|
21
|
+
def tasks
|
22
|
+
@task_manager.tasks_in_scope(@scope)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Define a package task libarary to aid in the definition of
|
4
|
+
# redistributable package files.
|
5
|
+
|
6
|
+
require 'rake'
|
7
|
+
require 'rake/tasklib'
|
8
|
+
|
9
|
+
module Rake
|
10
|
+
|
11
|
+
# Create a packaging task that will package the project into
|
12
|
+
# distributable files (e.g zip archive or tar files).
|
13
|
+
#
|
14
|
+
# The PackageTask will create the following targets:
|
15
|
+
#
|
16
|
+
# [<b>:package</b>]
|
17
|
+
# Create all the requested package files.
|
18
|
+
#
|
19
|
+
# [<b>:clobber_package</b>]
|
20
|
+
# Delete all the package files. This target is automatically
|
21
|
+
# added to the main clobber target.
|
22
|
+
#
|
23
|
+
# [<b>:repackage</b>]
|
24
|
+
# Rebuild the package files from scratch, even if they are not out
|
25
|
+
# of date.
|
26
|
+
#
|
27
|
+
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tgz"</b>]
|
28
|
+
# Create a gzipped tar package (if <em>need_tar</em> is true).
|
29
|
+
#
|
30
|
+
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.gz"</b>]
|
31
|
+
# Create a gzipped tar package (if <em>need_tar_gz</em> is true).
|
32
|
+
#
|
33
|
+
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.bz2"</b>]
|
34
|
+
# Create a bzip2'd tar package (if <em>need_tar_bz2</em> is true).
|
35
|
+
#
|
36
|
+
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.zip"</b>]
|
37
|
+
# Create a zip package archive (if <em>need_zip</em> is true).
|
38
|
+
#
|
39
|
+
# Example:
|
40
|
+
#
|
41
|
+
# Rake::PackageTask.new("rake", "1.2.3") do |p|
|
42
|
+
# p.need_tar = true
|
43
|
+
# p.package_files.include("lib/**/*.rb")
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
class PackageTask < TaskLib
|
47
|
+
# Name of the package (from the GEM Spec).
|
48
|
+
attr_accessor :name
|
49
|
+
|
50
|
+
# Version of the package (e.g. '1.3.2').
|
51
|
+
attr_accessor :version
|
52
|
+
|
53
|
+
# Directory used to store the package files (default is 'pkg').
|
54
|
+
attr_accessor :package_dir
|
55
|
+
|
56
|
+
# True if a gzipped tar file (tgz) should be produced (default is false).
|
57
|
+
attr_accessor :need_tar
|
58
|
+
|
59
|
+
# True if a gzipped tar file (tar.gz) should be produced (default is false).
|
60
|
+
attr_accessor :need_tar_gz
|
61
|
+
|
62
|
+
# True if a bzip2'd tar file (tar.bz2) should be produced (default is false).
|
63
|
+
attr_accessor :need_tar_bz2
|
64
|
+
|
65
|
+
# True if a zip file should be produced (default is false)
|
66
|
+
attr_accessor :need_zip
|
67
|
+
|
68
|
+
# List of files to be included in the package.
|
69
|
+
attr_accessor :package_files
|
70
|
+
|
71
|
+
# Tar command for gzipped or bzip2ed archives. The default is 'tar'.
|
72
|
+
attr_accessor :tar_command
|
73
|
+
|
74
|
+
# Zip command for zipped archives. The default is 'zip'.
|
75
|
+
attr_accessor :zip_command
|
76
|
+
|
77
|
+
# Create a Package Task with the given name and version.
|
78
|
+
def initialize(name=nil, version=nil)
|
79
|
+
init(name, version)
|
80
|
+
yield self if block_given?
|
81
|
+
define unless name.nil?
|
82
|
+
end
|
83
|
+
|
84
|
+
# Initialization that bypasses the "yield self" and "define" step.
|
85
|
+
def init(name, version)
|
86
|
+
@name = name
|
87
|
+
@version = version
|
88
|
+
@package_files = Rake::FileList.new
|
89
|
+
@package_dir = 'pkg'
|
90
|
+
@need_tar = false
|
91
|
+
@need_tar_gz = false
|
92
|
+
@need_tar_bz2 = false
|
93
|
+
@need_zip = false
|
94
|
+
@tar_command = 'tar'
|
95
|
+
@zip_command = 'zip'
|
96
|
+
end
|
97
|
+
|
98
|
+
# Create the tasks defined by this task library.
|
99
|
+
def define
|
100
|
+
fail "Version required (or :noversion)" if @version.nil?
|
101
|
+
@version = nil if :noversion == @version
|
102
|
+
|
103
|
+
desc "Build all the packages"
|
104
|
+
task :package
|
105
|
+
|
106
|
+
desc "Force a rebuild of the package files"
|
107
|
+
task :repackage => [:clobber_package, :package]
|
108
|
+
|
109
|
+
desc "Remove package products"
|
110
|
+
task :clobber_package do
|
111
|
+
rm_r package_dir rescue nil
|
112
|
+
end
|
113
|
+
|
114
|
+
task :clobber => [:clobber_package]
|
115
|
+
|
116
|
+
[
|
117
|
+
[need_tar, tgz_file, "z"],
|
118
|
+
[need_tar_gz, tar_gz_file, "z"],
|
119
|
+
[need_tar_bz2, tar_bz2_file, "j"]
|
120
|
+
].each do |(need, file, flag)|
|
121
|
+
if need
|
122
|
+
task :package => ["#{package_dir}/#{file}"]
|
123
|
+
file "#{package_dir}/#{file}" => [package_dir_path] + package_files do
|
124
|
+
chdir(package_dir) do
|
125
|
+
sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}}
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
if need_zip
|
132
|
+
task :package => ["#{package_dir}/#{zip_file}"]
|
133
|
+
file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
|
134
|
+
chdir(package_dir) do
|
135
|
+
sh %{#{@zip_command} -r #{zip_file} #{package_name}}
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
directory package_dir
|
141
|
+
|
142
|
+
file package_dir_path => @package_files do
|
143
|
+
mkdir_p package_dir rescue nil
|
144
|
+
@package_files.each do |fn|
|
145
|
+
f = File.join(package_dir_path, fn)
|
146
|
+
fdir = File.dirname(f)
|
147
|
+
mkdir_p(fdir) if !File.exist?(fdir)
|
148
|
+
if File.directory?(fn)
|
149
|
+
mkdir_p(f)
|
150
|
+
else
|
151
|
+
rm_f f
|
152
|
+
safe_ln(fn, f)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
self
|
157
|
+
end
|
158
|
+
|
159
|
+
def package_name
|
160
|
+
@version ? "#{@name}-#{@version}" : @name
|
161
|
+
end
|
162
|
+
|
163
|
+
def package_dir_path
|
164
|
+
"#{package_dir}/#{package_name}"
|
165
|
+
end
|
166
|
+
|
167
|
+
def tgz_file
|
168
|
+
"#{package_name}.tgz"
|
169
|
+
end
|
170
|
+
|
171
|
+
def tar_gz_file
|
172
|
+
"#{package_name}.tar.gz"
|
173
|
+
end
|
174
|
+
|
175
|
+
def tar_bz2_file
|
176
|
+
"#{package_name}.tar.bz2"
|
177
|
+
end
|
178
|
+
|
179
|
+
def zip_file
|
180
|
+
"#{package_name}.zip"
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Rake
|
2
|
+
|
3
|
+
####################################################################
|
4
|
+
# Exit status class for times the system just gives us a nil.
|
5
|
+
class PseudoStatus
|
6
|
+
attr_reader :exitstatus
|
7
|
+
def initialize(code=0)
|
8
|
+
@exitstatus = code
|
9
|
+
end
|
10
|
+
def to_i
|
11
|
+
@exitstatus << 8
|
12
|
+
end
|
13
|
+
def >>(n)
|
14
|
+
to_i >> n
|
15
|
+
end
|
16
|
+
def stopped?
|
17
|
+
false
|
18
|
+
end
|
19
|
+
def exited?
|
20
|
+
true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|