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.
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-core.rb CHANGED
@@ -17,16 +17,21 @@ module Toys
17
17
  # Namespace for DSL classes. These classes provide the directives that can be
18
18
  # used in configuration files. Most are defined in {Toys::DSL::Tool}.
19
19
  #
20
- module DSL; end
20
+ module DSL
21
+ end
21
22
 
22
23
  ##
23
24
  # Namespace for standard middleware classes.
24
25
  #
25
26
  module StandardMiddleware
26
- ## @private
27
+ ##
28
+ # @private
29
+ #
27
30
  COMMON_FLAG_GROUP = :__common
28
31
 
29
- ## @private
32
+ ##
33
+ # @private
34
+ #
30
35
  def self.append_common_flag_group(tool)
31
36
  tool.add_flag_group(type: :optional, name: COMMON_FLAG_GROUP,
32
37
  desc: "Common Flags", report_collisions: false)
@@ -37,7 +42,8 @@ module Toys
37
42
  ##
38
43
  # Namespace for standard mixin classes.
39
44
  #
40
- module StandardMixins; end
45
+ module StandardMixins
46
+ end
41
47
 
42
48
  ##
43
49
  # Namespace for common utility classes.
@@ -46,7 +52,8 @@ module Toys
46
52
  # For example, before using {Toys::Utils::Exec}, you must
47
53
  # `require "toys/utils/exec"`.
48
54
  #
49
- module Utils; end
55
+ module Utils
56
+ end
50
57
 
51
58
  class << self
52
59
  ##
@@ -59,7 +66,9 @@ module Toys
59
66
  attr_accessor :executable_path
60
67
  end
61
68
 
69
+ ##
62
70
  # @private
71
+ #
63
72
  CORE_LIB_PATH = __dir__
64
73
  end
65
74
 
@@ -70,8 +79,10 @@ require "toys/compat"
70
79
  require "toys/completion"
71
80
  require "toys/context"
72
81
  require "toys/core"
82
+ require "toys/dsl/base"
73
83
  require "toys/dsl/flag"
74
84
  require "toys/dsl/flag_group"
85
+ require "toys/dsl/internal"
75
86
  require "toys/dsl/positional_arg"
76
87
  require "toys/dsl/tool"
77
88
  require "toys/errors"
@@ -83,7 +94,8 @@ require "toys/middleware"
83
94
  require "toys/mixin"
84
95
  require "toys/module_lookup"
85
96
  require "toys/positional_arg"
97
+ require "toys/settings"
86
98
  require "toys/source_info"
87
99
  require "toys/template"
88
- require "toys/tool"
100
+ require "toys/tool_definition"
89
101
  require "toys/wrappable_string"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toys-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Azuma
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-28 00:00:00.000000000 Z
11
+ date: 2022-02-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Toys-Core is the command line tool framework underlying Toys. It can
14
14
  be used to create command line executables using the Toys DSL and classes.
@@ -31,8 +31,10 @@ files:
31
31
  - lib/toys/completion.rb
32
32
  - lib/toys/context.rb
33
33
  - lib/toys/core.rb
34
+ - lib/toys/dsl/base.rb
34
35
  - lib/toys/dsl/flag.rb
35
36
  - lib/toys/dsl/flag_group.rb
37
+ - lib/toys/dsl/internal.rb
36
38
  - lib/toys/dsl/positional_arg.rb
37
39
  - lib/toys/dsl/tool.rb
38
40
  - lib/toys/errors.rb
@@ -44,6 +46,7 @@ files:
44
46
  - lib/toys/mixin.rb
45
47
  - lib/toys/module_lookup.rb
46
48
  - lib/toys/positional_arg.rb
49
+ - lib/toys/settings.rb
47
50
  - lib/toys/source_info.rb
48
51
  - lib/toys/standard_middleware/add_verbosity_flags.rb
49
52
  - lib/toys/standard_middleware/apply_config.rb
@@ -55,24 +58,28 @@ files:
55
58
  - lib/toys/standard_mixins/exec.rb
56
59
  - lib/toys/standard_mixins/fileutils.rb
57
60
  - lib/toys/standard_mixins/gems.rb
61
+ - lib/toys/standard_mixins/git_cache.rb
58
62
  - lib/toys/standard_mixins/highline.rb
59
63
  - lib/toys/standard_mixins/terminal.rb
64
+ - lib/toys/standard_mixins/xdg.rb
60
65
  - lib/toys/template.rb
61
- - lib/toys/tool.rb
66
+ - lib/toys/tool_definition.rb
62
67
  - lib/toys/utils/completion_engine.rb
63
68
  - lib/toys/utils/exec.rb
64
69
  - lib/toys/utils/gems.rb
70
+ - lib/toys/utils/git_cache.rb
65
71
  - lib/toys/utils/help_text.rb
66
72
  - lib/toys/utils/terminal.rb
73
+ - lib/toys/utils/xdg.rb
67
74
  - lib/toys/wrappable_string.rb
68
75
  homepage: https://github.com/dazuma/toys
69
76
  licenses:
70
77
  - MIT
71
78
  metadata:
72
- changelog_uri: https://dazuma.github.io/toys/gems/toys-core/v0.11.5/file.CHANGELOG.html
79
+ changelog_uri: https://dazuma.github.io/toys/gems/toys-core/v0.13.0/file.CHANGELOG.html
73
80
  source_code_uri: https://github.com/dazuma/toys/tree/main/toys-core
74
81
  bug_tracker_uri: https://github.com/dazuma/toys/issues
75
- documentation_uri: https://dazuma.github.io/toys/gems/toys-core/v0.11.5
82
+ documentation_uri: https://dazuma.github.io/toys/gems/toys-core/v0.13.0
76
83
  post_install_message:
77
84
  rdoc_options: []
78
85
  require_paths:
@@ -81,14 +88,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
88
  requirements:
82
89
  - - ">="
83
90
  - !ruby/object:Gem::Version
84
- version: 2.3.0
91
+ version: 2.4.0
85
92
  required_rubygems_version: !ruby/object:Gem::Requirement
86
93
  requirements:
87
94
  - - ">="
88
95
  - !ruby/object:Gem::Version
89
96
  version: '0'
90
97
  requirements: []
91
- rubygems_version: 3.1.4
98
+ rubygems_version: 3.1.6
92
99
  signing_key:
93
100
  specification_version: 4
94
101
  summary: Framework for creating command line executables