tomo 0.16.0 → 0.17.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: af13c147cb9a33a4a35847911d99d23ba2f0d094834fbc8f547ad7a670e7ed31
4
- data.tar.gz: e9901154cb62048c531eae549680dbdb001a8019d68d7e32bfc800d18b18f936
3
+ metadata.gz: dfaf239a0381aeb001061664581633beaed57f0dd70afb00f46c059917404941
4
+ data.tar.gz: 90091440ac547e2d1d72f14abea0108b42fad6a96a393dca9375a44bcb4d0558
5
5
  SHA512:
6
- metadata.gz: 1dbb5d34e21b4861b2cd1e0d8b7cf281def92212beef59489e193547192dac8c42e815da4032a9d0af5fa3aec1be8488a0d02a161a26c95d2e6937bd52ad479d
7
- data.tar.gz: c8bbc999a60e7d99ed86dbfe309c90eaed8bdb0518a2d20ecb7439a251876fdd530994dbee0eae7eb29692ed3bfa0275ca2a38605d7400e197a76d1d07e5a5b9
6
+ metadata.gz: 395f0de0988086e308c786b6a0de6ef7b6915966a4fda2398b1b5fe378e055768cbf3e884154cf5fccd350355c228ca78fba1cd13323560c35f6f27a85083a0b
7
+ data.tar.gz: 26e2966999b8fd0049e5a073ed2f6f504df0be16edd587ef4fb9376427d66ea31d5a5afdece8cfaf7910b4c204f31d6ef4d590db715b8342dd3aeb33b76cf824
data/lib/tomo/console.rb CHANGED
@@ -1,33 +1,80 @@
1
+ require "forwardable"
1
2
  require "io/console"
2
3
 
3
4
  module Tomo
4
- module Console
5
+ class Console
5
6
  autoload :KeyReader, "tomo/console/key_reader"
6
7
  autoload :Menu, "tomo/console/menu"
7
8
 
8
9
  class << self
9
- def interactive?(input=$stdin)
10
- input.respond_to?(:raw) && input.respond_to?(:tty?) && input.tty?
11
- end
10
+ extend Forwardable
11
+ def_delegators :@instance, :interactive?, :prompt, :menu
12
+ end
13
+
14
+ def initialize(env=ENV, input=$stdin)
15
+ @env = env
16
+ @input = input
17
+ end
18
+
19
+ def interactive?
20
+ input.respond_to?(:raw) &&
21
+ input.respond_to?(:tty?) &&
22
+ input.tty? &&
23
+ !ci?
24
+ end
25
+
26
+ def prompt(question)
27
+ assert_interactive
28
+
29
+ print question
30
+ line = input.gets
31
+ raise_non_interactive if line.nil?
32
+
33
+ line.chomp
34
+ end
35
+
36
+ def menu(question, choices:)
37
+ assert_interactive
38
+
39
+ Menu.new(question, choices).prompt_for_selection
40
+ end
12
41
 
13
- def prompt(question)
14
- assert_interactive
42
+ private
15
43
 
16
- print question
17
- $stdin.gets.chomp
18
- end
44
+ attr_reader :env, :input
19
45
 
20
- def menu(question, choices:)
21
- assert_interactive
46
+ CI_VARS = %w[
47
+ JENKINS_HOME
48
+ JENKINS_URL
49
+ TRAVIS
50
+ CIRCLECI
51
+ CI
52
+ TEAMCITY_VERSION
53
+ GO_PIPELINE_NAME
54
+ bamboo_buildKey
55
+ GITLAB_CI
56
+ XCS
57
+ ].freeze
58
+ private_constant :CI_VARS
22
59
 
23
- Menu.new(question, choices).prompt_for_selection
24
- end
60
+ def ci?
61
+ (env.keys & CI_VARS).any?
62
+ end
63
+
64
+ def assert_interactive
65
+ raise_non_interactive unless interactive?
66
+ end
25
67
 
26
- private
68
+ def raise_non_interactive
69
+ raise "An interactive console is required" unless ci?
27
70
 
28
- def assert_interactive
29
- raise "An interactive console is required" unless interactive?
30
- end
71
+ env_var = (env.keys & CI_VARS).first
72
+ raise <<~ERROR
73
+ This appears to be a CI environment because the #{env_var} env var is set.
74
+ Tomo::Console cannot be used in a non-interactive CI environment.
75
+ ERROR
31
76
  end
32
77
  end
33
78
  end
79
+
80
+ Tomo::Console.instance_variable_set :@instance, Tomo::Console.new
@@ -3,7 +3,7 @@ require "io/console"
3
3
  require "time"
4
4
 
5
5
  module Tomo
6
- module Console
6
+ class Console
7
7
  class KeyReader
8
8
  extend Forwardable
9
9
 
@@ -2,7 +2,7 @@ require "forwardable"
2
2
  require "io/console"
3
3
 
4
4
  module Tomo
5
- module Console
5
+ class Console
6
6
  class Menu
7
7
  ARROW_UP = "\e[A".freeze
8
8
  ARROW_DOWN = "\e[B".freeze
@@ -1,5 +1,3 @@
1
- require "forwardable"
2
-
3
1
  module Tomo
4
2
  class TaskLibrary
5
3
  include TaskAPI
data/lib/tomo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tomo
2
- VERSION = "0.16.0".freeze
2
+ VERSION = "0.17.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tomo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-02 00:00:00.000000000 Z
11
+ date: 2020-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler