toys 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8d6fa44786470e7dea559db8463b92ed619a3805aa7d586e29e0562a089381c
4
- data.tar.gz: 519cf0c80675393e82e0c0c84162259d2e731ba0235ac5959e30ebf2cfb61e4f
3
+ metadata.gz: 0b6bf7f26f6ec380fcff62d91f671dd0ac535c740c5dab496ea681f9a94ec93c
4
+ data.tar.gz: 84b17a1f483b441c3944fa5dc46a9a672b2a339b71c2b5521ce01a7fe117be28
5
5
  SHA512:
6
- metadata.gz: 0a795038540a8d44268fefe2bcea67aafb4a1c058a712a106436277917aa13edb2d560b0b10f4082f09f34775e621b682ce5dd36d1e129196d79a19c42790c2d
7
- data.tar.gz: c0d28144d730e4637cf78e581cb8eae91978dc7ed1bc1e472a7a486e004a082cf8933785cd09bcae3c0db5cdc5952cc115f6486e5e2606b1ba21e27fd943fe4a
6
+ metadata.gz: dbdc0f5c476a6bd8e46623b7d62b1263ef5e259bc1936991e31294d94083cd551ec078c30f4c05b1bbd966d34c3c49c76ab2f05b37cba68f79b8cf8565995d48
7
+ data.tar.gz: 4b46179105d491e4860418d2737c3dd190fd199a93f0cdcd7496943c2c05510d4fd0b787df0265b50a65bd962a36129258899ef4fd29faa9b609a4efc0ed37ee
@@ -1,5 +1,22 @@
1
1
  # Release History
2
2
 
3
+ ### 0.3.4 / 2018-05-14
4
+
5
+ * CHANGED: Renamed switch to flag
6
+ * CHANGED: Renamed docs: parameter again, to desc: and long_desc: to match tool desc.
7
+ * CHANGED: desc is now a single string rather than an array.
8
+ * CHANGED: accept: parameter now controls whether a switch takes a value by default
9
+ * IMPROVED: Nicer help page format
10
+ * IMPROVED: gem_build template can suppress interactive confirmation.
11
+ * IMPROVED: system update builtin can optionally ask for confirmation.
12
+ * IMPROVED: Error reporting is significantly improved.
13
+ * IMPROVED: Logger colors the header when possible.
14
+ * IMPROVED: Style support for spinner helper
15
+ * IMPROVED: Set default descriptions for flags and args
16
+ * ADDED: Alias DSL methods `required`, `optional`, and `remaining`.
17
+ * FIXED: Subtools with no desc now properly pick up the default
18
+ * FIXED: Usage errors and show-help now interact in the right way
19
+
3
20
  ### 0.3.3 / 2018-05-09
4
21
 
5
22
  * CHANGED: Renamed file_utils helper to fileutils.
@@ -29,9 +29,25 @@
29
29
 
30
30
  desc "Run multiple tools in order"
31
31
 
32
- switch(:delim, "-d", "--delim=VALUE", default: ",", docs: "Set the delimiter")
32
+ long_desc \
33
+ "The \"toys do\" builtin provides a convenient interface for running multiple tools in" \
34
+ " sequence. Provide the tools to run as arguments, separated by a delimiter (which is" \
35
+ " the string \",\" by default). Toys will run them in order, stopping if any tool" \
36
+ " returns a nonzero exit code.",
37
+ "",
38
+ "Example: Suppose you have a \"rails build\" tool and a \"deploy\" tool, each with some" \
39
+ " flags. You could run them in order, with their flags, like this:",
40
+ [" toys do rails build --staging , deploy --migrate"],
41
+ "",
42
+ "You may change the delimiter using the --delim flag. For example:",
43
+ [" toys do --delim=/ rails build --staging / deploy --migrate"]
33
44
 
34
- remaining_args(:args, docs: "Tools to run")
45
+ flag :delim, "-d", "--delim=VALUE",
46
+ default: ",",
47
+ desc: "Set the delimiter",
48
+ long_desc: "Sets the delimiter that separates tool invocations. The default value is \",\"."
49
+
50
+ remaining_args :args, desc: "A series of tools to run, separated by the delimiter"
35
51
 
36
52
  execute do
37
53
  delim = self[:delim]
@@ -29,6 +29,8 @@
29
29
 
30
30
  desc "A group of system commands for toys"
31
31
 
32
+ long_desc "Contains tools that inspect, configure, and update toys itself."
33
+
32
34
  tool "version" do
33
35
  desc "Print current toys version."
34
36
 
@@ -40,7 +42,13 @@ end
40
42
  tool "update" do
41
43
  desc "Update toys if a newer version is available."
