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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 250e5a6fa0e8c750309397b7e5607ae88ce62c62
4
- data.tar.gz: 126adc8f06374759b4d7548d4ef1d9a4843bed30
3
+ metadata.gz: 4b04ad866235694be1aabb7ddbdc9fd299037a38
4
+ data.tar.gz: 30c56f675400d65067c5e810bc8a675074995b51
5
5
  SHA512:
6
- metadata.gz: 58fbd2c5d64ded745587c7871eeb134597fccda2cffab1f8861f4c56988714eb8ad835583a1078a69e55dd691ee4b46d254222f93dd89771d9a9e061293b88bb
7
- data.tar.gz: c62d8fcc8ecb1c6af4935306fec7e1317182ad440057b113aeaf6d5cf905946ce0ebf55a96e5d6fe8e1674d24cd21803c79c4484bdebb3648f776e4dcb90d839
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
- C42::Runner.run
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}", &block
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, message = :system, recipient = Kernel)
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
- Pathname.pwd.ascend do |path|
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.reverse.each do |file|
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
@@ -1,3 +1,3 @@
1
1
  module C42
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
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.6
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-09-08 00:00:00.000000000 Z
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.5.1
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.