claide 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +45 -0
- data/.rubocop.yml +3 -0
- data/.rubocop_cocoapods.yml +37 -19
- data/.rubocop_todo.yml +2 -2
- data/CHANGELOG.md +11 -0
- data/Gemfile +5 -6
- data/Gemfile.lock +26 -21
- data/{README.markdown → README.md} +15 -18
- data/Rakefile +1 -1
- data/claide.gemspec +3 -1
- data/lib/claide/argv.rb +14 -14
- data/lib/claide/command/plugin_manager.rb +18 -17
- data/lib/claide/gem_version.rb +7 -0
- data/lib/claide.rb +0 -6
- metadata +11 -10
- data/.travis.yml +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce49a146b536fe694eeb4e10a947a0aad328e0adf3b577e6e2892a2d5d731797
|
4
|
+
data.tar.gz: 70621a02b23f1180c3fc17de21facb3d58832588e30059e1e430b64bed0baaa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd15350e4cf9889e67194308993ce16fa5bc9a1d783dd13d4f8a215b4e2bda0535b97ac21092ea828bf07911deb4d0a7a958d981fea38969a47d0e6d6c984908
|
7
|
+
data.tar.gz: 48366facfd7cb166c14ceddc4c7918e040de1e8a0a89401ef94544fd35d7c22d1045471c7512c6f1dea36cb6b37acde286adbb1b7787edf8aab2f02c1b2da76d
|
@@ -0,0 +1,45 @@
|
|
1
|
+
name: ci
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
|
6
|
+
push:
|
7
|
+
branches:
|
8
|
+
- master
|
9
|
+
- '*-stable'
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
ci:
|
13
|
+
name: Ruby ${{ matrix.ruby.name }}
|
14
|
+
|
15
|
+
runs-on: ubuntu-20.04
|
16
|
+
|
17
|
+
strategy:
|
18
|
+
fail-fast: false
|
19
|
+
|
20
|
+
matrix:
|
21
|
+
ruby:
|
22
|
+
- { name: "2.3", value: 2.3.8 }
|
23
|
+
- { name: "2.4", value: 2.4.10 }
|
24
|
+
- { name: "2.5", value: 2.5.9 }
|
25
|
+
- { name: "2.6", value: 2.6.9 }
|
26
|
+
- { name: "2.7", value: 2.7.5 }
|
27
|
+
- { name: "3.0", value: 3.0.3 }
|
28
|
+
- { name: "3.1", value: 3.1.0 }
|
29
|
+
|
30
|
+
steps:
|
31
|
+
- uses: actions/checkout@v2
|
32
|
+
|
33
|
+
- name: Setup ruby
|
34
|
+
uses: ruby/setup-ruby@v1
|
35
|
+
with:
|
36
|
+
ruby-version: ${{ matrix.ruby.value }}
|
37
|
+
bundler-cache: true
|
38
|
+
|
39
|
+
- name: Run Test
|
40
|
+
run: bundle exec rake spec
|
41
|
+
|
42
|
+
- name: Test & publish code coverage
|
43
|
+
uses: paambaati/codeclimate-action@v3.0.0
|
44
|
+
env:
|
45
|
+
CC_TEST_REPORTER_ID: 46c8b29dd6711f35704e7c5a541486cbbf2cff8b2df8ce755bfc09917d3c1cbb
|
data/.rubocop.yml
CHANGED
data/.rubocop_cocoapods.yml
CHANGED
@@ -9,33 +9,33 @@ AllCops:
|
|
9
9
|
|
10
10
|
# At the moment not ready to be used
|
11
11
|
# https://github.com/bbatsov/rubocop/issues/947
|
12
|
-
Documentation:
|
12
|
+
Style/Documentation:
|
13
13
|
Enabled: false
|
14
14
|
|
15
15
|
#- CocoaPods -----------------------------------------------------------------#
|
16
16
|
|
17
17
|
# We adopted raise instead of fail.
|
18
|
-
SignalException:
|
18
|
+
Style/SignalException:
|
19
19
|
EnforcedStyle: only_raise
|
20
20
|
|
21
21
|
# They are idiomatic
|
22
|
-
AssignmentInCondition:
|
22
|
+
Lint/AssignmentInCondition:
|
23
23
|
Enabled: false
|
24
24
|
|
25
25
|
# Allow backticks
|
26
|
-
AsciiComments:
|
26
|
+
Style/AsciiComments:
|
27
27
|
Enabled: false
|
28
28
|
|
29
29
|
# Indentation clarifies logic branches in implementations
|
30
|
-
IfUnlessModifier:
|
30
|
+
Style/IfUnlessModifier:
|
31
31
|
Enabled: false
|
32
32
|
|
33
33
|
# No enforced convention here.
|
34
|
-
SingleLineBlockParams:
|
34
|
+
Style/SingleLineBlockParams:
|
35
35
|
Enabled: false
|
36
36
|
|
37
37
|
# We only add the comment when needed.
|
38
|
-
Encoding:
|
38
|
+
Style/Encoding:
|
39
39
|
Enabled: false
|
40
40
|
|
41
41
|
# Having these make it easier to *not* forget to add one when adding a new
|
@@ -43,18 +43,21 @@ Encoding:
|
|
43
43
|
Style/TrailingCommaInArguments:
|
44
44
|
EnforcedStyleForMultiline: comma
|
45
45
|
|
46
|
-
Style/
|
46
|
+
Style/TrailingCommaInArrayLiteral:
|
47
47
|
EnforcedStyleForMultiline: comma
|
48
48
|
|
49
|
-
Style/
|
49
|
+
Style/TrailingCommaInHashLiteral:
|
50
|
+
EnforcedStyleForMultiline: comma
|
51
|
+
|
52
|
+
Layout/MultilineOperationIndentation:
|
50
53
|
EnforcedStyle: indented
|
51
54
|
|
52
55
|
# Clashes with CLAide Command#validate!
|
53
|
-
GuardClause:
|
56
|
+
Style/GuardClause:
|
54
57
|
Enabled: false
|
55
58
|
|
56
59
|
# Not always desirable: lib/claide/command/plugins_helper.rb:12:15
|
57
|
-
Next:
|
60
|
+
Style/Next:
|
58
61
|
Enabled: false
|
59
62
|
|
60
63
|
# Arbitrary max lengths for classes simply do not work and enabling this will
|
@@ -93,16 +96,16 @@ Metrics/PerceivedComplexity:
|
|
93
96
|
|
94
97
|
#- CocoaPods support for Ruby 1.8.7 ------------------------------------------#
|
95
98
|
|
96
|
-
HashSyntax:
|
99
|
+
Style/HashSyntax:
|
97
100
|
EnforcedStyle: hash_rockets
|
98
101
|
|
99
|
-
Lambda:
|
102
|
+
Style/Lambda:
|
100
103
|
Enabled: false
|
101
104
|
|
102
|
-
DotPosition:
|
105
|
+
Layout/DotPosition:
|
103
106
|
EnforcedStyle: trailing
|
104
107
|
|
105
|
-
EachWithObject:
|
108
|
+
Style/EachWithObject:
|
106
109
|
Enabled: false
|
107
110
|
|
108
111
|
Style/SpecialGlobalVars:
|
@@ -111,7 +114,7 @@ Style/SpecialGlobalVars:
|
|
111
114
|
#- CocoaPods specs -----------------------------------------------------------#
|
112
115
|
|
113
116
|
# Allow for `should.match /regexp/`.
|
114
|
-
AmbiguousRegexpLiteral:
|
117
|
+
Lint/AmbiguousRegexpLiteral:
|
115
118
|
Exclude:
|
116
119
|
- spec/**/*
|
117
120
|
|
@@ -120,14 +123,29 @@ Performance/RedundantMatch:
|
|
120
123
|
- spec/**/*
|
121
124
|
|
122
125
|
# Allow `object.should == object` syntax.
|
123
|
-
Void:
|
126
|
+
Lint/Void:
|
124
127
|
Exclude:
|
125
128
|
- spec/**/*
|
126
129
|
|
127
|
-
ClassAndModuleChildren:
|
130
|
+
Style/ClassAndModuleChildren:
|
128
131
|
Exclude:
|
129
132
|
- spec/**/*
|
130
133
|
|
131
|
-
UselessComparison:
|
134
|
+
Lint/UselessComparison:
|
132
135
|
Exclude:
|
133
136
|
- spec/**/*
|
137
|
+
|
138
|
+
Lint/RaiseException:
|
139
|
+
Enabled: false
|
140
|
+
|
141
|
+
Lint/StructNewOverride:
|
142
|
+
Enabled: false
|
143
|
+
|
144
|
+
Style/HashEachMethods:
|
145
|
+
Enabled: false
|
146
|
+
|
147
|
+
Style/HashTransformKeys:
|
148
|
+
Enabled: false
|
149
|
+
|
150
|
+
Style/HashTransformValues:
|
151
|
+
Enabled: false
|
data/.rubocop_todo.yml
CHANGED
@@ -13,7 +13,7 @@ Lint/IneffectiveAccessModifier:
|
|
13
13
|
|
14
14
|
# Offense count: 1
|
15
15
|
# Cop supports --auto-correct.
|
16
|
-
Lint/
|
16
|
+
Lint/RedundantCopDisableDirective:
|
17
17
|
Exclude:
|
18
18
|
- 'spec/command/banner_spec.rb'
|
19
19
|
|
@@ -65,6 +65,6 @@ Style/ParallelAssignment:
|
|
65
65
|
|
66
66
|
# Offense count: 1
|
67
67
|
# Cop supports --auto-correct.
|
68
|
-
Style/
|
68
|
+
Style/RedundantInterpolation:
|
69
69
|
Exclude:
|
70
70
|
- 'lib/claide/command/argument_suggester.rb'
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -11,13 +11,12 @@ end
|
|
11
11
|
|
12
12
|
group :spec do
|
13
13
|
gem 'bacon'
|
14
|
-
gem 'json', '<
|
14
|
+
gem 'json', '< 3'
|
15
15
|
gem 'mocha-on-bacon'
|
16
16
|
gem 'prettybacon'
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
18
|
+
gem 'parallel', '<= 1.19.2'
|
19
|
+
gem 'rubocop', '<= 0.81.0'
|
20
|
+
gem 'rubocop-performance', '<= 1.5.2', :require => nil
|
21
|
+
gem 'simplecov'
|
23
22
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
claide (1.0
|
4
|
+
claide (1.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
ast (2.2
|
9
|
+
ast (2.4.2)
|
10
10
|
bacon (1.2.0)
|
11
|
-
codeclimate-test-reporter (0.4.1)
|
12
|
-
simplecov (>= 0.7.1, < 1.0.0)
|
13
11
|
colored (1.2)
|
14
12
|
docile (1.1.5)
|
15
|
-
ffi (1.
|
16
|
-
|
13
|
+
ffi (1.14.2)
|
14
|
+
jaro_winkler (1.5.4)
|
15
|
+
json (2.5.1)
|
17
16
|
kicker (3.0.0)
|
18
17
|
listen (~> 1.3.0)
|
19
18
|
notify (~> 0.5.2)
|
@@ -28,31 +27,36 @@ GEM
|
|
28
27
|
mocha (>= 0.13.0)
|
29
28
|
multi_json (1.10.1)
|
30
29
|
notify (0.5.2)
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
parallel (1.19.2)
|
31
|
+
parser (3.1.0.0)
|
32
|
+
ast (~> 2.4.1)
|
34
33
|
prettybacon (0.0.2)
|
35
34
|
bacon (~> 1.2)
|
36
|
-
rainbow (
|
35
|
+
rainbow (3.0.0)
|
37
36
|
rake (10.3.2)
|
38
37
|
rb-fsevent (0.9.4)
|
39
38
|
rb-inotify (0.9.5)
|
40
39
|
ffi (>= 0.5.0)
|
41
40
|
rb-kqueue (0.2.3)
|
42
41
|
ffi (>= 0.5.0)
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
rexml (3.2.5)
|
43
|
+
rubocop (0.81.0)
|
44
|
+
jaro_winkler (~> 1.5.1)
|
45
|
+
parallel (~> 1.10)
|
46
|
+
parser (>= 2.7.0.1)
|
47
|
+
rainbow (>= 2.2.2, < 4.0)
|
48
|
+
rexml
|
47
49
|
ruby-progressbar (~> 1.7)
|
48
|
-
unicode-display_width (
|
49
|
-
|
50
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
51
|
+
rubocop-performance (1.5.2)
|
52
|
+
rubocop (>= 0.71.0)
|
53
|
+
ruby-progressbar (1.11.0)
|
50
54
|
simplecov (0.9.1)
|
51
55
|
docile (~> 1.1.0)
|
52
56
|
multi_json (~> 1.0)
|
53
57
|
simplecov-html (~> 0.8.0)
|
54
58
|
simplecov-html (0.8.0)
|
55
|
-
unicode-display_width (1.0
|
59
|
+
unicode-display_width (1.8.0)
|
56
60
|
|
57
61
|
PLATFORMS
|
58
62
|
ruby
|
@@ -60,15 +64,16 @@ PLATFORMS
|
|
60
64
|
DEPENDENCIES
|
61
65
|
bacon
|
62
66
|
claide!
|
63
|
-
codeclimate-test-reporter
|
64
67
|
colored
|
65
|
-
json (<
|
68
|
+
json (< 3)
|
66
69
|
kicker
|
67
70
|
mocha-on-bacon
|
71
|
+
parallel (<= 1.19.2)
|
68
72
|
prettybacon
|
69
73
|
rake
|
70
|
-
rubocop
|
74
|
+
rubocop (<= 0.81.0)
|
75
|
+
rubocop-performance (<= 1.5.2)
|
71
76
|
simplecov
|
72
77
|
|
73
78
|
BUNDLED WITH
|
74
|
-
|
79
|
+
2.3.4
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# Hi, I’m Claide, your command-line tool aide.
|
2
2
|
|
3
|
-
[![Build Status](https://img.shields.io/
|
4
|
-
[![
|
5
|
-
[![Coverage](https://img.shields.io/codeclimate/coverage/github/CocoaPods/CLAide.svg?style=flat)](https://codeclimate.com/github/CocoaPods/CLAide)
|
3
|
+
[![Build Status](https://img.shields.io/github/workflow/status/CocoaPods/claide/ci)](https://github.com/CocoaPods/claide/actions)
|
4
|
+
[![Gem Version](https://img.shields.io/gem/v/claide)](https://rubygems.org/gems/claide)
|
6
5
|
|
7
6
|
I was born out of a need for a _simple_ option and command parser, while still
|
8
7
|
providing an API that allows you to quickly create a full featured command-line
|
@@ -28,24 +27,24 @@ by the user.
|
|
28
27
|
Working with parameters is done through the `CLAide::ARGV` class. It takes an
|
29
28
|
array of parameters and parses them as either flags, options, or arguments.
|
30
29
|
|
31
|
-
| Parameter
|
32
|
-
| :---:
|
33
|
-
| `--milk`, `--no-milk`
|
34
|
-
| `--
|
35
|
-
| `tea`
|
30
|
+
| Parameter | Description |
|
31
|
+
| :---: | :---: |
|
32
|
+
| `--milk`, `--no-milk` | A boolean ‘flag’, which may be negated. |
|
33
|
+
| `--sweetener=honey` | An ‘option’ consists of a key, a ‘=’, and a value. |
|
34
|
+
| `tea` | An ‘argument’ is just a value. |
|
36
35
|
|
37
36
|
|
38
37
|
Accessing flags, options, and arguments, with the following methods, will also
|
39
38
|
remove the parameter from the remaining unprocessed parameters.
|
40
39
|
|
41
40
|
```ruby
|
42
|
-
argv = CLAide::ARGV.new(['tea', '--no-milk', '--
|
43
|
-
argv.shift_argument
|
44
|
-
argv.shift_argument
|
45
|
-
argv.flag?('milk')
|
46
|
-
argv.flag?('milk')
|
47
|
-
argv.option('
|
48
|
-
argv.option('
|
41
|
+
argv = CLAide::ARGV.new(['tea', '--no-milk', '--sweetener=honey'])
|
42
|
+
argv.shift_argument # => 'tea'
|
43
|
+
argv.shift_argument # => nil
|
44
|
+
argv.flag?('milk') # => false
|
45
|
+
argv.flag?('milk') # => nil
|
46
|
+
argv.option('sweetener') # => 'honey'
|
47
|
+
argv.option('sweetener') # => nil
|
49
48
|
```
|
50
49
|
|
51
50
|
|
@@ -55,7 +54,7 @@ specify a default value to be used as the optional second method parameter:
|
|
55
54
|
```ruby
|
56
55
|
argv = CLAide::ARGV.new(['tea'])
|
57
56
|
argv.flag?('milk', true) # => true
|
58
|
-
argv.option('
|
57
|
+
argv.option('sweetener', 'sugar') # => 'sugar'
|
59
58
|
```
|
60
59
|
|
61
60
|
|
@@ -111,8 +110,6 @@ should not be a need to validate the parameters.
|
|
111
110
|
See the [example][example] for a illustration of how to define commands.
|
112
111
|
|
113
112
|
|
114
|
-
[travis]: https://secure.travis-ci.org/CocoaPods/CLAide
|
115
|
-
[travis-status]: https://secure.travis-ci.org/CocoaPods/CLAide.png
|
116
113
|
[docs]: http://www.rubydoc.info/github/CocoaPods/CLAide/index
|
117
114
|
[example]: https://github.com/CocoaPods/CLAide/blob/master/examples/make.rb
|
118
115
|
[report-error]: https://github.com/CocoaPods/CocoaPods/blob/054fe5c861d932219ec40a91c0439a7cfc3a420c/lib/cocoapods/command.rb#L36
|
data/Rakefile
CHANGED
@@ -28,7 +28,7 @@ begin
|
|
28
28
|
files = FileList['spec/**/*_spec.rb'].shuffle.join(' ')
|
29
29
|
sh "bundle exec bacon #{files}"
|
30
30
|
|
31
|
-
Rake::Task['rubocop'].invoke
|
31
|
+
Rake::Task['rubocop'].invoke
|
32
32
|
end
|
33
33
|
|
34
34
|
#-- Rubocop ----------------------------------------------------------------#
|
data/claide.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.unshift File.expand_path('../lib', __FILE__)
|
3
|
-
require 'claide'
|
3
|
+
require File.expand_path('../lib/claide/gem_version', __FILE__)
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "claide"
|
@@ -18,4 +18,6 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.rubygems_version = "1.6.2"
|
19
19
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
20
20
|
s.specification_version = 3 if s.respond_to? :specification_version
|
21
|
+
|
22
|
+
s.required_ruby_version = ">= 2.3.0"
|
21
23
|
end
|
data/lib/claide/argv.rb
CHANGED
@@ -38,9 +38,9 @@ module CLAide
|
|
38
38
|
#
|
39
39
|
# @example
|
40
40
|
#
|
41
|
-
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--
|
41
|
+
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--sweetener=honey'])
|
42
42
|
# argv.shift_argument # => 'tea'
|
43
|
-
# argv.remainder # => ['--no-milk', '--
|
43
|
+
# argv.remainder # => ['--no-milk', '--sweetener=honey']
|
44
44
|
#
|
45
45
|
def remainder
|
46
46
|
@entries.map do |type, (key, value)|
|
@@ -60,9 +60,9 @@ module CLAide
|
|
60
60
|
#
|
61
61
|
# @example
|
62
62
|
#
|
63
|
-
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--
|
63
|
+
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--sweetener=honey'])
|
64
64
|
# argv.shift_argument # => 'tea'
|
65
|
-
# argv.remainder! # => ['--no-milk', '--
|
65
|
+
# argv.remainder! # => ['--no-milk', '--sweetener=honey']
|
66
66
|
# argv.remainder # => []
|
67
67
|
#
|
68
68
|
def remainder!
|
@@ -74,8 +74,8 @@ module CLAide
|
|
74
74
|
#
|
75
75
|
# @example
|
76
76
|
#
|
77
|
-
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--
|
78
|
-
# argv.options # => { 'milk' => false, '
|
77
|
+
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--sweetener=honey'])
|
78
|
+
# argv.options # => { 'milk' => false, 'sweetener' => 'honey' }
|
79
79
|
#
|
80
80
|
def options
|
81
81
|
options = {}
|
@@ -149,11 +149,11 @@ module CLAide
|
|
149
149
|
#
|
150
150
|
# @example
|
151
151
|
#
|
152
|
-
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--
|
152
|
+
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--sweetener=honey'])
|
153
153
|
# argv.flag?('milk') # => false
|
154
154
|
# argv.flag?('milk') # => nil
|
155
155
|
# argv.flag?('milk', true) # => true
|
156
|
-
# argv.remainder # => ['tea', '--
|
156
|
+
# argv.remainder # => ['tea', '--sweetener=honey']
|
157
157
|
#
|
158
158
|
def flag?(name, default = nil)
|
159
159
|
delete_entry(:flag, name, default, true)
|
@@ -174,10 +174,10 @@ module CLAide
|
|
174
174
|
#
|
175
175
|
# @example
|
176
176
|
#
|
177
|
-
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--
|
178
|
-
# argv.option('
|
179
|
-
# argv.option('
|
180
|
-
# argv.option('
|
177
|
+
# argv = CLAide::ARGV.new(['tea', '--no-milk', '--sweetener=honey'])
|
178
|
+
# argv.option('sweetener') # => 'honey'
|
179
|
+
# argv.option('sweetener') # => nil
|
180
|
+
# argv.option('sweetener', 'sugar') # => 'sugar'
|
181
181
|
# argv.remainder # => ['tea', '--no-milk']
|
182
182
|
#
|
183
183
|
def option(name, default = nil)
|
@@ -251,10 +251,10 @@ module CLAide
|
|
251
251
|
#
|
252
252
|
# @example
|
253
253
|
#
|
254
|
-
# list = parse(['tea', '--no-milk', '--
|
254
|
+
# list = parse(['tea', '--no-milk', '--sweetener=honey'])
|
255
255
|
# list # => [[:arg, "tea"],
|
256
256
|
# [:flag, ["milk", false]],
|
257
|
-
# [:option, ["
|
257
|
+
# [:option, ["sweetener", "honey"]]]
|
258
258
|
#
|
259
259
|
def self.parse(argv)
|
260
260
|
entries = []
|
@@ -28,7 +28,7 @@ module CLAide
|
|
28
28
|
def self.load_plugins(plugin_prefix)
|
29
29
|
loaded_plugins[plugin_prefix] ||=
|
30
30
|
plugin_gems_for_prefix(plugin_prefix).map do |spec, paths|
|
31
|
-
spec if
|
31
|
+
spec if safe_require(paths)
|
32
32
|
end.compact
|
33
33
|
end
|
34
34
|
|
@@ -77,30 +77,31 @@ module CLAide
|
|
77
77
|
end.compact
|
78
78
|
end
|
79
79
|
|
80
|
-
#
|
80
|
+
# Requires the given paths.
|
81
81
|
# If any exception occurs it is caught and an
|
82
82
|
# informative message is printed.
|
83
83
|
#
|
84
|
-
# @param [Gem::Specification] spec
|
85
|
-
# The spec to be activated.
|
86
|
-
#
|
87
84
|
# @param [String] paths
|
88
85
|
# The paths to require.
|
89
86
|
#
|
90
|
-
# @return [Bool] Whether
|
87
|
+
# @return [Bool] Whether requiring succeeded.
|
91
88
|
#
|
92
|
-
def self.
|
93
|
-
|
94
|
-
|
89
|
+
def self.safe_require(paths)
|
90
|
+
paths.each do |path|
|
91
|
+
begin
|
92
|
+
require(path)
|
93
|
+
rescue Exception => exception # rubocop:disable RescueException
|
94
|
+
message = "\n---------------------------------------------"
|
95
|
+
message << "\nError loading plugin file `#{path}`.\n"
|
96
|
+
message << "\n#{exception.class} - #{exception.message}"
|
97
|
+
message << "\n#{exception.backtrace.join("\n")}"
|
98
|
+
message << "\n---------------------------------------------\n"
|
99
|
+
warn message.ansi.yellow
|
100
|
+
return false
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
95
104
|
true
|
96
|
-
rescue Exception => exception # rubocop:disable RescueException
|
97
|
-
message = "\n---------------------------------------------"
|
98
|
-
message << "\nError loading the plugin `#{spec.full_name}`.\n"
|
99
|
-
message << "\n#{exception.class} - #{exception.message}"
|
100
|
-
message << "\n#{exception.backtrace.join("\n")}"
|
101
|
-
message << "\n---------------------------------------------\n"
|
102
|
-
warn message.ansi.yellow
|
103
|
-
false
|
104
105
|
end
|
105
106
|
|
106
107
|
def self.full_require_paths_for(gemspec)
|
data/lib/claide.rb
CHANGED
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: claide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
8
8
|
- Fabio Pelosin
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-12 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description:
|
14
|
+
description:
|
15
15
|
email:
|
16
16
|
- eloy.de.enige@gmail.com
|
17
17
|
- fabiopelosin@gmail.com
|
@@ -19,18 +19,18 @@ executables: []
|
|
19
19
|
extensions: []
|
20
20
|
extra_rdoc_files: []
|
21
21
|
files:
|
22
|
+
- ".github/workflows/ci.yml"
|
22
23
|
- ".gitignore"
|
23
24
|
- ".kick"
|
24
25
|
- ".rubocop.yml"
|
25
26
|
- ".rubocop_cocoapods.yml"
|
26
27
|
- ".rubocop_todo.yml"
|
27
|
-
- ".travis.yml"
|
28
28
|
- ".yardopts"
|
29
29
|
- CHANGELOG.md
|
30
30
|
- Gemfile
|
31
31
|
- Gemfile.lock
|
32
32
|
- LICENSE
|
33
|
-
- README.
|
33
|
+
- README.md
|
34
34
|
- Rakefile
|
35
35
|
- claide.gemspec
|
36
36
|
- lib/claide.rb
|
@@ -44,13 +44,14 @@ files:
|
|
44
44
|
- lib/claide/command/argument_suggester.rb
|
45
45
|
- lib/claide/command/banner.rb
|
46
46
|
- lib/claide/command/plugin_manager.rb
|
47
|
+
- lib/claide/gem_version.rb
|
47
48
|
- lib/claide/help.rb
|
48
49
|
- lib/claide/informative_error.rb
|
49
50
|
homepage: https://github.com/CocoaPods/CLAide
|
50
51
|
licenses:
|
51
52
|
- MIT
|
52
53
|
metadata: {}
|
53
|
-
post_install_message:
|
54
|
+
post_install_message:
|
54
55
|
rdoc_options: []
|
55
56
|
require_paths:
|
56
57
|
- lib
|
@@ -58,15 +59,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
59
|
requirements:
|
59
60
|
- - ">="
|
60
61
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
+
version: 2.3.0
|
62
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
64
|
requirements:
|
64
65
|
- - ">="
|
65
66
|
- !ruby/object:Gem::Version
|
66
67
|
version: '0'
|
67
68
|
requirements: []
|
68
|
-
rubygems_version: 3.
|
69
|
-
signing_key:
|
69
|
+
rubygems_version: 3.2.3
|
70
|
+
signing_key:
|
70
71
|
specification_version: 3
|
71
72
|
summary: A small command-line interface framework.
|
72
73
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
dist: trusty
|
4
|
-
|
5
|
-
addons:
|
6
|
-
code_climate:
|
7
|
-
repo_token: 46c8b29dd6711f35704e7c5a541486cbbf2cff8b2df8ce755bfc09917d3c1cbb
|
8
|
-
branches:
|
9
|
-
only:
|
10
|
-
- master
|
11
|
-
- /.+-stable$/
|
12
|
-
rvm:
|
13
|
-
- 2.0.0-p647
|
14
|
-
- 2.1.10
|
15
|
-
- 2.2.9
|
16
|
-
- 2.3.8
|
17
|
-
- 2.4.5
|
18
|
-
- 2.5.3
|
19
|
-
- 2.6.2
|
20
|
-
bundler_args: --without development
|
21
|
-
before_install:
|
22
|
-
# There is a bug in travis. When using system ruby, bundler is not
|
23
|
-
# installed and causes the default install action to fail.
|
24
|
-
- if [ "$TRAVIS_RUBY_VERSION" = "system" ]; then sudo gem install "bundler:~> 1.15.0"; else gem install "bundler:~> 1.15.0"; fi
|
25
|
-
# RubyGems 2.0.14 isn't a fun time on 2.0.0p648
|
26
|
-
- if [ "$TRAVIS_RUBY_VERSION" = "system" ]; then sudo gem update --system; fi
|
27
|
-
script: bundle exec rake spec
|