42
44
 
45
+ long_desc "Checks rubygems for a newer version of toys. If one is available, downloads" \
46
+ " and installs it."
47
+
48
+ flag :yes, "-y", "--yes", desc: "Do not ask for interactive confirmation"
49
+
43
50
  use :exec
51
+ use :highline
44
52
 
45
53
  execute do
46
54
  logger.info "Checking rubygems for the latest toys release..."
@@ -49,7 +57,8 @@ tool "update" do
49
57
  latest_version = ::Gem::Version.new($1)
50
58
  cur_version = ::Gem::Version.new(::Toys::VERSION)
51
59
  if latest_version > cur_version
52
- logger.warn("Updating toys from #{cur_version} to #{latest_version}...")
60
+ exit(1) unless options[:yes] ||
61
+ agree("Update toys from #{cur_version} to #{latest_version}? (y/n) ")
53
62
  sh("gem install toys")
54
63
  elsif latest_version < cur_version
55
64
  logger.warn("Toys is already at experimental version #{cur_version}, which is later than" \
@@ -74,18 +74,21 @@ module Toys
74
74
  #
75
75
  BINARY_NAME = "toys".freeze
76
76
 
77
+ ##
78
+ # Short description for the standard root tool
79
+ # @return [String]
80
+ #
81
+ DEFAULT_ROOT_DESC = "Your personal command line tool.".freeze
82
+
77
83
  ##
78
84
  # Help text for the standard root tool
79
85
  # @return [String]
80
86
  #
81
- DEFAULT_ROOT_DESC =
82
- Utils::WrappableString.new(
83
- "Toys is your personal command line tool. You can add to the list of" \
84
- " commands below by writing scripts in Ruby using a simple DSL, and" \
85
- " toys will organize and document them, and make them available" \
86
- " globally or scoped to specific directories that you choose." \
87
- " For detailed information, see https://www.rubydoc.info/gems/toys"
88
- )
87
+ DEFAULT_ROOT_LONG_DESC =
88
+ "Toys is your personal command line tool. You can add to the list of commands below by" \
89
+ " writing scripts in Ruby using a simple DSL, and toys will organize and document them" \
90
+ " and make them available globally or scoped to specific directories that you choose." \
91
+ " For detailed information, see https://www.rubydoc.info/gems/toys".freeze
89
92
 
90
93
  ##
91
94
  # Create a standard CLI, configured with the appropriate paths and
@@ -135,20 +138,47 @@ module Toys
135
138
  cli
136
139
  end
137
140
 
141
+ # rubocop:disable Metrics/MethodLength
142
+
138
143
  ##
139
144
  # Returns a the middleware for the standard Toys CLI.
140
145
  #
141
146
  # @return [Array]
142
147
  #
143
148
  def self.default_middleware_stack
144
- version_displayer = Middleware::ShowVersion.root_version_displayer(::Toys::VERSION)
145
149
  [
146
- [:set_default_descriptions, default_root_desc: DEFAULT_ROOT_DESC],
147
- [:handle_usage_errors],
148
- [:show_version, version_displayer: version_displayer],
149
- [:show_usage],
150
- [:add_verbosity_switches]
150
+ [
151
+ :set_default_descriptions,
152
+ default_root_desc: DEFAULT_ROOT_DESC,
153
+ default_root_long_desc: DEFAULT_ROOT_LONG_DESC
154
+ ],
155
+ [
156
+ :show_help,
157
+ help_flags: true,
158
+ usage_flags: true,
159
+ recursive_flags: true,
160
+ search_flags: true,
161
+ allow_root_args: true
162
+ ],
163
+ [
164
+ :show_version,
165
+ version_displayer: Middleware::ShowVersion.root_version_displayer(::Toys::VERSION)
166
+ ],
167
+ [
168
+ :handle_usage_errors
169
+ ],
170
+ [
171
+ :show_help,
172
+ fallback_execution: true,
173
+ recursive_flags: true,
174
+ search_flags: true
175
+ ],
176
+ [
177
+ :add_verbosity_flags
178
+ ]
151
179
  ]
152
180
  end
181
+
182
+ # rubocop:enable Metrics/MethodLength
153
183
  end
154
184
  end
@@ -32,5 +32,5 @@ module Toys
32
32
  # Current version of the Toys command line binary
33
33
  # @return [String]
34
34
  #
35
- VERSION = "0.3.3".freeze
35
+ VERSION = "0.3.4".freeze
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Azuma
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-10 00:00:00.000000000 Z
11
+ date: 2018-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: toys-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.3
19
+ version: 0.3.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.3.3
26
+ version: 0.3.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement