spud 0.1.7 → 0.1.8

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
  SHA256:
3
- metadata.gz: f882ef853548e61f484e4ad023504e4f009b47f996a82224ca80a98aa2a80543
4
- data.tar.gz: 50872d4b06b981265215a8b799799045dbc2a063f64cbb751c1bbea0725f562c
3
+ metadata.gz: 11082937f67da737d314d222eccb34f438de26fa5d0bb94186b1f99d89d29705
4
+ data.tar.gz: 4f6965f11798cb8af28f4f298954efd5ba831e8c8387ce63f642f02cd112e7c6
5
5
  SHA512:
6
- metadata.gz: 2d2b3e8a5cdf1e54d9a7963967d3e22dd59e7c8c1241c97adf9d9ba866ac9c1c0367f5c54c315b47b176740db4af4a176345c25eece992d20719b0a37cc46f64
7
- data.tar.gz: bf6554a77f12d675e37abd67ecbdc8f3f18bdf019aeab63e8ce6df418c239d588517c1b6b1f2890480ac616c7d32876e0fd74a5e9672b3f51ea39e582c8d9309
6
+ metadata.gz: fd4916032c22a3ea7268b38e418742fc265c7ef87c55acb2571cbfb74d7897035e2b819c945dde94c26931cd2766ef39e81cf9e5141745e26b430c096a9483d6
7
+ data.tar.gz: 9667b5d3c7f3baf7b0bdce2f2886ee501e00595478b76c40b7bd3106c6d5825eae4a28f8aaae941a759ff8f7e67b35f71a08220c96bfbe252b46b8f914e684d2
@@ -3,33 +3,31 @@ require_relative 'rule'
3
3
  module Spud::BuildTools
4
4
  module SpudBuild
5
5
  class FileContext
6
- attr_reader :rules
6
+ attr_reader :__rules
7
7
 
8
8
  def initialize(spud, filename)
9
- @spud = spud
10
- @filename = filename
11
- @rules = {}
9
+ @__spud = spud
10
+ @__filename = filename
11
+ @__rules = {}
12
+ end
13
+
14
+ def require_relative(name)
15
+ require(name)
12
16
  end
13
17
 
14
18
  def rule(name, *args, &block)
15
19
  files = args.select { |arg| arg.is_a?(String) }
16
20
  deps = args.select { |arg| arg.is_a?(Hash) }.reduce({}) { |hash, dep| hash.merge(dep) }
17
21
 
18
- name = prefix_rule(name)
19
- @rules[name] = Rule.new(@spud, self, @filename, name, files, deps, block)
22
+ prefix = @__filename == 'Spudfile' ? '' : "#{File.basename(@__filename, '.rb')}."
23
+ name = "#{prefix}#{name}"
24
+
25
+ @__rules[name] = Rule.new(@__spud, self, @__filename, name, files, deps, block)
20
26
  end
21
27
 
22
28
  def method_missing(name, *args, &block)
23
29
  rule(name, *args, &block)
24
30
  end
25
-
26
- def prefix_rule(name)
27
- "#{prefix}#{name}"
28
- end
29
-
30
- def prefix
31
- @prefix ||= @filename == 'Spudfile' ? '' : "#{File.basename(@filename, '.rb')}."
32
- end
33
31
  end
34
32
  end
35
33
  end
@@ -22,11 +22,7 @@ module Spud::BuildTools
22
22
 
23
23
  def sh?(cmd)
24
24
  puts cmd
25
-
26
- out = Spud::Shell.cmd(cmd)
27
- puts out unless out.empty?
28
-
29
- out
25
+ Spud::Shell.new(cmd)
30
26
  end
31
27
 
32
28
  def shh(cmd)
@@ -37,10 +33,7 @@ module Spud::BuildTools
37
33
  end
38
34
 
39
35
  def shh?(cmd)
40
- out = Spud::Shell.cmd(cmd)
41
- puts out unless out.empty?
42
-
43
- out
36
+ Spud::Shell.new(cmd)
44
37
  end
45
38
 
46
39
  def shhh(cmd)
@@ -51,7 +44,7 @@ module Spud::BuildTools
51
44
  end
52
45
 
53
46
  def shhh?(cmd)
54
- Spud::Shell.cmd(cmd)
47
+ Spud::Shell.new(cmd, silent: true)
55
48
  end
56
49
 
57
50
  def invoke(name, *args, **kwargs)
@@ -14,9 +14,12 @@ module Spud::BuildTools
14
14
  filenames.each do |filename|
15
15
  source = File.read(filename)
16
16
  @ctx = FileContext.new(@spud, filename)
17
+
18
+ $LOAD_PATH << File.dirname(filename)
17
19
  @ctx.instance_eval(source)
20
+ $LOAD_PATH.pop
18
21
 
19
- @rules.merge!(@ctx.rules)
22
+ @rules.merge!(@ctx.__rules)
20
23
  end
21
24
  end
22
25
  end
@@ -1,14 +1,33 @@
1
+ require 'open3'
2
+
1
3
  module Spud
2
4
  class Shell < String
3
5
  attr_accessor :status
4
6
 
5
- def self.cmd(cmd)
6
- new(`#{cmd}`, $?)
7
+ def initialize(cmd, silent: false)
8
+ @pid = nil
9
+ @status = nil
10
+ output = StringIO.new
11
+
12
+ Open3.popen3(cmd) do |_, stdout, _, thread|
13
+ @pid = thread.pid
14
+
15
+ begin
16
+ while line = stdout.gets
17
+ puts line unless silent
18
+ output.puts line
19
+ end
20
+ rescue Interrupt
21
+ exit
22
+ end
23
+ end
24
+
25
+ @status = $?
26
+ super(output.string)
7
27
  end
8
28
 
9
- def initialize(output, status)
10
- super(output)
11
- @status = status
29
+ def kill!
30
+ Process.kill('HUP', @pid)
12
31
  end
13
32
  end
14
33
  end
@@ -35,11 +35,6 @@ module Spud
35
35
  rescue BuildTools::SpudBuild::ShellError => e
36
36
  raise e if options[:debug]
37
37
 
38
- rescue Error => e
39
- raise e if options[:debug]
40
- puts e.message
41
- exit 1
42
-
43
38
  rescue => e
44
39
  raise e if options[:debug]
45
40
  puts e.message
@@ -118,7 +113,7 @@ module Spud
118
113
  help.puts 'options:'
119
114
  help.puts ' -h, --help show this help dialog dialog'
120
115
  help.puts ' -v, --version show spud version'
121
- help.puts ' -w, --watch <files> show spud version'
116
+ help.puts ' -w, --watch <files> watch files for changes'
122
117
  help.puts ' --debug run in debug mode'
123
118
 
124
119
  puts help.string
@@ -1,3 +1,3 @@
1
1
  module Spud
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Booth