beaver-build 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/lib/beaver.rb +13 -0
  3. data/lib/command.rb +10 -0
  4. data/lib/file.rb +3 -0
  5. data/lib/sh.rb +19 -2
  6. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa3e53273d2fd49984ac532f522eefad45a60b53ed8ee79e8f8ca4db819f43b9
4
- data.tar.gz: 37b8f8c9e771c9f265096fa9adddc935f77d2592250a15ade2daf6b19a24fe17
3
+ metadata.gz: f4bb2de97dfff1bc417996a2af8f02142dc621202bbfb9d802d1c3eb10b51c60
4
+ data.tar.gz: f63c62063efc3b51d105a753f65bd9f6d86df1fb7ae81b0b9a8a1804e4a47650
5
5
  SHA512:
6
- metadata.gz: 6190cb42ae9716e86244ee74a0959bb6fd48b0c7b2a4e45e40585583bec89259044948ce21efe7fabefec41256cdab3b502e745fdc0ddd77b484b301a3e5e522
7
- data.tar.gz: '00930de6654e5ea1db3769a59d38d6602b6d50c70cc2e6623968b35007134895f2dab9781c98fbfe880beb9b2593e077b35bfdd05963a4fde7a1ce216c18d875'
6
+ metadata.gz: 0ec0602f51e96e4ecd4101ca4116b79811b2b64e5976fd1f22a2c5254b46d9c278a64e711cc0701fd7f50121dd81f3c66c46d9581667106a76901f37469c3cc3
7
+ data.tar.gz: 9c18afd6a0c36b2fae88d656464b282f517b3401f610e379fea517615fb9e403c26ffed4b6343b65edbe8901944b40a0331bab09de456d3ddd2022ac22bd5c5c
data/lib/beaver.rb CHANGED
@@ -67,11 +67,23 @@ class Beaver
67
67
  _cmd.call
68
68
  end
69
69
 
70
+ # Run this command when it is called, no matter if its dependencies did not change
71
+ def must_run cmd
72
+ cmd = @commands[cmd.to_sym]
73
+ if cmd.nil?
74
+ puts "\001b[31mNON-FATAL ERROR\001b[0m: Command #{cmd} does not exist, so `must_run` has not effect"
75
+ end
76
+ cmd.overwrite_should_run = true
77
+ end
78
+
70
79
  # Put this at the end of a file
71
80
  def end
72
81
  $cache = CacheManager.new # load cache file
73
82
 
74
83
  command = ARGV[0] || @mainCommand
84
+ if command == "--" # passing arguments to be processed by the builld file -> pass "--" as the command to specify the default
85
+ command = @mainCommand
86
+ end
75
87
  self.call command
76
88
 
77
89
  $cache.save # save cache file
@@ -80,6 +92,7 @@ class Beaver
80
92
  # Clean cache
81
93
  def clean
82
94
  FileUtils.rm_r @cache_loc
95
+ reset_cache
83
96
  end
84
97
  end
85
98
 
data/lib/command.rb CHANGED
@@ -3,6 +3,7 @@ require 'file.rb'
3
3
  class Command
4
4
  attr_accessor :name
5
5
  attr_accessor :fn
6
+ attr_accessor :overwrite_should_run
6
7
 
7
8
  def initialize(name, file_deps, fn)
8
9
  @name = name
@@ -10,6 +11,7 @@ class Command
10
11
  # Type: FileDep, or nil
11
12
  @file_deps = file_deps
12
13
  @fn = fn
14
+ @overwrite_should_run = false
13
15
  end
14
16
 
15
17
  # Execute the command if needed (dependency files changed)
@@ -23,6 +25,12 @@ class Command
23
25
  def call_now
24
26
  $file = nil
25
27
  $files = nil
28
+
29
+ if @file_deps.nil?
30
+ @fn.call()
31
+ return
32
+ end
33
+
26
34
  if @file_deps.type == :each
27
35
  @file_deps.files.each do |file_obj|
28
36
  $file = file_obj
@@ -37,6 +45,8 @@ class Command
37
45
  # Returns wheter the command should run, meaning if any of the depency
38
46
  # files changed
39
47
  def should_run?
48
+ return true if @overwrite_should_run
49
+
40
50
  if changed? "__BEAVER__CONFIG__", $PROGRAM_NAME
41
51
  # Ruby script itself changed
42
52
  # TODO: does not account for dependencies of the script (probably uncommon though)
data/lib/file.rb CHANGED
@@ -78,6 +78,9 @@ class CacheManager
78
78
 
79
79
  def save
80
80
  packed = MessagePack.pack(@files)
81
+ unless Dir.exist? $beaver.cache_loc
82
+ Dir.mkdir $beaver.cache_loc
83
+ end
81
84
  File.binwrite($beaver.file_cache_file, packed)
82
85
  end
83
86
  end
data/lib/sh.rb CHANGED
@@ -10,14 +10,21 @@ def sh(strcmd)
10
10
  end
11
11
  end
12
12
 
13
- if strcmd.is_a? SilentAll
13
+ if strcmd.is_a?(SilentAll) || strcmd.is_a?(SilentOutput)
14
14
  `#{strcmd}`
15
15
  else
16
16
  puts `#{strcmd}`
17
17
  end
18
18
 
19
19
  if $beaver.has(:e)
20
- exit($?.exitstatus) if $?.exitstatus != 0
20
+ if $?.to_i != 0
21
+ if $?.exitstatus.nil?
22
+ puts $?
23
+ end
24
+ exit($?.exitstatus || -1)
25
+ end
26
+ elsif $?.to_i != 0 && $?.exitstatus.nil?
27
+ puts $?
21
28
  end
22
29
  end
23
30
 
@@ -31,6 +38,11 @@ SilentAll = Struct.new(:strcmd) do
31
38
  strcmd
32
39
  end
33
40
  end
41
+ SilentOutput = Struct.new(:strcmd) do
42
+ def to_s
43
+ strcmd
44
+ end
45
+ end
34
46
 
35
47
  # Do not print the command
36
48
  def silent(strcmd)
@@ -41,3 +53,8 @@ end
41
53
  def full_silent(strcmd)
42
54
  return SilentAll.new(strcmd)
43
55
  end
56
+
57
+ # Do not print out the output of the command
58
+ def output_silent(strcmd)
59
+ return SilentOutput.new(strcmd)
60
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaver-build
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Everaert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-09 00:00:00.000000000 Z
11
+ date: 2023-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -26,7 +26,7 @@ dependencies:
26
26
  version: 1.6.0
27
27
  description: |-
28
28
  Beaver is an easy to understand build tool with a lot of capabilities.
29
- Documentation and examples on [github](https://github.com/jomy10/beaver) (https://github.com/jomy10/beaver).
29
+ Documentation and examples on [github](https://github.com/jomy10/beaver).
30
30
  email:
31
31
  executables:
32
32
  - beaver