toys-core 0.11.5 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +62 -0
- data/LICENSE.md +1 -1
- data/README.md +5 -2
- data/docs/guide.md +1 -1
- data/lib/toys/acceptor.rb +13 -4
- data/lib/toys/arg_parser.rb +7 -7
- data/lib/toys/cli.rb +170 -120
- data/lib/toys/compat.rb +71 -23
- data/lib/toys/completion.rb +18 -6
- data/lib/toys/context.rb +24 -15
- data/lib/toys/core.rb +6 -2
- data/lib/toys/dsl/base.rb +87 -0
- data/lib/toys/dsl/flag.rb +26 -20
- data/lib/toys/dsl/flag_group.rb +18 -14
- data/lib/toys/dsl/internal.rb +206 -0
- data/lib/toys/dsl/positional_arg.rb +26 -16
- data/lib/toys/dsl/tool.rb +180 -218
- data/lib/toys/errors.rb +64 -8
- data/lib/toys/flag.rb +662 -656
- data/lib/toys/flag_group.rb +24 -10
- data/lib/toys/input_file.rb +13 -7
- data/lib/toys/loader.rb +293 -140
- data/lib/toys/middleware.rb +46 -22
- data/lib/toys/mixin.rb +10 -8
- data/lib/toys/positional_arg.rb +21 -20
- data/lib/toys/settings.rb +914 -0
- data/lib/toys/source_info.rb +147 -35
- data/lib/toys/standard_middleware/add_verbosity_flags.rb +2 -0
- data/lib/toys/standard_middleware/apply_config.rb +6 -4
- data/lib/toys/standard_middleware/handle_usage_errors.rb +1 -0
- data/lib/toys/standard_middleware/set_default_descriptions.rb +19 -18
- data/lib/toys/standard_middleware/show_help.rb +19 -5
- data/lib/toys/standard_middleware/show_root_version.rb +2 -0
- data/lib/toys/standard_mixins/bundler.rb +24 -15
- data/lib/toys/standard_mixins/exec.rb +43 -34
- data/lib/toys/standard_mixins/fileutils.rb +3 -1
- data/lib/toys/standard_mixins/gems.rb +21 -17
- data/lib/toys/standard_mixins/git_cache.rb +46 -0
- data/lib/toys/standard_mixins/highline.rb +8 -8
- data/lib/toys/standard_mixins/terminal.rb +5 -5
- data/lib/toys/standard_mixins/xdg.rb +56 -0
- data/lib/toys/template.rb +11 -9
- data/lib/toys/{tool.rb → tool_definition.rb} +292 -226
- data/lib/toys/utils/completion_engine.rb +7 -2
- data/lib/toys/utils/exec.rb +162 -132
- data/lib/toys/utils/gems.rb +85 -60
- data/lib/toys/utils/git_cache.rb +813 -0
- data/lib/toys/utils/help_text.rb +117 -37
- data/lib/toys/utils/terminal.rb +11 -3
- data/lib/toys/utils/xdg.rb +293 -0
- data/lib/toys/wrappable_string.rb +9 -2
- data/lib/toys-core.rb +18 -6
- metadata +14 -7
data/lib/toys/errors.rb
CHANGED
@@ -40,10 +40,13 @@ module Toys
|
|
40
40
|
end
|
41
41
|
|
42
42
|
##
|
43
|
-
# A wrapper exception used to provide user-oriented context for an
|
43
|
+
# A wrapper exception used to provide user-oriented context for an error
|
44
|
+
# thrown during tool execution.
|
44
45
|
#
|
45
46
|
class ContextualError < ::StandardError
|
46
|
-
##
|
47
|
+
##
|
48
|
+
# @private
|
49
|
+
#
|
47
50
|
def initialize(cause, banner,
|
48
51
|
config_path: nil, config_line: nil,
|
49
52
|
tool_name: nil, tool_args: nil)
|
@@ -54,18 +57,69 @@ module Toys
|
|
54
57
|
@config_line = config_line
|
55
58
|
@tool_name = tool_name
|
56
59
|
@tool_args = tool_args
|
60
|
+
set_backtrace(cause.backtrace)
|
57
61
|
end
|
58
62
|
|
63
|
+
##
|
64
|
+
# The underlying exception
|
65
|
+
# @return [::StandardError]
|
66
|
+
#
|
59
67
|
attr_reader :cause
|
68
|
+
|
69
|
+
##
|
70
|
+
# An overall banner message
|
71
|
+
# @return [String]
|
72
|
+
#
|
60
73
|
attr_reader :banner
|
61
74
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
75
|
+
##
|
76
|
+
# The path to the toys config file in which the error was detected
|
77
|
+
# @return [String]
|
78
|
+
#
|
79
|
+
attr_reader :config_path
|
80
|
+
|
81
|
+
##
|
82
|
+
# The line number in the toys config file in which the error was detected
|
83
|
+
# @return [Integer]
|
84
|
+
#
|
85
|
+
attr_reader :config_line
|
86
|
+
|
87
|
+
##
|
88
|
+
# The full name of the tool that was running when the error occurred
|
89
|
+
# @return [Array<String>]
|
90
|
+
#
|
91
|
+
attr_reader :tool_name
|
92
|
+
|
93
|
+
##
|
94
|
+
# The arguments passed to the tool that was running when the error occurred
|
95
|
+
# @return [Array<String>]
|
96
|
+
#
|
97
|
+
attr_reader :tool_args
|
98
|
+
|
99
|
+
##
|
100
|
+
# @private
|
101
|
+
#
|
102
|
+
attr_writer :config_path
|
103
|
+
|
104
|
+
##
|
105
|
+
# @private
|
106
|
+
#
|
107
|
+
attr_writer :config_line
|
108
|
+
|
109
|
+
##
|
110
|
+
# @private
|
111
|
+
#
|
112
|
+
attr_writer :tool_name
|
113
|
+
|
114
|
+
##
|
115
|
+
# @private
|
116
|
+
#
|
117
|
+
attr_writer :tool_args
|
66
118
|
|
67
119
|
class << self
|
68
|
-
##
|
120
|
+
##
|
121
|
+
# @private
|
122
|
+
#
|
69
123
|
def capture_path(banner, path, **opts)
|
70
124
|
yield
|
71
125
|
rescue ContextualError => e
|
@@ -85,7 +139,9 @@ module Toys
|
|
85
139
|
raise e
|
86
140
|
end
|
87
141
|
|
88
|
-
##
|
142
|
+
##
|
143
|
+
# @private
|
144
|
+
#
|
89
145
|
def capture(banner, **opts)
|
90
146
|
yield
|
91
147
|
rescue ContextualError => e
|