run_tasks 1.2.8 → 1.4.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.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/src/run.rb +38 -34
  3. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: '080afe6e5a7c8c122e4c1df3df0e43f881294ea254735680d912a0c373dd3a0a'
4
- data.tar.gz: c54fcd1fac401c4b66ae21d3baa0e87dbe555201e4c3d0f389088f078729b7c8
2
+ SHA1:
3
+ metadata.gz: 0de82fa9c8781db30c68460761abbef5daf589b7
4
+ data.tar.gz: 78d78c13f4dd1c98806e228eeb7187e1b32e2a04
5
5
  SHA512:
6
- metadata.gz: 6125dfb0293f121608a217519e7b587b4a348fa2d986786e32aa3f6a0152a88aed07976f8c3485b84b4dd0b40ff2f2a672dacfca9f5838295134c4df388e62aa
7
- data.tar.gz: 56611fd8558b70f6a2e59cdf778fefadea99eb924a06b9e08a434b1cb23f7345e4fe44092c009fb35d983e957ed5c51082902ed8ae2f25d10d3967a2e9a7ca85
6
+ metadata.gz: dfbe8b48bd113e771749f9821a8844fccfe84eedf9a512bbfe52c11c13b1d19636fbf0d0008af8fd13edfcd2f507f87e27e736a71fb8046d84350bb82b766b47
7
+ data.tar.gz: 152e3afd479a9bdea597a9560ef93c710b27b65724e08272b7199666a220416713aaa893fa4dd4c089a5c92e53fc4e353760e17c79dc21de97a9fa0834cdf5fe
data/src/run.rb CHANGED
@@ -27,18 +27,18 @@ HOMEPAGE = GEM&.homepage
27
27
 
28
28
  @tasks = Hash.new
29
29
 
30
- # Define a task.
30
+ # @param name [Symbol]
31
+ # @param help [String]
32
+ # @yield [*Array, **Hash]
31
33
  def task(name, help = "", &block)
32
34
  if !name.is_a?(Symbol)
33
35
  puts
34
36
  puts "First task parameter must be a symbol".red
35
- puts
36
37
  exit 6
37
38
  end
38
39
  if !help.is_a?(String)
39
40
  puts
40
41
  puts "Second task parameter must be a string".red
41
- puts
42
42
  exit 6
43
43
  end
44
44
  @tasks.store(
@@ -50,16 +50,18 @@ def task(name, help = "", &block)
50
50
  )
51
51
  end
52
52
 
53
- # Call a task.
54
- def call(name, *arguments, **options)
55
- @tasks[name][:block].call *arguments, **options
56
- end
53
+ # @param task_name_or_command [Symbol, String]
54
+ # @param arguments [Array] Optional arguments sent to the task.
55
+ # @param options [Hash] Optional options sent to the task.
56
+ def run(task_name_or_command, *arguments, **options)
57
+ if task_name_or_command.is_a?(Symbol)
58
+ @tasks[task_name_or_command][:block].call *arguments, **options
59
+ return
60
+ end
57
61
 
58
- # Run a shell command.
59
- def shell(command)
60
- puts ">".bright_blue + " #{command}".bright_white
62
+ puts ">".bright_blue + " #{task_name_or_command}".bright_white
61
63
  puts
62
- case system(command)
64
+ case system(task_name_or_command)
63
65
  when false
64
66
  puts
65
67
  puts "The command has exited with return code: #{$?.exitstatus}.".magenta
@@ -74,6 +76,7 @@ def shell(command)
74
76
  puts
75
77
  end
76
78
 
79
+ # @param uri [String]
77
80
  def require_remote(uri)
78
81
  cache_path = "/tmp/run_cache_#{Digest::MD5.hexdigest(uri)}"
79
82
  if !File.exists? cache_path
@@ -84,10 +87,10 @@ rescue => error
84
87
  puts
85
88
  puts "Unable to load #{uri}:".red
86
89
  puts "#{error.class}: #{error.message}".red
