rake-sh 1.0.3 → 1.1.0

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.
Files changed (6) hide show
  1. data/BANNER +6 -0
  2. data/VERSION +1 -1
  3. data/bin/rake-sh +25 -1
  4. data/lib/rake/sh.rb +24 -3
  5. data/rake-sh.gemspec +2 -1
  6. metadata +3 -2
data/BANNER ADDED
@@ -0,0 +1,6 @@
1
+ _____ _ _
2
+ | __ \ | | | |
3
+ | |__) |__ _| | __ ___ ______ ___| |__
4
+ | _ // _` | |/ // _ \______/ __| '_ \
5
+ | | \ \ (_| | <| __/ \__ \ | | |
6
+ |_| \_\__,_|_|\_\\___| |___/_| |_|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.3
1
+ 1.1.0
@@ -1,5 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  $:.unshift File.expand_path('../../lib', __FILE__)
4
+ require 'optparse'
4
5
  require 'rake/sh'
5
- Rake::Sh.start(ARGV)
6
+
7
+ version = File.read(File.expand_path('../../VERSION', __FILE__))
8
+ no_eager_tasks = false
9
+
10
+ opt = OptionParser.new
11
+ opt.banner = "Usage: #{opt.program_name} [options] [eager_tasks]\n" +
12
+ "(By default, the task named 'environment' will be invoked eagerly.)"
13
+ opt.version = version
14
+ opt.on('-n', '--no-eager-task', 'specify no eager task') { no_eager_tasks = true }
15
+ opt.parse!(ARGV)
16
+
17
+ if no_eager_tasks
18
+ eager_tasks = []
19
+ else
20
+ if ARGV.empty?
21
+ eager_tasks = ['environment']
22
+ else
23
+ eager_tasks = ARGV
24
+ end
25
+ end
26
+
27
+ puts "\e[31m" + File.read(File.expand_path('../../BANNER', __FILE__)) + " v#{version}\e[0m\n\n"
28
+
29
+ Rake::Sh.start(eager_tasks)
@@ -1,5 +1,6 @@
1
1
  require 'readline'
2
2
  require 'rake'
3
+ require 'stringio'
3
4
  require 'rake/sh/command'
4
5
  require 'rake/sh/commands'
5
6
 
@@ -8,7 +9,7 @@ module Rake
8
9
  class << self
9
10
  def start(eager_tasks = [])
10
11
  rake_init
11
- eager_tasks.each { |task| ::Rake.application[task].invoke }
12
+ eager_tasks.each { |task| invoke_eager_tasks(task) }
12
13
  setup_readline
13
14
 
14
15
  while buf = Readline.readline("rake> ", true)
@@ -45,14 +46,34 @@ module Rake
45
46
  end
46
47
 
47
48
  def rake_init
49
+ $stdout = StringIO.new
48
50
  Rake.application = Rake::Application.new
49
51
  Rake.application.init
50
52
  Rake.application.load_rakefile
53
+ ensure
54
+ $stdout = STDOUT
51
55
  end
52
56
 
53
- def invoke(name)
57
+ def invoke_eager_tasks(name)
58
+ Rake.application[name].invoke
59
+ puts "\e[44mInvoke task eagerly: `#{name}`\e[0m"
60
+ rescue
61
+ end
62
+
63
+ def invoke(line)
54
64
  start = Time.now
55
- Process.waitpid(fork { ::Rake.application[name].invoke })
65
+
66
+ name, *args = line.split(/\s+/)
67
+ pid = fork do
68
+ args.each do |arg|
69
+ env, value = arg.split('=')
70
+ next unless env && !env.empty? && value && !value.empty?
71
+ ENV[env] = value
72
+ end
73
+ Rake.application[name].invoke
74
+ end
75
+ Process.waitpid(pid)
76
+
56
77
  puts "\e[34m#{Time.now - start}sec\e[0m"
57
78
  end
58
79
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rake-sh}
8
- s.version = "1.0.3"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["jugyo"]
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.files = [
22
22
  ".document",
23
23
  ".rspec",
24
+ "BANNER",
24
25
  "Gemfile",
25
26
  "Gemfile.lock",
26
27
  "LICENSE.txt",
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rake-sh
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.3
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - jugyo
@@ -69,6 +69,7 @@ extra_rdoc_files:
69
69
  files:
70
70
  - .document
71
71
  - .rspec
72
+ - BANNER
72
73
  - Gemfile
73
74
  - Gemfile.lock
74
75
  - LICENSE.txt
@@ -96,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
97
  requirements:
97
98
  - - ">="
98
99
  - !ruby/object:Gem::Version
99
- hash: -3276064031588402337
100
+ hash: 1919542078481597180
100
101
  segments:
101
102
  - 0
102
103
  version: "0"