dry-cli 0.5.0 → 0.5.1
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 +110 -21
- data/LICENSE +1 -1
- data/README.md +10 -12
- data/dry-cli.gemspec +21 -21
- data/lib/dry/cli.rb +39 -5
- data/lib/dry/cli/banner.rb +14 -16
- data/lib/dry/cli/command.rb +0 -10
- data/lib/dry/cli/command_registry.rb +3 -14
- data/lib/dry/cli/inflector.rb +1 -1
- data/lib/dry/cli/option.rb +8 -7
- data/lib/dry/cli/parser.rb +1 -1
- data/lib/dry/cli/registry.rb +10 -5
- data/lib/dry/cli/version.rb +1 -1
- metadata +9 -25
- data/.codeclimate.yml +0 -12
- data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +0 -10
- data/.github/ISSUE_TEMPLATE/---bug-report.md +0 -30
- data/.github/ISSUE_TEMPLATE/---feature-request.md +0 -18
- data/.github/workflows/custom_ci.yml +0 -77
- data/.github/workflows/docsite.yml +0 -34
- data/.github/workflows/sync_configs.yml +0 -34
- data/.gitignore +0 -11
- data/.rspec +0 -4
- data/.rubocop.yml +0 -95
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -29
- data/Gemfile +0 -14
- data/Rakefile +0 -16
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/docsite/source/index.html.md +0 -588
- data/script/ci +0 -51
data/lib/dry/cli/command.rb
CHANGED
@@ -352,16 +352,6 @@ module Dry
|
|
352
352
|
required_arguments
|
353
353
|
optional_arguments
|
354
354
|
] => 'self.class'
|
355
|
-
|
356
|
-
# @since 0.1.0
|
357
|
-
# @api private
|
358
|
-
attr_reader :command_name
|
359
|
-
|
360
|
-
# @since 0.1.0
|
361
|
-
# @api private
|
362
|
-
def initialize(command_name:, **)
|
363
|
-
@command_name = command_name
|
364
|
-
end
|
365
355
|
end
|
366
356
|
end
|
367
357
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'set'
|
3
4
|
require 'concurrent/hash'
|
4
5
|
|
5
6
|
module Dry
|
@@ -17,9 +18,9 @@ module Dry
|
|
17
18
|
|
18
19
|
# @since 0.1.0
|
19
20
|
# @api private
|
20
|
-
def set(name, command, aliases
|
21
|
+
def set(name, command, aliases)
|
21
22
|
node = @root
|
22
|
-
command =
|
23
|
+
command = command.new if command
|
23
24
|
name.split(/[[:space:]]/).each do |token|
|
24
25
|
node = node.put(node, token)
|
25
26
|
end
|
@@ -61,18 +62,6 @@ module Dry
|
|
61
62
|
result
|
62
63
|
end
|
63
64
|
|
64
|
-
private
|
65
|
-
|
66
|
-
# @since 0.1.0
|
67
|
-
# @api private
|
68
|
-
def command_for(name, command, **options)
|
69
|
-
if command.nil?
|
70
|
-
command
|
71
|
-
else
|
72
|
-
command.new(command_name: name, **options)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
65
|
# Node of the registry
|
77
66
|
#
|
78
67
|
# @since 0.1.0
|
data/lib/dry/cli/inflector.rb
CHANGED
data/lib/dry/cli/option.rb
CHANGED
@@ -86,7 +86,6 @@ module Dry
|
|
86
86
|
# @since 0.1.0
|
87
87
|
# @api private
|
88
88
|
#
|
89
|
-
# rubocop:disable Metrics/AbcSize
|
90
89
|
def parser_options
|
91
90
|
dasherized_name = Inflector.dasherize(name)
|
92
91
|
parser_options = []
|
@@ -100,18 +99,20 @@ module Dry
|
|
100
99
|
|
101
100
|
parser_options << Array if array?
|
102
101
|
parser_options << values if values
|
103
|
-
parser_options.unshift(
|
102
|
+
parser_options.unshift(*alias_names) if aliases.any?
|
104
103
|
parser_options << desc if desc
|
105
104
|
parser_options
|
106
105
|
end
|
107
|
-
# rubocop:enable Metrics/AbcSize
|
108
|
-
|
109
|
-
private
|
110
106
|
|
111
107
|
# @since 0.1.0
|
112
108
|
# @api private
|
113
|
-
def
|
114
|
-
aliases
|
109
|
+
def alias_names
|
110
|
+
aliases
|
111
|
+
.map { |name| name.gsub(/^-{1,2}/, '') }
|
112
|
+
.compact
|
113
|
+
.uniq
|
114
|
+
.map { |name| name.size == 1 ? "-#{name}" : "--#{name}" }
|
115
|
+
.map { |name| boolean? ? name : "#{name} VALUE" }
|
115
116
|
end
|
116
117
|
end
|
117
118
|
|
data/lib/dry/cli/parser.rb
CHANGED
@@ -32,7 +32,7 @@ module Dry
|
|
32
32
|
parsed_options = command.default_params.merge(parsed_options)
|
33
33
|
parse_required_params(command, arguments, names, parsed_options)
|
34
34
|
rescue ::OptionParser::ParseError
|
35
|
-
Result.failure("Error: \"#{
|
35
|
+
Result.failure("Error: \"#{names.last}\" was called with arguments \"#{original_arguments.join(' ')}\"") # rubocop:disable Metrics/LineLength
|
36
36
|
end
|
37
37
|
|
38
38
|
# @since 0.1.0
|
data/lib/dry/cli/registry.rb
CHANGED
@@ -74,11 +74,16 @@ module Dry
|
|
74
74
|
# end
|
75
75
|
# end
|
76
76
|
# end
|
77
|
-
def register(name, command = nil, aliases: [],
|
77
|
+
def register(name, command = nil, aliases: [], &block)
|
78
78
|
if block_given?
|
79
|
-
|
79
|
+
prefix = Prefix.new(@commands, name, aliases)
|
80
|
+
if block.arity.zero?
|
81
|
+
prefix.instance_eval(&block)
|
82
|
+
else
|
83
|
+
yield(prefix)
|
84
|
+
end
|
80
85
|
else
|
81
|
-
@commands.set(name, command, aliases
|
86
|
+
@commands.set(name, command, aliases)
|
82
87
|
end
|
83
88
|
end
|
84
89
|
|
@@ -308,9 +313,9 @@ module Dry
|
|
308
313
|
# @since 0.1.0
|
309
314
|
#
|
310
315
|
# @see Dry::CLI::Registry#register
|
311
|
-
def register(name, command, aliases: []
|
316
|
+
def register(name, command, aliases: [])
|
312
317
|
command_name = "#{prefix} #{name}"
|
313
|
-
registry.set(command_name, command, aliases
|
318
|
+
registry.set(command_name, command, aliases)
|
314
319
|
end
|
315
320
|
|
316
321
|
private
|
data/lib/dry/cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -93,26 +93,9 @@ executables: []
|
|
93
93
|
extensions: []
|
94
94
|
extra_rdoc_files: []
|
95
95
|
files:
|
96
|
-
- ".codeclimate.yml"
|
97
|
-
- ".github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md"
|
98
|
-
- ".github/ISSUE_TEMPLATE/---bug-report.md"
|
99
|
-
- ".github/ISSUE_TEMPLATE/---feature-request.md"
|
100
|
-
- ".github/workflows/custom_ci.yml"
|
101
|
-
- ".github/workflows/docsite.yml"
|
102
|
-
- ".github/workflows/sync_configs.yml"
|
103
|
-
- ".gitignore"
|
104
|
-
- ".rspec"
|
105
|
-
- ".rubocop.yml"
|
106
96
|
- CHANGELOG.md
|
107
|
-
- CODE_OF_CONDUCT.md
|
108
|
-
- CONTRIBUTING.md
|
109
|
-
- Gemfile
|
110
97
|
- LICENSE
|
111
98
|
- README.md
|
112
|
-
- Rakefile
|
113
|
-
- bin/console
|
114
|
-
- bin/setup
|
115
|
-
- docsite/source/index.html.md
|
116
99
|
- dry-cli.gemspec
|
117
100
|
- lib/dry/cli.rb
|
118
101
|
- lib/dry/cli/banner.rb
|
@@ -127,13 +110,14 @@ files:
|
|
127
110
|
- lib/dry/cli/usage.rb
|
128
111
|
- lib/dry/cli/utils/files.rb
|
129
112
|
- lib/dry/cli/version.rb
|
130
|
-
-
|
131
|
-
homepage: http://dry-rb.org
|
113
|
+
homepage: https://dry-rb.org/gems/dry-cli
|
132
114
|
licenses:
|
133
115
|
- MIT
|
134
116
|
metadata:
|
135
117
|
allowed_push_host: https://rubygems.org
|
118
|
+
changelog_uri: https://github.com/dry-rb/dry-cli/blob/master/CHANGELOG.md
|
136
119
|
source_code_uri: https://github.com/dry-rb/dry-cli
|
120
|
+
bug_tracker_uri: https://github.com/dry-rb/dry-cli/issues
|
137
121
|
post_install_message:
|
138
122
|
rdoc_options: []
|
139
123
|
require_paths:
|
@@ -142,15 +126,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
142
126
|
requirements:
|
143
127
|
- - ">="
|
144
128
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
129
|
+
version: 2.4.0
|
146
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
131
|
requirements:
|
148
132
|
- - ">="
|
149
133
|
- !ruby/object:Gem::Version
|
150
134
|
version: '0'
|
151
135
|
requirements: []
|
152
|
-
rubygems_version: 3.0.
|
136
|
+
rubygems_version: 3.0.3
|
153
137
|
signing_key:
|
154
138
|
specification_version: 4
|
155
|
-
summary:
|
139
|
+
summary: Common framework to build command line interfaces with Ruby
|
156
140
|
test_files: []
|
data/.codeclimate.yml
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: "\U0001F41B Bug report"
|
3
|
-
about: See CONTRIBUTING.md for more information
|
4
|
-
title: ''
|
5
|
-
labels: bug
|
6
|
-
assignees: ''
|
7
|
-
|
8
|
-
---
|
9
|
-
|
10
|
-
**Before you submit this: WE ONLY ACCEPT BUG REPORTS AND FEATURE REQUESTS**
|
11
|
-
|
12
|
-
For more information see `CONTRIBUTING.md`.
|
13
|
-
|
14
|
-
**Describe the bug**
|
15
|
-
|
16
|
-
A clear and concise description of what the bug is.
|
17
|
-
|
18
|
-
**To Reproduce**
|
19
|
-
|
20
|
-
Provide detailed steps to reproduce, an executable script would be best.
|
21
|
-
|
22
|
-
**Expected behavior**
|
23
|
-
|
24
|
-
A clear and concise description of what you expected to happen.
|
25
|
-
|
26
|
-
**Your environment**
|
27
|
-
|
28
|
-
- Affects my production application: **YES/NO**
|
29
|
-
- Ruby version: ...
|
30
|
-
- OS: ...
|
@@ -1,18 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: "\U0001F6E0 Feature request"
|
3
|
-
about: See CONTRIBUTING.md for more information
|
4
|
-
title: ''
|
5
|
-
labels: feature
|
6
|
-
assignees: ''
|
7
|
-
|
8
|
-
---
|
9
|
-
|
10
|
-
Summary of what the feature is supposed to do.
|
11
|
-
|
12
|
-
## Examples
|
13
|
-
|
14
|
-
Code examples showing how the feature could be used.
|
15
|
-
|
16
|
-
## Resources
|
17
|
-
|
18
|
-
Additional information, like a link to the discussion forum thread where the feature was discussed etc.
|
@@ -1,77 +0,0 @@
|
|
1
|
-
# this file is managed by dry-rb/devtools project
|
2
|
-
|
3
|
-
name: ci
|
4
|
-
|
5
|
-
on:
|
6
|
-
push:
|
7
|
-
paths:
|
8
|
-
- .github/workflows/ci.yml
|
9
|
-
- lib/**
|
10
|
-
- spec/**
|
11
|
-
- Gemfile
|
12
|
-
- "*.gemspec"
|
13
|
-
pull_request:
|
14
|
-
branches:
|
15
|
-
- master
|
16
|
-
|
17
|
-
jobs:
|
18
|
-
tests-mri:
|
19
|
-
runs-on: ubuntu-latest
|
20
|
-
strategy:
|
21
|
-
fail-fast: false
|
22
|
-
matrix:
|
23
|
-
ruby: ["2.6.x", "2.5.x", "2.4.x"]
|
24
|
-
include:
|
25
|
-
- ruby: "2.6.x"
|
26
|
-
coverage: "true"
|
27
|
-
steps:
|
28
|
-
- uses: actions/checkout@v1
|
29
|
-
- name: Set up Ruby
|
30
|
-
uses: actions/setup-ruby@v1
|
31
|
-
with:
|
32
|
-
ruby-version: ${{matrix.ruby}}
|
33
|
-
- name: Download test reporter
|
34
|
-
if: "matrix.coverage == 'true'"
|
35
|
-
run: |
|
36
|
-
mkdir -p tmp/
|
37
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
|
38
|
-
chmod +x ./tmp/cc-test-reporter
|
39
|
-
./tmp/cc-test-reporter before-build
|
40
|
-
- name: Run all tests
|
41
|
-
env:
|
42
|
-
COVERAGE: ${{matrix.coverage}}
|
43
|
-
run: |
|
44
|
-
gem install bundler
|
45
|
-
bundle install --jobs 4 --retry 3 --without tools docs benchmarks
|
46
|
-
script/ci
|
47
|
-
- name: Send coverage results
|
48
|
-
if: "matrix.coverage == 'true'"
|
49
|
-
env:
|
50
|
-
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
|
51
|
-
GIT_COMMIT_SHA: ${{github.sha}}
|
52
|
-
GIT_BRANCH: ${{github.ref}}
|
53
|
-
GIT_COMMITTED_AT: ${{github.event.head_commit.timestamp}}
|
54
|
-
run: |
|
55
|
-
GIT_BRANCH=`ruby -e "puts ENV['GITHUB_REF'].split('/', 3).last"` \
|
56
|
-
GIT_COMMITTED_AT=`ruby -r time -e "puts Time.iso8601(ENV['GIT_COMMITTED_AT']).to_i"` \
|
57
|
-
./tmp/cc-test-reporter after-build
|
58
|
-
|
59
|
-
tests-others:
|
60
|
-
runs-on: ubuntu-latest
|
61
|
-
strategy:
|
62
|
-
fail-fast: false
|
63
|
-
matrix:
|
64
|
-
image: ["jruby:9.2.8", "ruby:rc"]
|
65
|
-
container:
|
66
|
-
image: ${{matrix.image}}
|
67
|
-
steps:
|
68
|
-
- uses: actions/checkout@v1
|
69
|
-
- name: Install git
|
70
|
-
run: |
|
71
|
-
apt-get update
|
72
|
-
apt-get install -y --no-install-recommends git
|
73
|
-
- name: Run all tests
|
74
|
-
run: |
|
75
|
-
gem install bundler
|
76
|
-
bundle install --jobs 4 --retry 3 --without tools docs benchmarks
|
77
|
-
script/ci
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# this file is managed by dry-rb/devtools project
|
2
|
-
|
3
|
-
name: docsite
|
4
|
-
|
5
|
-
on:
|
6
|
-
push:
|
7
|
-
paths:
|
8
|
-
- docsite/**
|
9
|
-
- .github/workflows/docsite.yml
|
10
|
-
branches:
|
11
|
-
- master
|
12
|
-
- release-**
|
13
|
-
tags:
|
14
|
-
|
15
|
-
jobs:
|
16
|
-
update-docs:
|
17
|
-
runs-on: ubuntu-latest
|
18
|
-
steps:
|
19
|
-
- uses: actions/checkout@v1
|
20
|
-
- name: Set up Ruby
|
21
|
-
uses: actions/setup-ruby@v1
|
22
|
-
with:
|
23
|
-
ruby-version: "2.6.x"
|
24
|
-
- name: Install dependencies
|
25
|
-
run: |
|
26
|
-
gem install bundler
|
27
|
-
bundle install --jobs 4 --retry 3 --without benchmarks sql
|
28
|
-
- name: Symlink ossy
|
29
|
-
run: mkdir -p bin && ln -sf "$(bundle show ossy)/bin/ossy" bin/ossy
|
30
|
-
- name: Trigger dry-rb.org deploy
|
31
|
-
env:
|
32
|
-
GITHUB_LOGIN: dry-bot
|
33
|
-
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
|
34
|
-
run: bin/ossy github workflow dry-rb/dry-rb.org ci
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# this file is managed by dry-rb/devtools project
|
2
|
-
|
3
|
-
name: sync_configs
|
4
|
-
|
5
|
-
on:
|
6
|
-
repository_dispatch:
|
7
|
-
|
8
|
-
jobs:
|
9
|
-
sync-configs:
|
10
|
-
runs-on: ubuntu-latest
|
11
|
-
if: github.event.action == 'sync_configs'
|
12
|
-
steps:
|
13
|
-
- uses: actions/checkout@v1
|
14
|
-
- name: Update configuration files from devtools
|
15
|
-
env:
|
16
|
-
GITHUB_LOGIN: dry-bot
|
17
|
-
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
|
18
|
-
run: |
|
19
|
-
git clone https://github.com/dry-rb/devtools.git tmp/devtools
|
20
|
-
|
21
|
-
if [ -f ".github/workflows/custom_ci.yml" ]; then
|
22
|
-
rsync -av --exclude '.github/workflows/ci.yml' tmp/devtools/shared/ . ;
|
23
|
-
else
|
24
|
-
rsync -av tmp/devtools/shared/ . ;
|
25
|
-
fi
|
26
|
-
|
27
|
-
git config --local user.email "dry-bot@dry-rb.org"
|
28
|
-
git config --local user.name "dry-bot"
|
29
|
-
git add -A
|
30
|
-
git commit -m "[devtools] config sync" || echo "nothing changed"
|
31
|
-
- name: Push changes
|
32
|
-
uses: ad-m/github-push-action@master
|
33
|
-
with:
|
34
|
-
github_token: ${{ secrets.GH_PAT }}
|