87
- puts
88
90
  exit 8
89
91
  end
90
92
 
93
+ # @param name [String]
91
94
  def require_extension(name)
92
95
  require_remote "https://pyrsmk.fra1.cdn.digitaloceanspaces.com" \
93
96
  "/run_extensions/#{name}.rb"
@@ -100,7 +103,6 @@ RUNFILE = "Runfile.rb"
100
103
  if !File.exists?(RUNFILE)
101
104
  puts
102
105
  puts "#{RUNFILE} does not exist".red
103
- puts
104
106
  exit 7
105
107
  end
106
108
 
@@ -110,7 +112,6 @@ rescue SyntaxError => error
110
112
  puts
111
113
  puts "The Runfile contains a syntax error:".red
112
114
  puts error.message.red
113
- puts
114
115
  exit 5
115
116
  end
116
117
 
@@ -140,25 +141,27 @@ end
140
141
  # Verify the latest release version.
141
142
  if VERSION && HOMEPAGE
142
143
  Thread.new do
143
- contents = URI.parse("#{HOMEPAGE}/master/run.gemspec")
144
- .open
145
- .read
146
- version = /^\s*s.version\s*=\s*"(.+?)"\s*$/.match(contents)
147
- if !version.nil?
148
- next if File.exists?("/tmp/run_dismiss_#{version}")
149
- current = VERSION.split "."
150
- latest = version[1].split "."
151
- if current[0].to_i < latest[0].to_i ||
152
- current[1].to_i < latest[1].to_i ||
153
- current[2].to_i < latest[2].to_i
154
- puts "New ".cyan + version[1].yellow + " version released!".cyan
155
- puts
156
- puts "You can upgrade with:".cyan + "gem update run_tasks".yellow
157
- puts
158
- File.write "/tmp/run_dismiss_#{version}", ""
144
+ begin
145
+ contents = URI.parse("#{HOMEPAGE}/master/run.gemspec")
146
+ .open
147
+ .read
148
+ version = /^\s*s.version\s*=\s*"(.+?)"\s*$/.match(contents)
149
+ if !version.nil?
150
+ next if File.exists?("/tmp/run_dismiss_#{version}")
151
+ current = VERSION.split "."
152
+ latest = version[1].split "."
153
+ if current[0].to_i < latest[0].to_i ||
154
+ current[1].to_i < latest[1].to_i ||
155
+ current[2].to_i < latest[2].to_i
156
+ puts "New ".cyan + version[1].yellow + " version released!".cyan
157
+ puts
158
+ puts "You can upgrade with:".cyan + "gem update run_tasks".yellow
159
+ puts
160
+ File.write "/tmp/run_dismiss_#{version}", ""
161
+ end
159
162
  end
163
+ rescue
160
164
  end
161
- rescue
162
165
  end
163
166
  end
164
167
 
@@ -167,14 +170,15 @@ name = ARGV[0].gsub('-', '_').to_sym # Auto-fix hyphens to underscores.
167
170
  if !@tasks.include?(name)
168
171
  puts
169
172
  puts "Unknown '#{name}' task".red
170
- puts
171
173
  exit 2
172
174
  end
173
175
  begin
174
- call name, *ARGV.slice(1..)
176
+ run(name, *ARGV.slice(Range.new(1, ARGV.size - 1)))
175
177
  rescue Interrupt
176
178
  exit 3
177
179
  rescue => error
178
- puts error.message.red
180
+ puts
181
+ puts "· #{error.message}".red
182
+ puts "· #{error.backtrace.first}".red
179
183
  exit 4
180
184
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: run_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aurélien Delogu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-15 00:00:00.000000000 Z
11
+ date: 2023-02-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: aurelien.delogu@gmail.com
@@ -40,7 +40,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  requirements: []
43
- rubygems_version: 3.1.6
43
+ rubyforge_project:
44
+ rubygems_version: 2.5.2
44
45
  signing_key:
45
46
  specification_version: 4
46
47
  summary: Run project tasks with ease