run_tasks 3.2.9 → 3.3.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: 02cf0f24a6770fba830aeace49f54bc134c3ba3d20faa2c14a478fa3f969b397
4
- data.tar.gz: 95d67affde3641d9f7e1f58dcfb2fa6603d6a8d493ef842dedce3b1a2e2b262e
3
+ metadata.gz: db5998bcac4e11397fd0abb44484d48dc78ce538cd31a5768ddadf4f23a3a6ae
4
+ data.tar.gz: 8fc911ccdf1f057f3fb8c310185fdd3021eb293710b05b5cc0ce4bf16bd98c6c
5
5
  SHA512:
6
- metadata.gz: 4e832f77837870e241d085d57ea19172272250ff1126a0fc493b0c88e2f06dca7c1c6a32e1c2be454c876b2ef4e6e3d03d471c11af0df7f21ae22a31ce1f4189
7
- data.tar.gz: 360de4f489ffe5c3d9583eb87b266b8840439b2fe02e6f0a6a74e63addd6fd8be17f46aed0248af7c29091aa039eda8fd5f5f1100f8347ad0a2c6ceec56d27db
6
+ metadata.gz: 5387ed714265c8705665e5012d1186fc148c87e85d5a6441e66edabc02515eb58c62c03ba71d4451b647d2a5c02f0fbc7ac46a1d8c414734eb2803eb39222559
7
+ data.tar.gz: 42ace3eb70928ae2d509cbfa8b26f3696ba55f6cf2a797280957c98e0b7704cafefce72d2e375cc570360b896cc9d1905947d0bd8e8ec8892f7f5297e4067d66
data/CHEATSHEET.md CHANGED
@@ -163,6 +163,26 @@ task :age do
163
163
  end
164
164
  ```
165
165
 
166
+ ```rb
167
+ task :age do
168
+ age = question "What is your age?", /^\d+$/, default: "30"
169
+ end
170
+ ```
171
+
172
+ ## yesno
173
+
174
+ ```rb
175
+ task :deploy do
176
+ run :migrate if yesno "Run migrations?"
177
+ end
178
+ ```
179
+
180
+ ```rb
181
+ task :deploy do
182
+ run :migrate if yesno "Run migrations?", default: true
183
+ end
184
+ ```
185
+
166
186
  ## wait_for_interruption
167
187
 
168
188
  ```rb
@@ -7,17 +7,23 @@ module Run
7
7
  class QuestionHelper
8
8
  # @param question [String]
9
9
  # @param regex [Regexp, Nil]
10
- def initialize(question, regex = nil)
10
+ # @param default [String, Nil]
11
+ def initialize(question, regex = nil, default: nil)
11
12
  raise ArgumentError.new("'question' must be a String") if !question.is_a?(String)
13
+ raise ArgumentError.new("'default' must be a String") if !default.nil? && !default.is_a?(String)
12
14
 
13
15
  @question = question
14
16
  @regex = regex
17
+ @default = default
15
18
  end
16
19
 
17
20
  # @return [any]
18
21
  def run
19
22
  TTY::Prompt.new.ask(@question) do |config|
20
23
  config.required true
24
+ if @default
25
+ config.default @default
26
+ end
21
27
  if @regex
22
28
  config.validate @regex
23
29
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tty-prompt"
4
+
5
+ module Run
6
+ module Helper
7
+ class YesnoHelper
8
+ VALIDATION = /\A(y(es)?|no?)?\z/i
9
+
10
+ # @param question [String]
11
+ # @param default [Boolean, Nil]
12
+ def initialize(question, default: nil)
13
+ raise ArgumentError.new("'question' must be a String") if !question.is_a?(String)
14
+ raise ArgumentError.new("'default' must be a Boolean") if ![nil, true, false].include?(default)
15
+
16
+ @question = question
17
+ @default = default
18
+ end
19
+
20
+ # @return [Boolean]
21
+ def run
22
+ answer = TTY::Prompt.new.ask("#{@question} #{suffix}") do |config|
23
+ config.required @default.nil?
24
+ config.validate VALIDATION, "Please answer 'y' or 'n'."
25
+ end
26
+ return @default if answer.nil?
27
+
28
+ answer.downcase.start_with?("y")
29
+ end
30
+
31
+ private
32
+
33
+ # @return [String]
34
+ def suffix
35
+ case @default
36
+ when true then "[Yn]"
37
+ when false then "[yN]"
38
+ else "[yn]"
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: run_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.9
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aurélien Delogu
@@ -93,6 +93,7 @@ files:
93
93
  - src/run/helper/pause_helper.rb
94
94
  - src/run/helper/question_helper.rb
95
95
  - src/run/helper/wait_for_interruption_helper.rb
96
+ - src/run/helper/yesno_helper.rb
96
97
  - src/run/task/block_task.rb
97
98
  - src/run/task/system_task.rb
98
99
  homepage: https://github.com/pyrsmk/run