c42 0.0.6 → 0.0.7

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.
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.