toys-core 0.11.5 → 0.13.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 +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
|