thor 0.9.9 → 0.11.5
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.rdoc +29 -4
- data/README.rdoc +234 -0
- data/Thorfile +57 -0
- data/VERSION +1 -0
- data/bin/rake2thor +4 -0
- data/bin/thor +1 -1
- data/lib/thor.rb +216 -119
- data/lib/thor/actions.rb +272 -0
- data/lib/thor/actions/create_file.rb +102 -0
- data/lib/thor/actions/directory.rb +87 -0
- data/lib/thor/actions/empty_directory.rb +133 -0
- data/lib/thor/actions/file_manipulation.rb +195 -0
- data/lib/thor/actions/inject_into_file.rb +78 -0
- data/lib/thor/base.rb +510 -0
- data/lib/thor/core_ext/hash_with_indifferent_access.rb +75 -0
- data/lib/thor/core_ext/ordered_hash.rb +100 -0
- data/lib/thor/error.rb +25 -1
- data/lib/thor/group.rb +263 -0
- data/lib/thor/invocation.rb +178 -0
- data/lib/thor/parser.rb +4 -0
- data/lib/thor/parser/argument.rb +67 -0
- data/lib/thor/parser/arguments.rb +145 -0
- data/lib/thor/parser/option.rb +132 -0
- data/lib/thor/parser/options.rb +142 -0
- data/lib/thor/rake_compat.rb +67 -0
- data/lib/thor/runner.rb +232 -242
- data/lib/thor/shell.rb +72 -0
- data/lib/thor/shell/basic.rb +220 -0
- data/lib/thor/shell/color.rb +108 -0
- data/lib/thor/task.rb +97 -60
- data/lib/thor/util.rb +230 -55
- data/spec/actions/create_file_spec.rb +170 -0
- data/spec/actions/directory_spec.rb +118 -0
- data/spec/actions/empty_directory_spec.rb +91 -0
- data/spec/actions/file_manipulation_spec.rb +242 -0
- data/spec/actions/inject_into_file_spec.rb +80 -0
- data/spec/actions_spec.rb +291 -0
- data/spec/base_spec.rb +236 -0
- data/spec/core_ext/hash_with_indifferent_access_spec.rb +43 -0
- data/spec/core_ext/ordered_hash_spec.rb +115 -0
- data/spec/fixtures/bundle/execute.rb +6 -0
- data/spec/fixtures/doc/config.rb +1 -0
- data/spec/group_spec.rb +177 -0
- data/spec/invocation_spec.rb +107 -0
- data/spec/parser/argument_spec.rb +47 -0
- data/spec/parser/arguments_spec.rb +64 -0
- data/spec/parser/option_spec.rb +212 -0
- data/spec/parser/options_spec.rb +255 -0
- data/spec/rake_compat_spec.rb +64 -0
- data/spec/runner_spec.rb +204 -0
- data/spec/shell/basic_spec.rb +206 -0
- data/spec/shell/color_spec.rb +41 -0
- data/spec/shell_spec.rb +25 -0
- data/spec/spec_helper.rb +52 -0
- data/spec/task_spec.rb +82 -0
- data/spec/thor_spec.rb +234 -0
- data/spec/util_spec.rb +196 -0
- metadata +69 -25
- data/README.markdown +0 -76
- data/Rakefile +0 -6
- data/lib/thor/options.rb +0 -242
- data/lib/thor/ordered_hash.rb +0 -64
- data/lib/thor/task_hash.rb +0 -22
- data/lib/thor/tasks.rb +0 -77
- data/lib/thor/tasks/package.rb +0 -18
data/lib/thor/ordered_hash.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
class Thor
|
2
|
-
# This class is based on the Ruby 1.9 ordered hashes.
|
3
|
-
# It keeps the semantics and most of the efficiency of normal hashes
|
4
|
-
# while also keeping track of the order in which elements were set.
|
5
|
-
class OrderedHash
|
6
|
-
Node = Struct.new(:key, :value, :next, :prev)
|
7
|
-
include Enumerable
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
@hash = {}
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize_copy(other)
|
14
|
-
@hash = other.instance_variable_get('@hash').clone
|
15
|
-
end
|
16
|
-
|
17
|
-
def [](key)
|
18
|
-
@hash[key] && @hash[key].value
|
19
|
-
end
|
20
|
-
|
21
|
-
def []=(key, value)
|
22
|
-
node = Node.new(key, value)
|
23
|
-
|
24
|
-
if old = @hash[key]
|
25
|
-
if old.prev
|
26
|
-
old.prev.next = old.next
|
27
|
-
else # old is @first and @last
|
28
|
-
@first = @last = nil
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
if @first.nil?
|
33
|
-
@first = @last = node
|
34
|
-
else
|
35
|
-
node.prev = @last
|
36
|
-
@last.next = node
|
37
|
-
@last = node
|
38
|
-
end
|
39
|
-
|
40
|
-
@hash[key] = node
|
41
|
-
value
|
42
|
-
end
|
43
|
-
|
44
|
-
def each
|
45
|
-
return unless @first
|
46
|
-
yield [@first.key, @first.value]
|
47
|
-
node = @first
|
48
|
-
yield [node.key, node.value] while node = node.next
|
49
|
-
self
|
50
|
-
end
|
51
|
-
|
52
|
-
def values
|
53
|
-
self.map { |k, v| v }
|
54
|
-
end
|
55
|
-
|
56
|
-
def +(other)
|
57
|
-
new = clone
|
58
|
-
other.each do |key, value|
|
59
|
-
new[key] = value unless self[key]
|
60
|
-
end
|
61
|
-
new
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
data/lib/thor/task_hash.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'thor/ordered_hash'
|
2
|
-
require 'thor/task'
|
3
|
-
|
4
|
-
class Thor::TaskHash < Thor::OrderedHash
|
5
|
-
def initialize(klass)
|
6
|
-
super()
|
7
|
-
@klass = klass
|
8
|
-
end
|
9
|
-
|
10
|
-
def each(local = false, &block)
|
11
|
-
super() { |k, t| yield k, t.with_klass(@klass) }
|
12
|
-
@klass.superclass.tasks.each { |k, t| yield k, t.with_klass(@klass) } unless local || @klass == Thor
|
13
|
-
end
|
14
|
-
|
15
|
-
def [](name)
|
16
|
-
if task = super(name) || (@klass == Thor && @klass.superclass.tasks[name])
|
17
|
-
return task.with_klass(@klass)
|
18
|
-
end
|
19
|
-
|
20
|
-
Thor::Task.dynamic(name, @klass)
|
21
|
-
end
|
22
|
-
end
|
data/lib/thor/tasks.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
require "thor"
|
2
|
-
require "fileutils"
|
3
|
-
|
4
|
-
class Thor
|
5
|
-
def self.package_task(spec)
|
6
|
-
desc "package", "package up the gem"
|
7
|
-
define_method :package do
|
8
|
-
FileUtils.mkdir_p(File.join(Dir.pwd, "pkg"))
|
9
|
-
Gem::Builder.new(spec).build
|
10
|
-
FileUtils.mv(spec.file_name, File.join(Dir.pwd, "pkg", spec.file_name))
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.install_task(spec)
|
15
|
-
package_task spec
|
16
|
-
|
17
|
-
null, sudo, gem = RUBY_PLATFORM =~ /w(in)?32$/ ? ['NUL', '', 'gem.bat'] :
|
18
|
-
['/dev/null', 'sudo', 'gem']
|
19
|
-
|
20
|
-
desc "install", "install the gem"
|
21
|
-
define_method :install do
|
22
|
-
old_stderr, $stderr = $stderr.dup, File.open(null, "w")
|
23
|
-
package
|
24
|
-
$stderr = old_stderr
|
25
|
-
system %{#{sudo} #{Gem.ruby} -S #{gem} install pkg/#{spec.name}-#{spec.version} --no-rdoc --no-ri --no-update-sources}
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.spec_task(file_list, opts = {})
|
30
|
-
name = opts.delete(:name) || "spec"
|
31
|
-
rcov_dir = opts.delete(:rcov_dir) || "coverage"
|
32
|
-
file_list = file_list.map {|f| %["#{f}"]}.join(" ")
|
33
|
-
verbose = opts.delete(:verbose)
|
34
|
-
opts = {:format => "specdoc", :color => true}.merge(opts)
|
35
|
-
|
36
|
-
rcov_opts = convert_task_options(opts.delete(:rcov) || {})
|
37
|
-
rcov = !rcov_opts.empty?
|
38
|
-
options = convert_task_options(opts)
|
39
|
-
|
40
|
-
if rcov
|
41
|
-
FileUtils.rm_rf(File.join(Dir.pwd, rcov_dir))
|
42
|
-
end
|
43
|
-
|
44
|
-
desc(name, "spec task")
|
45
|
-
define_method(name) do
|
46
|
-
cmd = "ruby "
|
47
|
-
if rcov
|
48
|
-
cmd << "-S rcov -o #{rcov_dir} #{rcov_opts} "
|
49
|
-
end
|
50
|
-
cmd << `which spec`.chomp
|
51
|
-
cmd << " -- " if rcov
|
52
|
-
cmd << " "
|
53
|
-
cmd << file_list
|
54
|
-
cmd << " "
|
55
|
-
cmd << options
|
56
|
-
puts cmd if verbose
|
57
|
-
system(cmd)
|
58
|
-
exit($?.exitstatus)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
private
|
63
|
-
def self.convert_task_options(opts)
|
64
|
-
opts.map do |key, value|
|
65
|
-
case value
|
66
|
-
when true
|
67
|
-
"--#{key}"
|
68
|
-
when Array
|
69
|
-
value.map {|v| "--#{key} #{v.inspect}"}.join(" ")
|
70
|
-
when nil, false
|
71
|
-
""
|
72
|
-
else
|
73
|
-
"--#{key} #{value.inspect}"
|
74
|
-
end
|
75
|
-
end.join(" ")
|
76
|
-
end
|
77
|
-
end
|
data/lib/thor/tasks/package.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require "thor/task"
|
2
|
-
|
3
|
-
class Thor::PackageTask < Thor::Task
|
4
|
-
attr_accessor :spec
|
5
|
-
attr_accessor :opts
|
6
|
-
|
7
|
-
def initialize(gemspec, opts = {})
|
8
|
-
super(:package, "build a gem package")
|
9
|
-
@spec = gemspec
|
10
|
-
@opts = {:dir => File.join(Dir.pwd, "pkg")}.merge(opts)
|
11
|
-
end
|
12
|
-
|
13
|
-
def run
|
14
|
-
FileUtils.mkdir_p(@opts[:dir])
|
15
|
-
Gem::Builder.new(spec).build
|
16
|
-
FileUtils.mv(spec.file_name, File.join(@opts[:dir], spec.file_name))
|
17
|
-
end
|
18
|
-
end
|