nake 0.0.5 → 0.0.6
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 +12 -0
- data/Rakefile +1 -1
- data/TODO.txt +2 -6
- data/bin/nake +7 -1
- data/{tmp/restart.txt → bm/Rakefile} +0 -0
- data/bm/bms.rb +22 -0
- data/bm/output.txt +5 -0
- data/bm/tasks.rb +0 -0
- data/examples/arguments.rb +29 -3
- data/examples/basic.rb +2 -4
- data/examples/complex.rb +1 -1
- data/examples/configuration.rb +5 -1
- data/examples/default.rb +2 -2
- data/examples/default_proc.rb +1 -1
- data/examples/dependencies.rb +4 -1
- data/examples/file.rb +12 -8
- data/examples/helpers.rb +2 -2
- data/examples/invoking.rb +11 -2
- data/examples/setup.rb +24 -0
- data/examples/task_arguments.rb +27 -0
- data/features/arguments.feature +22 -0
- data/features/basic.feature +6 -0
- data/features/builtin_arguments.feature +14 -0
- data/features/complex.feature +6 -0
- data/features/configuration.feature +10 -0
- data/features/default.feature +10 -0
- data/features/default_proc.feature +6 -0
- data/features/dependencies.feature +16 -0
- data/features/env.rb +11 -0
- data/features/executable.feature +26 -0
- data/features/file.feature +23 -0
- data/features/helpers.feature +6 -0
- data/features/invoking.feature +14 -0
- data/features/script.feature +10 -0
- data/features/setup.feature +5 -0
- data/features/steps.rb +39 -0
- data/features/task_arguments.feature +10 -0
- data/lib/nake.rb +10 -14
- data/lib/nake/colors.rb +4 -0
- data/lib/nake/dsl.rb +12 -3
- data/spec/spec_helper.rb +10 -0
- data/tasks.rb +21 -0
- metadata +27 -7
- data/examples/args.rb +0 -5
- data/examples/flags.rb +0 -15
- data/examples/options.rb +0 -6
data/CHANGELOG
CHANGED
|
@@ -14,3 +14,15 @@
|
|
|
14
14
|
|
|
15
15
|
= Version 0.0.3
|
|
16
16
|
* Some bug fixes and task improvements
|
|
17
|
+
|
|
18
|
+
= Version 0.0.4
|
|
19
|
+
* Support for arguments parsing
|
|
20
|
+
* FileTask & file & directory helpers
|
|
21
|
+
|
|
22
|
+
= Version 0.0.5
|
|
23
|
+
* Benchmarks
|
|
24
|
+
* Some bug fixes
|
|
25
|
+
|
|
26
|
+
= Version 0.0.6
|
|
27
|
+
* Cucumber features
|
|
28
|
+
* DSL helper rule
|
data/Rakefile
CHANGED
data/TODO.txt
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
-
|
|
1
|
+
- Task#setup
|
|
2
2
|
- yardoc
|
|
3
|
-
- specs
|
|
4
|
-
- fix interactive task, it doesn't work so far
|
|
3
|
+
- specs & features
|
|
5
4
|
- better argv parsing maybe, task(:spec) do |*paths, options| is fine, but task(:spec) do |path, options| will fail if no path specified ... but actually task(:spec) do |path = "spec", options| might be fine, try it ... BTW task(["-i", "--interactive"]) do |task, *args, options| doesn't work ... putting options as a first argument should solve everything, but it's not very intuitive :/
|
|
6
5
|
- how to solve args inheriting (like if we have task release which depends on task build which takes a gemspec as an argument)
|
|
7
|
-
- benchmarks against rake
|
|
8
|
-
- maybe some of: fileutils extensions, multitask, rule (from rake, see http://rake.rubyforge.org/files/doc/rakefile_rdoc.html)
|
|
9
|
-
- some default tasks like nake/tasks/package, nake/tasks/clean, nake/tasks/yardoc, nake/tasks/spec, nake/tasks/bundle
|
data/bin/nake
CHANGED
|
@@ -30,7 +30,7 @@ rescue Exception => exception
|
|
|
30
30
|
puts "Exception occured during parsing arguments"
|
|
31
31
|
print_exception_with_backtrace_and_abort(exception)
|
|
32
32
|
else
|
|
33
|
-
if Nake.parse[:nake].include?("--debug") # Nake.debug isn't initialized yet
|
|
33
|
+
if Nake.parse[:nake] && Nake.parse[:nake].include?("--debug") # Nake.debug isn't initialized yet
|
|
34
34
|
puts "~ Arguments parsed into #{Nake.parse.inspect.green}"
|
|
35
35
|
end
|
|
36
36
|
end
|
|
@@ -42,6 +42,10 @@ if Nake.parse[:file]
|
|
|
42
42
|
rescue Exception => exception
|
|
43
43
|
print_exception_with_backtrace_and_abort(exception)
|
|
44
44
|
end
|
|
45
|
+
elsif File.exist?("tasks.rb")
|
|
46
|
+
# default value, useful when running nake on systems without
|
|
47
|
+
# shebang support, so you are using nake -T instead of ./tasks.rb -T
|
|
48
|
+
Nake.parse[:file] = "tasks.rb"
|
|
45
49
|
else
|
|
46
50
|
abort "You have to specify a file with tasks"
|
|
47
51
|
end
|
|
@@ -66,6 +70,8 @@ end
|
|
|
66
70
|
# run tasks
|
|
67
71
|
begin
|
|
68
72
|
Nake.run_task
|
|
73
|
+
rescue TaskNotFound => exception
|
|
74
|
+
abort exception.message
|
|
69
75
|
rescue SystemExit => exception
|
|
70
76
|
exit exception.status
|
|
71
77
|
rescue Exception => exception
|
|
File without changes
|
data/bm/bms.rb
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$VERBOSE = nil # shut up
|
|
4
|
+
|
|
5
|
+
require "rbench"
|
|
6
|
+
|
|
7
|
+
rake = `which rake`.chomp
|
|
8
|
+
nake = "./bin/nake"
|
|
9
|
+
|
|
10
|
+
abort "You have to install Rake!" if rake.empty?
|
|
11
|
+
puts "Using nake from #{nake} and rake from #{rake}\n\n"
|
|
12
|
+
|
|
13
|
+
# Make sure you are running both Rake and Nake on the same Ruby version!
|
|
14
|
+
RBench.run(10) do
|
|
15
|
+
column :rake
|
|
16
|
+
column :nake
|
|
17
|
+
|
|
18
|
+
report "list tasks" do
|
|
19
|
+
rake { system("#{rake} -T &> /dev/null") || abort("Problem during running #{rake} -T") }
|
|
20
|
+
nake { system("#{nake} -T &> /dev/null") || abort("Problem during running #{nake} -T") }
|
|
21
|
+
end
|
|
22
|
+
end
|
data/bm/output.txt
ADDED
data/bm/tasks.rb
ADDED
|
File without changes
|
data/examples/arguments.rb
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ./bin/nake --debug
|
|
2
|
+
|
|
3
|
+
# This example document how you can change different flags
|
|
4
|
+
# - specify these flags in shebang
|
|
5
|
+
# - use API directly
|
|
6
|
+
# - ./examples/flags --verbose
|
|
7
|
+
Nake.verbose = false
|
|
2
8
|
|
|
3
9
|
# Arguments might be considered as a light-weight variant to tasks
|
|
4
10
|
# There are two ways how you can use tasks:
|
|
@@ -6,7 +12,27 @@
|
|
|
6
12
|
# 2) add your own functionality and then use exit
|
|
7
13
|
# 3) just set the task which will run afterwards
|
|
8
14
|
Nake.args["-H", "--help"] = lambda { Kernel.abort("This is my customized help!") }
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
|
|
16
|
+
task(:tasks) { puts "Available tasks: #{Nake::Task.tasks.keys.join(", ")}" }
|
|
17
|
+
Nake.args["-T", "--tasks"] = lambda { |*| Nake.parse[:task].clear.push("tasks") }
|
|
18
|
+
|
|
19
|
+
argument("--debug", "--no-debug") do |key, value|
|
|
20
|
+
puts "~ Setting #{key} to #{value}"
|
|
21
|
+
Nake.debug = value
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# ./examples/arguments.rb --report greet
|
|
25
|
+
# ./examples/arguments.rb --report wait
|
|
26
|
+
task(:greet) { puts "Hey mate!" }
|
|
27
|
+
task(:wait) { sleep(1) }
|
|
28
|
+
|
|
29
|
+
argument("--report") do |*|
|
|
30
|
+
@before = Time.now
|
|
31
|
+
at_exit do
|
|
32
|
+
task = Nake.parse[:task].first
|
|
33
|
+
time = Time.now - @before
|
|
34
|
+
puts "Running task #{task} took #{time} seconds"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
11
37
|
|
|
12
38
|
# TODO: execution order, argument helper + args passing to the proc
|
data/examples/basic.rb
CHANGED
data/examples/complex.rb
CHANGED
data/examples/configuration.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ./bin/nake
|
|
2
2
|
|
|
3
3
|
# this will be probably in a library
|
|
4
4
|
Task.new(:build) do |task|
|
|
@@ -9,3 +9,7 @@ end
|
|
|
9
9
|
|
|
10
10
|
# and this in your file with tasks
|
|
11
11
|
Task[:build].config[:gemspec] = "nake.gemspec"
|
|
12
|
+
|
|
13
|
+
# if the task isn't defined yet
|
|
14
|
+
task(:mytask)
|
|
15
|
+
Task[:mytask].config[:name] = "foo"
|
data/examples/default.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ./bin/nake
|
|
2
2
|
|
|
3
3
|
# When you run rake without arguments, it will try to run task called default.
|
|
4
4
|
# Since I don't believe in any stupid convention, I don't support anything similar,
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
# so you have to put this to the end of your file or you might want to use
|
|
8
8
|
# Hash#default_proc=(proc) as described in examples/default_proc.rb like:
|
|
9
9
|
# Task.tasks.default_proc = lambda { |*| Task[:build] }
|
|
10
|
-
Task.tasks.default = Task["-T"]
|
|
10
|
+
Task.tasks.default = Nake.args["-T"] #Task["-T"]
|
data/examples/default_proc.rb
CHANGED
data/examples/dependencies.rb
CHANGED
data/examples/file.rb
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ./bin/nake
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
# File tasks doesn't have any options or arguments,
|
|
4
|
+
# because if you have some setup which may generate
|
|
5
|
+
# each time different file, than the whole machinery
|
|
6
|
+
# for recognization if given task should run is useless.
|
|
7
|
+
# Of course you may want to use task for generating
|
|
8
|
+
# a file with arguments and options, but then just
|
|
9
|
+
# use a normal task helper or Task.new method.
|
|
8
10
|
|
|
9
11
|
directory "tmp"
|
|
10
12
|
directory "tmp/www"
|
|
@@ -13,6 +15,8 @@ file("tmp/restart.txt", "tmp") do |path|
|
|
|
13
15
|
touch path
|
|
14
16
|
end
|
|
15
17
|
|
|
16
|
-
file
|
|
17
|
-
|
|
18
|
+
file("tmp/www/index.html", "tmp/www") do |path|
|
|
19
|
+
File.open(path, "w") do |file|
|
|
20
|
+
file.puts("<html>Hello World!</html>")
|
|
21
|
+
end
|
|
18
22
|
end
|
data/examples/helpers.rb
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ./bin/nake
|
|
2
2
|
|
|
3
|
-
task(:
|
|
3
|
+
task(:greet) { sh "echo Hey from shell!" }.description = "Greeting from shell"
|
data/examples/invoking.rb
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ./bin/nake
|
|
2
|
+
|
|
3
|
+
task(:inspect) do |*args, options|
|
|
4
|
+
puts "Arguments: #{args.inspect}"
|
|
5
|
+
puts "Options: #{options.inspect}"
|
|
6
|
+
end
|
|
2
7
|
|
|
3
8
|
task(:foo) do
|
|
4
|
-
Task[:
|
|
9
|
+
Task[:inspect].call
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
task(:bar) do |*args, options|
|
|
13
|
+
Task[:inspect].call(*args, options)
|
|
5
14
|
end
|
data/examples/setup.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env ./bin/nake
|
|
2
|
+
|
|
3
|
+
# NOTE: this isn't implemented yet!
|
|
4
|
+
# THERE MIGHT TO BE USEFUL TO HAVE BASE CLASS FOR TASK, BECAUSE FILE TASK DOESN'T HAVE ALIASES ETC
|
|
5
|
+
Task.new(:build) do |task|
|
|
6
|
+
task.description = "Release version #{Task[:release].config[:version]}" # but release task might not exist yet
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# soo ...
|
|
10
|
+
Task.new(:build) do |task|
|
|
11
|
+
task.setup do |variable|
|
|
12
|
+
task.description = "Release version #{Task[:release].config[:version]}"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# hodi se hlavne pro descriptions a pro pushovani veci do dependencies, protoze z dependencies se daji odstranit, kdezto z procu, kde se invokujou explicitne, to jde fakt tezko
|
|
17
|
+
# setup task se vola na zacatku Nake.run
|
|
18
|
+
|
|
19
|
+
# advanced ...
|
|
20
|
+
Task.new(:build) do |task|
|
|
21
|
+
task.setup(:release, :other_task) do |variable|
|
|
22
|
+
task.description = "Release version #{Task[:release].config[:version]}"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env ./bin/nake
|
|
2
|
+
|
|
3
|
+
task(:greet) do |user, options| # FIXME: this doesn't work if you don't specify any args
|
|
4
|
+
puts "Hi #{user}!"
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
task(:greet) do |user = ENV["USER"], options|
|
|
8
|
+
puts "Hi #{user}!"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# ./examples/task_arguments.rb greet:options
|
|
12
|
+
# ./examples/task_arguments.rb greet:options --name=botanicus
|
|
13
|
+
# ./examples/task_arguments.rb greet:options foo bar --name=botanicus
|
|
14
|
+
task("greet:options") do |*, options|
|
|
15
|
+
raise ArgumentError, "You have to specify --name=#{ENV["USER"]}" if options.empty?
|
|
16
|
+
puts "Hi #{options[:name]}!"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
## ./examples/task_arguments.rb greet:options --name=botanicus
|
|
20
|
+
#task("greet:options") do |user, options|
|
|
21
|
+
# case options[:type]
|
|
22
|
+
# when :friendly
|
|
23
|
+
# puts "Hi mate!"
|
|
24
|
+
# else
|
|
25
|
+
# puts "Hi #{user}!"
|
|
26
|
+
# end
|
|
27
|
+
#end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: Arguments
|
|
4
|
+
Scenario: Simple argument
|
|
5
|
+
When I run "./examples/arguments.rb --report greet"
|
|
6
|
+
Then it should show "Hey mate!"
|
|
7
|
+
And it should succeed with "Running task greet took [\d.]+ seconds"
|
|
8
|
+
|
|
9
|
+
Scenario: Argument taking options
|
|
10
|
+
When I run "./examples/arguments.rb --debug greet"
|
|
11
|
+
Then it should show "Setting debug to true"
|
|
12
|
+
And it should suceed with "Hey mate!"
|
|
13
|
+
|
|
14
|
+
Scenario: Argument taking options
|
|
15
|
+
When I run "./examples/arguments.rb --no-debug greet"
|
|
16
|
+
Then it should show "Setting debug to false"
|
|
17
|
+
And it should suceed with "Hey mate!"
|
|
18
|
+
|
|
19
|
+
Scenario: Arguments should be able to influence task execution
|
|
20
|
+
When I run "./examples/arguments.rb --tasks greet"
|
|
21
|
+
Then it should not show "Hey mate!"
|
|
22
|
+
And it should suceed with "Available tasks: tasks, greet, wait"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: Task arguments
|
|
4
|
+
Scenario: running -H or --help
|
|
5
|
+
When I run "./examples/basic.rb greet"
|
|
6
|
+
Then it should succeed with "Hi botanicus!"
|
|
7
|
+
|
|
8
|
+
Scenario: running -T or --tasks
|
|
9
|
+
When I run "./examples/basic.rb greet"
|
|
10
|
+
Then it should succeed with "Hi botanicus!"
|
|
11
|
+
|
|
12
|
+
Scenario: running -i or --interactive
|
|
13
|
+
When I run "./examples/basic.rb greet"
|
|
14
|
+
Then it should succeed with "Hi botanicus!"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: Task dependencies
|
|
4
|
+
# it should show dependencies as well
|
|
5
|
+
Scenario: inspecting with -T
|
|
6
|
+
Given this is pending
|
|
7
|
+
|
|
8
|
+
Scenario: Invoking task with dependencies which doesn't run yet
|
|
9
|
+
When I run "./examples/dependencies.rb greet3"
|
|
10
|
+
Then it should show "~ Invoking task greet1"
|
|
11
|
+
And it should show "~ Invoking task greet2"
|
|
12
|
+
And it should show "~ Invoking task greet3"
|
|
13
|
+
And it should succeed
|
|
14
|
+
|
|
15
|
+
Scenario: Invoking task with dependencies which already run
|
|
16
|
+
Given this is pending
|
data/features/env.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: Running bin/nake
|
|
4
|
+
Scenario: Running bin/nake without any arguments
|
|
5
|
+
When I run "./bin/nake"
|
|
6
|
+
Then it should fail with "You have to specify a task you want to run!"
|
|
7
|
+
|
|
8
|
+
Scenario: Running bin/nake with a file, but without any arguments
|
|
9
|
+
When I run "./bin/nake examples/task_arguments.rb"
|
|
10
|
+
Then it should fail with "You have to specify a task you want to run!"
|
|
11
|
+
|
|
12
|
+
Scenario: Running bin/nake with a task
|
|
13
|
+
When I run "./bin/nake examples/task_arguments.rb greet"
|
|
14
|
+
Then it should succeed with "Hi botanicus"
|
|
15
|
+
|
|
16
|
+
Scenario: Running bin/nake with a task and arguments
|
|
17
|
+
When I run "./bin/nake examples/task_arguments.rb greet Jakub"
|
|
18
|
+
Then it should succeed with "Hi Jakub"
|
|
19
|
+
|
|
20
|
+
Scenario: Running task file with shebang to nake with a task
|
|
21
|
+
When I run "./examples/task_arguments.rb greet Jakub"
|
|
22
|
+
Then it should succeed with "Hi Jakub"
|
|
23
|
+
|
|
24
|
+
Scenario: Scenario: Running task file with shebang to nake with a task and arguments
|
|
25
|
+
When I run "./examples/task_arguments.rb greet Jakub"
|
|
26
|
+
Then it should succeed with "Hi Jakub"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: File tasks
|
|
4
|
+
Scenario: running -T
|
|
5
|
+
When I run "./examples/file.rb -T"
|
|
6
|
+
Then it should not show "tmp/www"
|
|
7
|
+
And it should show "tmp/restart.txt"
|
|
8
|
+
|
|
9
|
+
Scenario: using directory helper
|
|
10
|
+
When I run "./examples/file.rb tmp/www"
|
|
11
|
+
Then it should create "tmp/www"
|
|
12
|
+
And it should succeed
|
|
13
|
+
|
|
14
|
+
Scenario: using file helper
|
|
15
|
+
When I run "./examples/file.rb tmp/restart.txt"
|
|
16
|
+
Then it should create "tmp/restart.txt"
|
|
17
|
+
And it should succeed
|
|
18
|
+
|
|
19
|
+
Scenario: using file helper when the target file already exist
|
|
20
|
+
Given this is pending
|
|
21
|
+
|
|
22
|
+
Scenario: using file helper when the target file already exist but is older than its dependencies
|
|
23
|
+
Given this is pending
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: Invoking tasks
|
|
4
|
+
Scenario: without arguments
|
|
5
|
+
When I run "./examples/invoking.rb foo"
|
|
6
|
+
Then it should show "Arguments: []"
|
|
7
|
+
And it should show "Options: {}"
|
|
8
|
+
And it should suceed
|
|
9
|
+
|
|
10
|
+
Scenario: with arguments
|
|
11
|
+
When I run "./examples/invoking.rb foo bar a b --name=botanicus"
|
|
12
|
+
Then it should show "Arguments: ["a", "b"]"
|
|
13
|
+
And it should show "Options: {:name=>botanicus}"
|
|
14
|
+
And it should suceed
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: Using Nake API for custom scripts
|
|
4
|
+
Scenario: running default tasks
|
|
5
|
+
When I run "./examples/script.rb -T"
|
|
6
|
+
Then it should succeed with "Available tasks"
|
|
7
|
+
|
|
8
|
+
Scenario: running custom tasks
|
|
9
|
+
When I run "./examples/script.rb greet:all"
|
|
10
|
+
Then it should succeed with "Hi guys!"
|
data/features/steps.rb
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require "open3"
|
|
4
|
+
|
|
5
|
+
# http://redmine.ruby-lang.org/issues/show/1287
|
|
6
|
+
When /^I run "([^\"]*)"$/ do |command|
|
|
7
|
+
_, @stdout, @stderr, thread = Open3.popen3(command)
|
|
8
|
+
@status = thread.value.exitstatus
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Then /^it should show "([^\"]*)"$/ do |pattern|
|
|
12
|
+
@stdout.read.should_not match(pattern)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Then /^it should not show "([^\"]*)"$/ do |pattern|
|
|
16
|
+
@stdout.read.should_not match(pattern)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Then /^it should succeed$/ do
|
|
20
|
+
@status.should eql(0)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
Then /^it should suceed with "([^\"]*)"$/ do |pattern|
|
|
24
|
+
@stdout.read.should match(pattern)
|
|
25
|
+
@status.should eql(0)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Then /^it should fail with status "(\d+)"$/ do |status = 0|
|
|
29
|
+
@status.should eql(status.to_i)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
Then /^it should fail with "([^\"]*)"$/ do |pattern|
|
|
33
|
+
@stderr.read.should match(pattern)
|
|
34
|
+
@status.should_not eql(0)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
Then /^it should create "([^\"]*)"$/ do |path|
|
|
38
|
+
File.exist?(path).should be_true
|
|
39
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env cucumber
|
|
2
|
+
|
|
3
|
+
Feature: Task arguments
|
|
4
|
+
Scenario: explicit arguments
|
|
5
|
+
When I run "./examples/task_arguments.rb greet jakub"
|
|
6
|
+
Then it should succeed with "Hi jakub!"
|
|
7
|
+
|
|
8
|
+
Scenario: default arguments
|
|
9
|
+
When I run "./examples/task_arguments.rb greet"
|
|
10
|
+
Then it should succeed with "Hi botanicus!"
|
data/lib/nake.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require "nake/task"
|
|
4
4
|
|
|
5
5
|
module Nake
|
|
6
|
-
VERSION ||= "0.0.
|
|
6
|
+
VERSION ||= "0.0.6"
|
|
7
7
|
def self.verbose
|
|
8
8
|
@@verbose
|
|
9
9
|
rescue NameError
|
|
@@ -41,20 +41,16 @@ module Nake
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def self.parse(args = ARGV)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
hash[:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
hash[:file] = argument
|
|
53
|
-
else
|
|
54
|
-
hash[:task].push(argument)
|
|
55
|
-
end
|
|
56
|
-
hash
|
|
44
|
+
default = {nake: Array.new, task: Array.new}
|
|
45
|
+
args.inject(default) do |hash, argument|
|
|
46
|
+
if argument.match(/^-/) && hash[:task].empty?
|
|
47
|
+
hash[:nake].push(argument)
|
|
48
|
+
elsif File.exist?(argument) && hash[:file].nil? # just the first one
|
|
49
|
+
hash[:file] = argument
|
|
50
|
+
else
|
|
51
|
+
hash[:task].push(argument)
|
|
57
52
|
end
|
|
53
|
+
hash
|
|
58
54
|
end
|
|
59
55
|
end
|
|
60
56
|
|
data/lib/nake/colors.rb
CHANGED
data/lib/nake/dsl.rb
CHANGED
|
@@ -34,13 +34,22 @@ class Object
|
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
# rule "*.o", "*.c"
|
|
38
|
+
# rule "**/*.o", "**/.c"
|
|
39
|
+
def rule(glob, dependency, &block)
|
|
40
|
+
Dir.glob(glob).each do |path|
|
|
41
|
+
FileTask.new(path) do |task|
|
|
42
|
+
task.description = "Generate #{path}"
|
|
43
|
+
task.define(&block)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
37
48
|
def directory(path)
|
|
38
49
|
FileTask.new(path) do |task|
|
|
39
50
|
task.hidden = true # do not show in list
|
|
40
51
|
task.description = "Create directory #{path}"
|
|
41
|
-
task.define
|
|
42
|
-
mkdir_p path
|
|
43
|
-
end
|
|
52
|
+
task.define { mkdir_p path }
|
|
44
53
|
end
|
|
45
54
|
end
|
|
46
55
|
end
|
data/spec/spec_helper.rb
CHANGED
data/tasks.rb
CHANGED
|
@@ -20,3 +20,24 @@ Nake::Task["hooks:whitespace:install"].tap do |task|
|
|
|
20
20
|
task.config[:encoding] = "utf-8"
|
|
21
21
|
task.config[:whitelist] = '(bin/[^/]+|.+\.(rb|rake|nake|thor|task))$'
|
|
22
22
|
end
|
|
23
|
+
|
|
24
|
+
Task.new(:features) do |task|
|
|
25
|
+
task.description = "Run cucumber scenarios"
|
|
26
|
+
task.define do
|
|
27
|
+
sh "cucumber features"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Task.new(:bm) do |task|
|
|
32
|
+
task.description = "Run benchmarks"
|
|
33
|
+
task.define do
|
|
34
|
+
load "#{File.dirname(__FILE__)}/bm/bms.rb"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
Task.new("bm:save") do |task|
|
|
39
|
+
task.description = "Run benchmarks"
|
|
40
|
+
task.define do
|
|
41
|
+
sh "ruby bm/bms.rb > bm/output.txt"
|
|
42
|
+
end
|
|
43
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nake
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- "Jakub \xC5\xA0\xC5\xA5astn\xC3\xBD aka Botanicus"
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain:
|
|
11
|
-
date: 2009-12-
|
|
11
|
+
date: 2009-12-31 00:00:00 +01:00
|
|
12
12
|
default_executable: nake
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
@@ -31,8 +31,11 @@ extra_rdoc_files: []
|
|
|
31
31
|
|
|
32
32
|
files:
|
|
33
33
|
- bin/nake
|
|
34
|
+
- bm/bms.rb
|
|
35
|
+
- bm/output.txt
|
|
36
|
+
- bm/Rakefile
|
|
37
|
+
- bm/tasks.rb
|
|
34
38
|
- CHANGELOG
|
|
35
|
-
- examples/args.rb
|
|
36
39
|
- examples/arguments.rb
|
|
37
40
|
- examples/basic.rb
|
|
38
41
|
- examples/complex.rb
|
|
@@ -41,11 +44,28 @@ files:
|
|
|
41
44
|
- examples/default_proc.rb
|
|
42
45
|
- examples/dependencies.rb
|
|
43
46
|
- examples/file.rb
|
|
44
|
-
- examples/flags.rb
|
|
45
47
|
- examples/helpers.rb
|
|
46
48
|
- examples/invoking.rb
|
|
47
|
-
- examples/options.rb
|
|
48
49
|
- examples/script.rb
|
|
50
|
+
- examples/setup.rb
|
|
51
|
+
- examples/task_arguments.rb
|
|
52
|
+
- features/arguments.feature
|
|
53
|
+
- features/basic.feature
|
|
54
|
+
- features/builtin_arguments.feature
|
|
55
|
+
- features/complex.feature
|
|
56
|
+
- features/configuration.feature
|
|
57
|
+
- features/default.feature
|
|
58
|
+
- features/default_proc.feature
|
|
59
|
+
- features/dependencies.feature
|
|
60
|
+
- features/env.rb
|
|
61
|
+
- features/executable.feature
|
|
62
|
+
- features/file.feature
|
|
63
|
+
- features/helpers.feature
|
|
64
|
+
- features/invoking.feature
|
|
65
|
+
- features/script.feature
|
|
66
|
+
- features/setup.feature
|
|
67
|
+
- features/steps.rb
|
|
68
|
+
- features/task_arguments.feature
|
|
49
69
|
- lib/nake/args.rb
|
|
50
70
|
- lib/nake/argv.rb
|
|
51
71
|
- lib/nake/colors.rb
|
|
@@ -77,7 +97,6 @@ files:
|
|
|
77
97
|
- spec/spec.opts
|
|
78
98
|
- spec/spec_helper.rb
|
|
79
99
|
- tasks.rb
|
|
80
|
-
- tmp/restart.txt
|
|
81
100
|
- TODO.txt
|
|
82
101
|
has_rdoc: true
|
|
83
102
|
homepage: http://github.com/botanicus/nake
|
|
@@ -85,7 +104,8 @@ licenses: []
|
|
|
85
104
|
|
|
86
105
|
post_install_message: |-
|
|
87
106
|
=== Changes in the last Nake ===
|
|
88
|
-
-
|
|
107
|
+
- Cucumber features
|
|
108
|
+
- DSL helper rule
|
|
89
109
|
rdoc_options: []
|
|
90
110
|
|
|
91
111
|
require_paths:
|
data/examples/args.rb
DELETED
data/examples/flags.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!./bin/nake --verbose
|
|
2
|
-
|
|
3
|
-
# This example document how you can change different flags
|
|
4
|
-
# - specify these flags in shebang
|
|
5
|
-
# - use API directly
|
|
6
|
-
# - ./examples/flags --verbose
|
|
7
|
-
Nake.verbose = false
|
|
8
|
-
|
|
9
|
-
task(:setup) do
|
|
10
|
-
puts "Setting environment ..."
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
task(:build, :setup) do
|
|
14
|
-
puts "Building ..."
|
|
15
|
-
end
|