spud 0.1.7 → 0.1.8

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