runfile 0.12.0.pre.rc1 → 0.12.0

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: 4ee58eaa893425817219f8fa94a2e96a7789363dc3082f3f8c520130357199e6
4
- data.tar.gz: 607dc6702aeb3b9ec09f71c88c32292c98f3a0b7c1c6dfefbfbdb1cec02e5738
3
+ metadata.gz: 79a1c61423d09207b687d93f98035c5ca6b5e9d36f7b4acc12d93ccaa817c873
4
+ data.tar.gz: 0d870a0f93a9add25113e8030a02ce99dd2ecb0ed8f42d5eddb69b520b998da0
5
5
  SHA512:
6
- metadata.gz: be7893890fc0075e964c49bf3aea294b6337bf5440f0ccea2d56a223439fa7eaa5128cad2d9e8bff57798d77ec55b5c686f10acc7726f2d7b9de6f74d55ca4b7
7
- data.tar.gz: b0e1b8aa6a11d96433c8bbcf09d92d3838ff6a7e1959b34542b16286d5248a76d0bf6f83fedb8f6520fe880d60450b65c72a052dcc79e79d4e292972de6b5ba4
6
+ metadata.gz: 387383e744bac9dbd8ab89598df2a3217a4fa58f120b60ab7c31bbbfec074ae3fee0512cdee002b740af3aa85a6cd930ddfeefbe1d14deec182ebf77d57c8ab6
7
+ data.tar.gz: ca1b2962b157454842a0050cd3bf70826509362e7b18b9ebd2c1cc863480b0ac7f7556ad9e4fed27bad22b9c11238cf6b063e57e8b1d0459607fdb791c4ea1ae
data/README.md CHANGED
@@ -84,6 +84,19 @@ Options:
84
84
  - [User Guide](https://runfile.dannyb.co/)
85
85
  - [Learn by Example](https://github.com/DannyBen/runfile/tree/master/examples#readme)
86
86
 
87
+ ## Breaking changes in 0.12.0
88
+
89
+ Note that version 0.12.0 removes several commands from the DSL.
90
+ If you were using any of the Colsole commands (`say`, `resay`, etc.), or any of
91
+ the `run`, `run_bg` commands, you will have to adjust your Runfile since they are
92
+ no longer available.
93
+
94
+ For convenience, you can simply `require runfile/compatibility` at the top of
95
+ your Runfile, to still have this functionality included.
96
+
97
+ More info and alternative solutions in
98
+ [this pull request](https://github.com/DannyBen/runfile/pull/46).
99
+
87
100
  ## Contributing / Support
88
101
 
89
102
  If you experience any issue, have a question or a suggestion, or if you wish
@@ -0,0 +1,84 @@
1
+ # This file provides a compatibility layer for version 0.12.0 so that
2
+ # all the Colsole methods (say, resay...) and ExecHandler methods
3
+ # (run, run_bg...) are still available
4
+ # Simply require 'runfile/compatibility' to have the same functionality
5
+ # as older versions.
6
+ #
7
+ # Notes:
8
+ # - You need to have the colsole gem installed
9
+ # - Requiring this file also includes it (see the end of the file).
10
+ # - This functinality will be removed in future versions
11
+ # - More info: https://github.com/DannyBen/runfile/pull/46
12
+ require 'colsole'
13
+
14
+ module Runfile
15
+ module Compatibilty
16
+ include Colsole
17
+
18
+ # Run a command, wait until it is done and continue
19
+ def run(cmd)
20
+ cmd = @before_run_block.call(cmd) if @before_run_block
21
+ return false unless cmd
22
+ say "!txtgrn!> #{cmd}" unless Runfile.quiet
23
+ system cmd
24
+ @after_run_block.call(cmd) if @after_run_block
25
+ end
26
+
27
+ # Run a command, wait until it is done, then exit
28
+ def run!(cmd)
29
+ cmd = @before_run_block.call(cmd) if @before_run_block
30
+ return false unless cmd
31
+ say "!txtgrn!> #{cmd}" unless Runfile.quiet
32
+ exec cmd
33
+ end
34
+
35
+ # Run a command in the background, optionally log to a log file and save
36
+ # the process ID in a pid file
37
+ def run_bg(cmd, pid: nil, log: '/dev/null')
38
+ cmd = @before_run_block.call(cmd) if @before_run_block
39
+ return false unless cmd
40
+ full_cmd = "exec #{cmd} >#{log} 2>&1"
41
+ say "!txtgrn!> #{full_cmd}" unless Runfile.quiet
42
+ process = IO.popen "exec #{cmd} >#{log} 2>&1"
43
+ File.write pidfile(pid), process.pid if pid
44
+ @after_run_block.call(cmd) if @after_run_block
45
+ return process.pid
46
+ end
47
+
48
+ # Stop a command started with 'run_bg'. Provide the name of he pid file you
49
+ # used in 'run_bg'
50
+ def stop_bg(pid)
51
+ file = pidfile(pid)
52
+ if File.exist? file
53
+ pid = File.read file
54
+ File.delete file
55
+ run "kill -s TERM #{pid}"
56
+ else
57
+ say "!txtred!PID file not found." unless Runfile.quiet
58
+ end
59
+ end
60
+
61
+ # Set a block to be called before each run
62
+ def before_run(&block)
63
+ @before_run_block = block
64
+ end
65
+
66
+ # Set a block to be called after each run
67
+ def after_run(&block)
68
+ @after_run_block = block
69
+ end
70
+
71
+ private
72
+
73
+ def pid_dir
74
+ defined?(Runfile.pid_dir) ? Runfile.pid_dir : nil
75
+ end
76
+
77
+ def pidfile(pid)
78
+ pid_dir ? "#{pid_dir}/#{pid}.pid" : "#{pid}.pid"
79
+ end
80
+
81
+ end
82
+ end
83
+
84
+ include Runfile::Compatibilty
@@ -1,3 +1,3 @@
1
1
  module Runfile
2
- VERSION = "0.12.0-rc1"
2
+ VERSION = "0.12.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runfile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0.pre.rc1
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-28 00:00:00.000000000 Z
11
+ date: 2021-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt
@@ -38,6 +38,7 @@ files:
38
38
  - bin/run!
39
39
  - lib/runfile.rb
40
40
  - lib/runfile/action.rb
41
+ - lib/runfile/compatibility.rb
41
42
  - lib/runfile/docopt_helper.rb
42
43
  - lib/runfile/dsl.rb
43
44
  - lib/runfile/refinements.rb
@@ -67,9 +68,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
68
  version: 2.4.0
68
69
  required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  requirements:
70
- - - ">"
71
+ - - ">="
71
72
  - !ruby/object:Gem::Version
72
- version: 1.3.1
73
+ version: '0'
73
74
  requirements: []
74
75
  rubygems_version: 3.2.25
75
76
  signing_key: