c42 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/c42 +7 -1
- data/lib/c42/c42file.rb +31 -4
- data/lib/c42/runner.rb +26 -5
- data/lib/c42/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b04ad866235694be1aabb7ddbdc9fd299037a38
|
4
|
+
data.tar.gz: 30c56f675400d65067c5e810bc8a675074995b51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc388d875f7c8da07f68c8860aa98dc0d304f150aae0cab8eecc6093a37a5261d6f14a4447ca337d6631d12435956c470d35b1147a5d40ad9540ee42f58759d9
|
7
|
+
data.tar.gz: 2c284b9f8b6af2e3dc03dc4f414e664691b8f67214d7e0b405748bcd0f10de449e5416271fc5810e98b0b6f3335221073fce55ce46852651a0d79d0c083964b7
|
data/bin/c42
CHANGED
@@ -3,4 +3,10 @@
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)+"/../lib"))
|
4
4
|
|
5
5
|
require "c42/runner"
|
6
|
-
|
6
|
+
|
7
|
+
c42file = nil
|
8
|
+
if ARGV.count > 1 && ARGV[0] == "--c42file"
|
9
|
+
ARGV.shift # into void
|
10
|
+
c42file = ARGV.shift
|
11
|
+
end
|
12
|
+
C42::Runner.run(c42file)
|
data/lib/c42/c42file.rb
CHANGED
@@ -2,6 +2,7 @@ require "thor"
|
|
2
2
|
|
3
3
|
module C42
|
4
4
|
class C42file < ::Thor
|
5
|
+
require "tempfile"
|
5
6
|
include Thor::Actions
|
6
7
|
|
7
8
|
no_commands {
|
@@ -33,23 +34,41 @@ module C42
|
|
33
34
|
|
34
35
|
class << self
|
35
36
|
@@pkg_name = nil
|
37
|
+
@@use_cwd = nil
|
38
|
+
@@file_pwd = %x{pwd}
|
39
|
+
@@stop_here = false
|
36
40
|
|
37
41
|
alias_method :__original_desc, :desc
|
38
42
|
def desc(name, *args)
|
39
43
|
self.send(:__original_desc, *(["#{@@pkg_name}#{name}"] | (args || [])))
|
40
44
|
end
|
41
45
|
|
46
|
+
def use_cwd(&block)
|
47
|
+
@@use_cwd = true
|
48
|
+
yield
|
49
|
+
@@use_cwd = nil
|
50
|
+
end
|
51
|
+
|
52
|
+
|
42
53
|
def task(name, &block)
|
54
|
+
use_cwd = @@use_cwd
|
55
|
+
file_pwd = @@file_pwd
|
43
56
|
self.instance_eval do
|
44
|
-
define_method :"#{@@pkg_name}#{name}"
|
57
|
+
define_method :"#{@@pkg_name}#{name}" do |*args|
|
58
|
+
old_cwd = Dir.pwd
|
59
|
+
Dir.chdir(file_pwd) unless use_cwd
|
60
|
+
yield *args
|
61
|
+
Dir.chdir(old_cwd) unless use_cwd
|
62
|
+
end
|
45
63
|
end
|
46
64
|
end
|
47
65
|
|
48
|
-
def shell_task(name, command,
|
66
|
+
def shell_task(name, command, options = {})
|
67
|
+
options = {message: :system, recipient: Kernel, use_cwd: false}.merge(options || {})
|
49
68
|
task :"#{name}" do |*args|
|
50
69
|
cmd = ([command] | (args || [])).flatten
|
51
|
-
(recipient).send(
|
52
|
-
message,
|
70
|
+
(options[:recipient]).send(
|
71
|
+
options[:message],
|
53
72
|
*(
|
54
73
|
command.is_a?(String) ? [cmd.join(" ")] : cmd
|
55
74
|
)
|
@@ -64,6 +83,14 @@ module C42
|
|
64
83
|
@@pkg_name = nil
|
65
84
|
end
|
66
85
|
end
|
86
|
+
|
87
|
+
def stop_here!
|
88
|
+
@@stop_here = true
|
89
|
+
end
|
90
|
+
|
91
|
+
def stopped_here?
|
92
|
+
@@stop_here
|
93
|
+
end
|
67
94
|
end
|
68
95
|
end
|
69
96
|
end
|
data/lib/c42/runner.rb
CHANGED
@@ -6,20 +6,41 @@ module C42
|
|
6
6
|
class Runner
|
7
7
|
C42_HOME_FILE = File.expand_path("~/.c42/tasks.rb").freeze
|
8
8
|
|
9
|
-
def self.run
|
9
|
+
def self.run(c42file)
|
10
10
|
c42s = []
|
11
|
-
|
11
|
+
c42s << C42_HOME_FILE if File.exists?(C42_HOME_FILE)
|
12
|
+
|
13
|
+
if c42file.is_a?(String)
|
14
|
+
c42file = File.expand_path(c42file).freeze
|
15
|
+
if File.exists?(c42file)
|
16
|
+
c42s << c42file
|
17
|
+
fwd = Pathname.new(File.dirname(c42file))
|
18
|
+
else
|
19
|
+
raise "File not found: #{c42file}"
|
20
|
+
end
|
21
|
+
else
|
22
|
+
fwd = Pathname.pwd
|
23
|
+
end
|
24
|
+
|
25
|
+
fwd.ascend do |path|
|
26
|
+
c42s << Dir[Thor::Util.escape_globs(path)+"/tasks/*.c42.rb"].sort.reverse
|
12
27
|
c42s << Dir[Thor::Util.escape_globs(path)+"/tasks.rb"]
|
13
|
-
c42s << Dir[Thor::Util.escape_globs(path)+"/tasks/.c42"]
|
14
28
|
end
|
15
|
-
c42s << C42_HOME_FILE if File.exists?(C42_HOME_FILE)
|
16
29
|
c42s.flatten!
|
30
|
+
c42s.uniq!
|
31
|
+
c42s.reverse!
|
17
32
|
|
18
33
|
c42file = C42::C42file
|
19
|
-
c42s.
|
34
|
+
c42s.each do |file|
|
20
35
|
content = File.binread(file)
|
21
36
|
c42file = Class.new(c42file)
|
37
|
+
c42file.class_eval(%{
|
38
|
+
class << self
|
39
|
+
@@file_pwd = "#{File.dirname(file)}"
|
40
|
+
end
|
41
|
+
});
|
22
42
|
c42file.class_eval(content)
|
43
|
+
break if c42file.stopped_here?
|
23
44
|
end
|
24
45
|
c42file.start
|
25
46
|
end
|
data/lib/c42/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: c42
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- commit42
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -72,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
72
|
version: 2.2.0
|
73
73
|
requirements: []
|
74
74
|
rubyforge_project:
|
75
|
-
rubygems_version: 2.
|
75
|
+
rubygems_version: 2.6.13
|
76
76
|
signing_key:
|
77
77
|
specification_version: 4
|
78
78
|
summary: C42 is an internal toolkit for chores based on Thor.
|