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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +62 -0
  3. data/LICENSE.md +1 -1
  4. data/README.md +5 -2
  5. data/docs/guide.md +1 -1
  6. data/lib/toys/acceptor.rb +13 -4
  7. data/lib/toys/arg_parser.rb +7 -7
  8. data/lib/toys/cli.rb +170 -120
  9. data/lib/toys/compat.rb +71 -23
  10. data/lib/toys/completion.rb +18 -6
  11. data/lib/toys/context.rb +24 -15
  12. data/lib/toys/core.rb +6 -2
  13. data/lib/toys/dsl/base.rb +87 -0
  14. data/lib/toys/dsl/flag.rb +26 -20
  15. data/lib/toys/dsl/flag_group.rb +18 -14
  16. data/lib/toys/dsl/internal.rb +206 -0
  17. data/lib/toys/dsl/positional_arg.rb +26 -16
  18. data/lib/toys/dsl/tool.rb +180 -218
  19. data/lib/toys/errors.rb +64 -8
  20. data/lib/toys/flag.rb +662 -656
  21. data/lib/toys/flag_group.rb +24 -10
  22. data/lib/toys/input_file.rb +13 -7
  23. data/lib/toys/loader.rb +293 -140
  24. data/lib/toys/middleware.rb +46 -22
  25. data/lib/toys/mixin.rb +10 -8
  26. data/lib/toys/positional_arg.rb +21 -20
  27. data/lib/toys/settings.rb +914 -0
  28. data/lib/toys/source_info.rb +147 -35
  29. data/lib/toys/standard_middleware/add_verbosity_flags.rb +2 -0
  30. data/lib/toys/standard_middleware/apply_config.rb +6 -4
  31. data/lib/toys/standard_middleware/handle_usage_errors.rb +1 -0
  32. data/lib/toys/standard_middleware/set_default_descriptions.rb +19 -18
  33. data/lib/toys/standard_middleware/show_help.rb +19 -5
  34. data/lib/toys/standard_middleware/show_root_version.rb +2 -0
  35. data/lib/toys/standard_mixins/bundler.rb +24 -15
  36. data/lib/toys/standard_mixins/exec.rb +43 -34
  37. data/lib/toys/standard_mixins/fileutils.rb +3 -1
  38. data/lib/toys/standard_mixins/gems.rb +21 -17
  39. data/lib/toys/standard_mixins/git_cache.rb +46 -0
  40. data/lib/toys/standard_mixins/highline.rb +8 -8
  41. data/lib/toys/standard_mixins/terminal.rb +5 -5
  42. data/lib/toys/standard_mixins/xdg.rb +56 -0
  43. data/lib/toys/template.rb +11 -9
  44. data/lib/toys/{tool.rb → tool_definition.rb} +292 -226
  45. data/lib/toys/utils/completion_engine.rb +7 -2
  46. data/lib/toys/utils/exec.rb +162 -132
  47. data/lib/toys/utils/gems.rb +85 -60
  48. data/lib/toys/utils/git_cache.rb +813 -0
  49. data/lib/toys/utils/help_text.rb +117 -37
  50. data/lib/toys/utils/terminal.rb +11 -3
  51. data/lib/toys/utils/xdg.rb +293 -0
  52. data/lib/toys/wrappable_string.rb +9 -2
  53. data/lib/toys-core.rb +18 -6
  54. 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 exception
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
- ## @private
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
- attr_accessor :config_path
63
- attr_accessor :config_line
64
- attr_accessor :tool_name
65
- attr_accessor :tool_args
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
- ## @private
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
- ## @private
142
+ ##
143
+ # @private
144
+ #
89
145
  def capture(banner, **opts)
90
146
  yield
91
147
  rescue ContextualError => e