bundle_outdated_formatter 0.3.0 → 0.7.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 +5 -5
- data/.github/workflows/build.yml +21 -0
- data/.rspec +0 -1
- data/.rubocop.yml +26 -2
- data/.rubocop_todo.yml +8 -1
- data/.travis.yml +14 -6
- data/CHANGELOG.md +53 -0
- data/Gemfile +42 -0
- data/LICENSE.txt +1 -1
- data/README.md +47 -11
- data/appveyor.yml +35 -0
- data/bundle_outdated_formatter.gemspec +16 -11
- data/lib/bundle_outdated_formatter/cli.rb +24 -2
- data/lib/bundle_outdated_formatter/error.rb +2 -0
- data/lib/bundle_outdated_formatter/formatter.rb +18 -22
- data/lib/bundle_outdated_formatter/formatter/csv_formatter.rb +1 -1
- data/lib/bundle_outdated_formatter/formatter/html_formatter.rb +4 -3
- data/lib/bundle_outdated_formatter/formatter/markdown_formatter.rb +10 -6
- data/lib/bundle_outdated_formatter/formatter/terminal_formatter.rb +23 -0
- data/lib/bundle_outdated_formatter/formatter/tsv_formatter.rb +1 -1
- data/lib/bundle_outdated_formatter/formatter/xml_formatter.rb +6 -3
- data/lib/bundle_outdated_formatter/version.rb +1 -1
- metadata +73 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ef05c4b5bc20ce84e48b7ea4da096f84764e5e607e2b6a221e95f50c5b325dda
|
4
|
+
data.tar.gz: 01bbf8581dbafafd61e03b9978e3c329dba8be41c520aec87a89a640c6651c9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d2d8ec02f4cc426757e59ed83772b8d106a3a48bd36a95f093afe368ab706a9508f59d21c108615d6f4a3140e5c3a51b3da0b3d6ccb4d8fd09d0897fead0716
|
7
|
+
data.tar.gz: 5a04539a93fed6a743369168cd8c151c24aaad3adfaa7ff0d8fc0dd4f4b69f655163b0ff91bed833989954442586c6cf714c31cdf76b22f92dc3d0cf7b21dae7
|
@@ -0,0 +1,21 @@
|
|
1
|
+
name: build
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
runs-on: ${{ matrix.os }}
|
8
|
+
strategy:
|
9
|
+
fail-fast: false
|
10
|
+
matrix:
|
11
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
12
|
+
ruby: [2.2, 2.3, 2.4, 2.5, 2.6, 2.7, ruby-head]
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v2
|
15
|
+
- uses: ruby/setup-ruby@v1
|
16
|
+
with:
|
17
|
+
ruby-version: ${{ matrix.ruby }}
|
18
|
+
- name: Install dependencies
|
19
|
+
run: bundle install --jobs 4 --retry 3
|
20
|
+
- name: Run test
|
21
|
+
run: bundle exec rake
|
data/.rspec
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,9 +1,20 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
|
+
require: rubocop-rspec
|
2
3
|
|
3
4
|
AllCops:
|
4
5
|
DisplayCopNames: true
|
6
|
+
NewCops: enable
|
5
7
|
|
6
|
-
|
8
|
+
Bundler/DuplicatedGem:
|
9
|
+
Enabled: false
|
10
|
+
|
11
|
+
Layout/HashAlignment:
|
12
|
+
EnforcedHashRocketStyle: table
|
13
|
+
|
14
|
+
Layout/HeredocIndentation:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
Layout/LineLength:
|
7
18
|
Enabled: false
|
8
19
|
|
9
20
|
Layout/TrailingWhitespace:
|
@@ -18,5 +29,18 @@ Metrics/BlockLength:
|
|
18
29
|
- 'spec/**/*.rb'
|
19
30
|
- '*.gemspec'
|
20
31
|
|
21
|
-
|
32
|
+
Naming/HeredocDelimiterNaming:
|
33
|
+
Enabled: false
|
34
|
+
|
35
|
+
Style/FrozenStringLiteralComment:
|
36
|
+
Enabled: false
|
37
|
+
|
38
|
+
Style/IfUnlessModifier:
|
39
|
+
Exclude:
|
40
|
+
- 'Gemfile'
|
41
|
+
|
42
|
+
RSpec/FilePath:
|
43
|
+
Enabled: false
|
44
|
+
|
45
|
+
RSpec/NestedGroups:
|
22
46
|
Enabled: false
|
data/.rubocop_todo.yml
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2020-06-28 04:47:04 UTC using RuboCop version 0.86.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
# Configuration parameters: Include.
|
11
|
+
# Include: **/*.gemspec
|
12
|
+
Gemspec/RequiredRubyVersion:
|
13
|
+
Exclude:
|
14
|
+
- 'bundle_outdated_formatter.gemspec'
|
data/.travis.yml
CHANGED
@@ -1,12 +1,20 @@
|
|
1
|
-
sudo: false
|
2
1
|
language: ruby
|
3
2
|
rvm:
|
4
3
|
- 2.0.0
|
5
4
|
- 2.1.10
|
6
|
-
- 2.2.
|
7
|
-
- 2.3.
|
8
|
-
- 2.4.
|
5
|
+
- 2.2.10
|
6
|
+
- 2.3.8
|
7
|
+
- 2.4.10
|
8
|
+
- 2.5.8
|
9
|
+
- 2.6.6
|
10
|
+
- 2.7.1
|
9
11
|
- ruby-head
|
10
12
|
before_install:
|
11
|
-
-
|
12
|
-
|
13
|
+
- |
|
14
|
+
if [[ `ruby -v` =~ 2\.[0-2]\.[0-9]+ ]]; then
|
15
|
+
gem install rubygems-update -v '<3' && update_rubygems
|
16
|
+
gem install bundler -v '<2'
|
17
|
+
else
|
18
|
+
gem update --system
|
19
|
+
gem update bundler
|
20
|
+
fi
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,58 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.7.0 (2020-06-29)
|
4
|
+
|
5
|
+
### Features
|
6
|
+
|
7
|
+
* Support Bundler >= 2.1.0.pre.1 (#4)
|
8
|
+
|
9
|
+
### Miscellaneous
|
10
|
+
|
11
|
+
* Relax dependency version requirements
|
12
|
+
* Add workflows for GitHub Actions
|
13
|
+
|
14
|
+
## 0.6.0 (2019-11-24)
|
15
|
+
|
16
|
+
### Features
|
17
|
+
|
18
|
+
* Add `--column` option for `output` command (#3)
|
19
|
+
|
20
|
+
### Bug Fixes
|
21
|
+
|
22
|
+
* Fix error of Terminal format with empty outdated gems
|
23
|
+
* Fix tests against Terminal (Unicode table) format
|
24
|
+
|
25
|
+
### Miscellaneous
|
26
|
+
|
27
|
+
* Suppress output in tests
|
28
|
+
|
29
|
+
## 0.5.1 (2019-04-16)
|
30
|
+
|
31
|
+
### Bug Fixes
|
32
|
+
|
33
|
+
* Fix some dependency errors (#2)
|
34
|
+
|
35
|
+
## 0.5.0 (2018-05-26)
|
36
|
+
|
37
|
+
### Features
|
38
|
+
|
39
|
+
* Support Terminal (Unicode table) format
|
40
|
+
* Change default style of Terminal format from ASCII table to Unicode table
|
41
|
+
* Add `--style` option for `output` command
|
42
|
+
* Change single quotes in XML declaration to double quotes
|
43
|
+
* Avoid self-closing tags
|
44
|
+
|
45
|
+
### Bug Fixes
|
46
|
+
|
47
|
+
* Fix `Illegal character` exception (#1)
|
48
|
+
|
49
|
+
## 0.4.0 (2017-12-29)
|
50
|
+
|
51
|
+
### Features
|
52
|
+
|
53
|
+
* Support Terminal (ASCII table) format
|
54
|
+
* Change default format from Markdown to Terminal
|
55
|
+
|
3
56
|
## 0.3.0 (2017-07-08)
|
4
57
|
|
5
58
|
### Features
|
data/Gemfile
CHANGED
@@ -2,3 +2,45 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in bundle_outdated_formatter.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
if Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.4.0')
|
7
|
+
gem 'simplecov', '< 0.18.0'
|
8
|
+
end
|
9
|
+
|
10
|
+
if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.3.0') && Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.4.0')
|
11
|
+
if RUBY_PLATFORM !~ /mingw/
|
12
|
+
gem 'rubocop', '< 0.82.0'
|
13
|
+
gem 'rubocop-rspec', '< 1.39.0'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
if Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.3.0')
|
18
|
+
gem 'psych', '< 3.0.0'
|
19
|
+
end
|
20
|
+
|
21
|
+
if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.2.0') && Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.3.0')
|
22
|
+
if RUBY_PLATFORM !~ /mingw/
|
23
|
+
gem 'rubocop', '< 0.69.0'
|
24
|
+
gem 'rubocop-rspec', '< 1.33.0'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.2.0')
|
29
|
+
gem 'parallel', '< 1.17.0'
|
30
|
+
|
31
|
+
if RUBY_PLATFORM !~ /mingw/
|
32
|
+
gem 'rubocop-rspec', '< 1.5.2'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.1.0') && Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.2.0')
|
37
|
+
if RUBY_PLATFORM !~ /mingw/
|
38
|
+
gem 'rubocop', '< 0.58.0'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
if Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.1.0')
|
43
|
+
if RUBY_PLATFORM !~ /mingw/
|
44
|
+
gem 'rubocop', '< 0.51.0'
|
45
|
+
end
|
46
|
+
end
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# BundleOutdatedFormatter
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/bundle_outdated_formatter)
|
4
|
+
[](https://github.com/emsk/bundle_outdated_formatter/actions?query=workflow%3Abuild)
|
4
5
|
[](https://travis-ci.org/emsk/bundle_outdated_formatter)
|
5
|
-
[](https://ci.appveyor.com/project/emsk/bundle-outdated-formatter)
|
7
|
+
[](https://codecov.io/gh/emsk/bundle_outdated_formatter)
|
6
8
|
[](https://codeclimate.com/github/emsk/bundle_outdated_formatter)
|
7
|
-
[](https://gemnasium.com/github.com/emsk/bundle_outdated_formatter)
|
8
9
|
[](http://inch-ci.org/github/emsk/bundle_outdated_formatter)
|
9
10
|
[](LICENSE.txt)
|
10
11
|
|
@@ -40,8 +41,10 @@ $ bundle outdated | bof
|
|
40
41
|
|
41
42
|
| Option | Alias | Description | Default |
|
42
43
|
| :----- | :---- | :---------- | :------ |
|
43
|
-
| `--format` | `-f` | Format. `markdown`, `json`, `yaml`, `csv`, `xml`, or `html`. | `
|
44
|
+
| `--format` | `-f` | Format. `terminal`, `markdown`, `json`, `yaml`, `csv`, `tsv`, `xml`, or `html`. | `terminal` |
|
44
45
|
| `--pretty` | `-p` | `true` if pretty output.<br>This option is available in `json`, `xml`, or `html` formats. | `false` |
|
46
|
+
| `--style` | `-s` | Terminal table style. `unicode` or `ascii`.<br>This option is available in `terminal` format. | `unicode` |
|
47
|
+
| `--column` | `-c` | Output columns. The columns are sorted in specified order. | `gem newest installed requested groups` |
|
45
48
|
|
46
49
|
## Examples
|
47
50
|
|
@@ -54,9 +57,35 @@ Fetching dependency metadata from https://rubygems.org/..
|
|
54
57
|
Resolving dependencies...
|
55
58
|
|
56
59
|
Outdated gems included in the bundle:
|
57
|
-
* faker (newest 1.6.6, installed 1.6.5, requested ~> 1.4) in groups "development, test"
|
58
|
-
* hashie (newest 3.4.6, installed 1.2.0, requested = 1.2.0) in
|
59
|
-
* headless (newest 2.3.1, installed 2.2.3)
|
60
|
+
* faker (newest 1.6.6, installed 1.6.5, requested ~> 1.4) in groups "development, test"
|
61
|
+
* hashie (newest 3.4.6, installed 1.2.0, requested = 1.2.0) in group "default"
|
62
|
+
* headless (newest 2.3.1, installed 2.2.3)
|
63
|
+
```
|
64
|
+
|
65
|
+
### Convert to Terminal
|
66
|
+
|
67
|
+
Unicode style:
|
68
|
+
|
69
|
+
```
|
70
|
+
┌──────────┬────────┬───────────┬───────────┬───────────────────┐
|
71
|
+
│ gem │ newest │ installed │ requested │ groups │
|
72
|
+
├──────────┼────────┼───────────┼───────────┼───────────────────┤
|
73
|
+
│ faker │ 1.6.6 │ 1.6.5 │ ~> 1.4 │ development, test │
|
74
|
+
│ hashie │ 3.4.6 │ 1.2.0 │ = 1.2.0 │ default │
|
75
|
+
│ headless │ 2.3.1 │ 2.2.3 │ │ │
|
76
|
+
└──────────┴────────┴───────────┴───────────┴───────────────────┘
|
77
|
+
```
|
78
|
+
|
79
|
+
ASCII style:
|
80
|
+
|
81
|
+
```
|
82
|
+
+----------+--------+-----------+-----------+-------------------+
|
83
|
+
| gem | newest | installed | requested | groups |
|
84
|
+
+----------+--------+-----------+-----------+-------------------+
|
85
|
+
| faker | 1.6.6 | 1.6.5 | ~> 1.4 | development, test |
|
86
|
+
| hashie | 3.4.6 | 1.2.0 | = 1.2.0 | default |
|
87
|
+
| headless | 2.3.1 | 2.2.3 | | |
|
88
|
+
+----------+--------+-----------+-----------+-------------------+
|
60
89
|
```
|
61
90
|
|
62
91
|
### Convert to Markdown
|
@@ -149,19 +178,19 @@ Pretty output:
|
|
149
178
|
Normal output:
|
150
179
|
|
151
180
|
```
|
152
|
-
<?xml version=
|
181
|
+
<?xml version="1.0" encoding="UTF-8"?><gems><outdated><gem>faker</gem><newest>1.6.6</newest><installed>1.6.5</installed><requested>~> 1.4</requested><groups>development, test</groups></outdated><outdated><gem>hashie</gem><newest>3.4.6</newest><installed>1.2.0</installed><requested>= 1.2.0</requested><groups>default</groups></outdated><outdated><gem>headless</gem><newest>2.3.1</newest><installed>2.2.3</installed><requested></requested><groups></groups></outdated></gems>
|
153
182
|
```
|
154
183
|
|
155
184
|
Pretty output:
|
156
185
|
|
157
186
|
```
|
158
|
-
<?xml version=
|
187
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
159
188
|
<gems>
|
160
189
|
<outdated>
|
161
190
|
<gem>faker</gem>
|
162
191
|
<newest>1.6.6</newest>
|
163
192
|
<installed>1.6.5</installed>
|
164
|
-
<requested
|
193
|
+
<requested>~> 1.4</requested>
|
165
194
|
<groups>development, test</groups>
|
166
195
|
</outdated>
|
167
196
|
<outdated>
|
@@ -186,7 +215,7 @@ Pretty output:
|
|
186
215
|
Normal output:
|
187
216
|
|
188
217
|
```
|
189
|
-
<table><tr><th>gem</th><th>newest</th><th>installed</th><th>requested</th><th>groups</th></tr><tr><td>faker</td><td>1.6.6</td><td>1.6.5</td><td
|
218
|
+
<table><tr><th>gem</th><th>newest</th><th>installed</th><th>requested</th><th>groups</th></tr><tr><td>faker</td><td>1.6.6</td><td>1.6.5</td><td>~> 1.4</td><td>development, test</td></tr><tr><td>hashie</td><td>3.4.6</td><td>1.2.0</td><td>= 1.2.0</td><td>default</td></tr><tr><td>headless</td><td>2.3.1</td><td>2.2.3</td><td></td><td></td></tr></table>
|
190
219
|
```
|
191
220
|
|
192
221
|
Pretty output:
|
@@ -204,7 +233,7 @@ Pretty output:
|
|
204
233
|
<td>faker</td>
|
205
234
|
<td>1.6.6</td>
|
206
235
|
<td>1.6.5</td>
|
207
|
-
<td
|
236
|
+
<td>~> 1.4</td>
|
208
237
|
<td>development, test</td>
|
209
238
|
</tr>
|
210
239
|
<tr>
|
@@ -224,6 +253,10 @@ Pretty output:
|
|
224
253
|
</table>
|
225
254
|
```
|
226
255
|
|
256
|
+
## Related
|
257
|
+
|
258
|
+
* [bundle-outdated-formatter](https://github.com/emsk/bundle-outdated-formatter) - A Node.js implementation of the bundle_outdated_formatter
|
259
|
+
|
227
260
|
## Supported Ruby Versions
|
228
261
|
|
229
262
|
* Ruby 2.0.0
|
@@ -231,6 +264,9 @@ Pretty output:
|
|
231
264
|
* Ruby 2.2
|
232
265
|
* Ruby 2.3
|
233
266
|
* Ruby 2.4
|
267
|
+
* Ruby 2.5
|
268
|
+
* Ruby 2.6
|
269
|
+
* Ruby 2.7
|
234
270
|
|
235
271
|
## Contributing
|
236
272
|
|
data/appveyor.yml
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
version: 1.0.{build}-{branch}
|
2
|
+
|
3
|
+
environment:
|
4
|
+
RUBYOPT: -Eutf-8
|
5
|
+
matrix:
|
6
|
+
- RUBY_VERSION: 200
|
7
|
+
- RUBY_VERSION: 200-x64
|
8
|
+
- RUBY_VERSION: 21
|
9
|
+
- RUBY_VERSION: 21-x64
|
10
|
+
- RUBY_VERSION: 22
|
11
|
+
- RUBY_VERSION: 22-x64
|
12
|
+
- RUBY_VERSION: 23
|
13
|
+
- RUBY_VERSION: 23-x64
|
14
|
+
- RUBY_VERSION: 24
|
15
|
+
- RUBY_VERSION: 24-x64
|
16
|
+
- RUBY_VERSION: 25
|
17
|
+
- RUBY_VERSION: 25-x64
|
18
|
+
- RUBY_VERSION: 26
|
19
|
+
- RUBY_VERSION: 26-x64
|
20
|
+
- RUBY_VERSION: 27
|
21
|
+
- RUBY_VERSION: 27-x64
|
22
|
+
|
23
|
+
install:
|
24
|
+
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
25
|
+
- bundle install
|
26
|
+
|
27
|
+
build: off
|
28
|
+
|
29
|
+
before_test:
|
30
|
+
- ruby -v
|
31
|
+
- gem -v
|
32
|
+
- bundle -v
|
33
|
+
|
34
|
+
test_script:
|
35
|
+
- bundle exec rake
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
4
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
3
|
require 'bundle_outdated_formatter/version'
|
6
4
|
|
@@ -22,12 +20,19 @@ Gem::Specification.new do |spec|
|
|
22
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
21
|
spec.require_paths = ['lib']
|
24
22
|
|
25
|
-
spec.
|
26
|
-
|
27
|
-
spec.
|
28
|
-
spec.
|
29
|
-
spec.
|
30
|
-
spec.
|
31
|
-
spec.add_development_dependency '
|
32
|
-
spec.add_development_dependency '
|
23
|
+
spec.required_ruby_version = '>= 2.0.0'
|
24
|
+
|
25
|
+
spec.add_runtime_dependency 'psych', '>= 2.2'
|
26
|
+
spec.add_runtime_dependency 'rexml', '~> 3.2'
|
27
|
+
spec.add_runtime_dependency 'thor', '>= 0.20'
|
28
|
+
spec.add_runtime_dependency 'tty-table', '~> 0.10'
|
29
|
+
spec.add_development_dependency 'bundler'
|
30
|
+
spec.add_development_dependency 'codecov'
|
31
|
+
spec.add_development_dependency 'rake'
|
32
|
+
spec.add_development_dependency 'rspec', '~> 3.9'
|
33
|
+
if RUBY_PLATFORM !~ /mingw/
|
34
|
+
spec.add_development_dependency 'rubocop', '~> 0.86'
|
35
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.40'
|
36
|
+
end
|
37
|
+
spec.add_development_dependency 'simplecov'
|
33
38
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'bundle_outdated_formatter/error'
|
3
|
+
require 'bundle_outdated_formatter/formatter/terminal_formatter'
|
3
4
|
require 'bundle_outdated_formatter/formatter/markdown_formatter'
|
4
5
|
require 'bundle_outdated_formatter/formatter/json_formatter'
|
5
6
|
require 'bundle_outdated_formatter/formatter/yaml_formatter'
|
@@ -12,6 +13,7 @@ module BundleOutdatedFormatter
|
|
12
13
|
# Command-line interface of {BundleOutdatedFormatter}
|
13
14
|
class CLI < Thor
|
14
15
|
FORMATTERS = {
|
16
|
+
'terminal' => TerminalFormatter,
|
15
17
|
'markdown' => MarkdownFormatter,
|
16
18
|
'json' => JSONFormatter,
|
17
19
|
'yaml' => YAMLFormatter,
|
@@ -20,15 +22,25 @@ module BundleOutdatedFormatter
|
|
20
22
|
'xml' => XMLFormatter,
|
21
23
|
'html' => HTMLFormatter
|
22
24
|
}.freeze
|
25
|
+
STYLES = %w[unicode ascii].freeze
|
26
|
+
COLUMNS = %w[gem newest installed requested groups].freeze
|
27
|
+
|
28
|
+
def self.exit_on_failure?
|
29
|
+
false
|
30
|
+
end
|
23
31
|
|
24
32
|
default_command :output
|
25
33
|
|
26
34
|
desc 'output', 'Format output of `bundle outdated`'
|
27
|
-
option :format, type: :string, aliases: '-f', default: '
|
35
|
+
option :format, type: :string, aliases: '-f', default: 'terminal', desc: 'Format. (terminal, markdown, json, yaml, csv, tsv, xml, html)'
|
28
36
|
option :pretty, type: :boolean, aliases: '-p', desc: '`true` if pretty output.'
|
37
|
+
option :style, type: :string, aliases: '-s', default: 'unicode', desc: 'Terminal table style. (unicode, ascii)'
|
38
|
+
option :column, type: :array, aliases: '-c', default: %w[gem newest installed requested groups], desc: 'Output columns. (columns are sorted in specified order)'
|
29
39
|
|
30
40
|
def output
|
31
41
|
raise BundleOutdatedFormatter::UnknownFormatError, options[:format] unless allow_format?
|
42
|
+
raise BundleOutdatedFormatter::UnknownStyleError, options[:style] unless allow_style?
|
43
|
+
raise BundleOutdatedFormatter::UnknownColumnError, options[:column] unless allow_column?
|
32
44
|
return if STDIN.tty?
|
33
45
|
|
34
46
|
formatter = create_formatter
|
@@ -46,7 +58,17 @@ module BundleOutdatedFormatter
|
|
46
58
|
private
|
47
59
|
|
48
60
|
def allow_format?
|
49
|
-
FORMATTERS.
|
61
|
+
FORMATTERS.key?(options[:format])
|
62
|
+
end
|
63
|
+
|
64
|
+
def allow_style?
|
65
|
+
STYLES.include?(options[:style])
|
66
|
+
end
|
67
|
+
|
68
|
+
def allow_column?
|
69
|
+
options[:column].all? do |column|
|
70
|
+
COLUMNS.include?(column)
|
71
|
+
end
|
50
72
|
end
|
51
73
|
|
52
74
|
def create_formatter
|
@@ -3,16 +3,16 @@ require 'rexml/document'
|
|
3
3
|
module BundleOutdatedFormatter
|
4
4
|
# Formatter for all formats
|
5
5
|
class Formatter
|
6
|
-
GEM_REGEXP = /\A
|
7
|
-
NEWEST_REGEXP = /newest (?<newest>[\d
|
8
|
-
INSTALLED_REGEXP = /installed (?<installed>[\d
|
9
|
-
REQUESTED_REGEXP = /requested (?<requested>.+)\)
|
10
|
-
GROUPS_REGEXP = /in groups "(?<groups>.+)"
|
11
|
-
|
12
|
-
COLUMNS = %w[gem newest installed requested groups].freeze
|
6
|
+
GEM_REGEXP = /\A\* (?<gem>.+) \(/.freeze
|
7
|
+
NEWEST_REGEXP = /newest (?<newest>[\d.]+)/.freeze
|
8
|
+
INSTALLED_REGEXP = /installed (?<installed>[\d.]+)/.freeze
|
9
|
+
REQUESTED_REGEXP = /requested (?<requested>.+)\)/.freeze
|
10
|
+
GROUPS_REGEXP = /in groups? "(?<groups>.+)"/.freeze
|
13
11
|
|
14
12
|
def initialize(options)
|
15
13
|
@pretty = options[:pretty]
|
14
|
+
@style = options[:style]
|
15
|
+
@columns = options[:column]
|
16
16
|
@outdated_gems = []
|
17
17
|
end
|
18
18
|
|
@@ -32,27 +32,23 @@ module BundleOutdatedFormatter
|
|
32
32
|
matched = match_gem(line)
|
33
33
|
return unless match_gem?(matched)
|
34
34
|
|
35
|
-
{
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
'groups' => gem_text(matched[:groups], :groups)
|
41
|
-
}
|
35
|
+
gems = {}
|
36
|
+
@columns.each do |column|
|
37
|
+
gems[column] = gem_text(matched[column.to_sym], column.to_sym)
|
38
|
+
end
|
39
|
+
gems
|
42
40
|
end
|
43
41
|
|
44
42
|
def match_gem(line)
|
45
|
-
{
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
groups: GROUPS_REGEXP.match(line)
|
51
|
-
}
|
43
|
+
gems = {}
|
44
|
+
@columns.each do |column|
|
45
|
+
gems[column.to_sym] = self.class.const_get("#{column.upcase}_REGEXP").match(line)
|
46
|
+
end
|
47
|
+
gems
|
52
48
|
end
|
53
49
|
|
54
50
|
def match_gem?(matched)
|
55
|
-
|
51
|
+
@columns.any? do |column|
|
56
52
|
!matched[column.to_sym].nil?
|
57
53
|
end
|
58
54
|
end
|
@@ -29,7 +29,7 @@ module BundleOutdatedFormatter
|
|
29
29
|
def add_header_row
|
30
30
|
elements = @root.add_element(REXML::Element.new('tr'))
|
31
31
|
|
32
|
-
|
32
|
+
@columns.each do |column|
|
33
33
|
elements.add_element('th').add_text(column)
|
34
34
|
end
|
35
35
|
end
|
@@ -37,8 +37,9 @@ module BundleOutdatedFormatter
|
|
37
37
|
def add_data_row(gem)
|
38
38
|
elements = @root.add_element(REXML::Element.new('tr'))
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
@columns.each do |column|
|
41
|
+
escaped_text = REXML::Text.new(gem[column], false, nil, false)
|
42
|
+
elements.add_element('td').add_text(escaped_text)
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
@@ -3,17 +3,21 @@ require 'bundle_outdated_formatter/formatter'
|
|
3
3
|
module BundleOutdatedFormatter
|
4
4
|
# Formatter for Markdown
|
5
5
|
class MarkdownFormatter < Formatter
|
6
|
-
HEADER = <<-EOS.freeze
|
7
|
-
| gem | newest | installed | requested | groups |
|
8
|
-
| --- | --- | --- | --- | --- |
|
9
|
-
EOS
|
10
|
-
|
11
6
|
def convert
|
12
7
|
@outdated_gems.map! do |gem|
|
13
8
|
"| #{gem.values.join(' | ')} |".gsub(/ /, ' ')
|
14
9
|
end
|
15
10
|
|
16
|
-
(
|
11
|
+
(header + @outdated_gems.join("\n")).chomp
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def header
|
17
|
+
<<-EOS
|
18
|
+
| #{@columns.join(' | ')} |
|
19
|
+
| #{Array.new(@columns.size, '---').join(' | ')} |
|
20
|
+
EOS
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'tty-table'
|
2
|
+
require 'bundle_outdated_formatter/formatter'
|
3
|
+
|
4
|
+
module BundleOutdatedFormatter
|
5
|
+
# Formatter for Terminal
|
6
|
+
class TerminalFormatter < Formatter
|
7
|
+
def convert
|
8
|
+
table.render(@style.to_sym, padding: [0, 1]).chomp
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def table
|
14
|
+
return TTY::Table.new([@columns]) if @outdated_gems.empty?
|
15
|
+
|
16
|
+
TTY::Table.new(header: @columns) do |t|
|
17
|
+
@outdated_gems.each do |gem|
|
18
|
+
t << gem.values
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -8,8 +8,8 @@ module BundleOutdatedFormatter
|
|
8
8
|
super(options)
|
9
9
|
|
10
10
|
@xml = REXML::Document.new(nil, raw: :all)
|
11
|
-
@xml << REXML::XMLDecl.new('1.0', 'UTF-8')
|
12
11
|
@root = REXML::Element.new('gems')
|
12
|
+
@root.add_text('')
|
13
13
|
@xml.add_element(@root)
|
14
14
|
end
|
15
15
|
|
@@ -19,6 +19,8 @@ module BundleOutdatedFormatter
|
|
19
19
|
end
|
20
20
|
|
21
21
|
io = StringIO.new
|
22
|
+
io.write('<?xml version="1.0" encoding="UTF-8"?>')
|
23
|
+
io.write("\n") if @pretty
|
22
24
|
xml_formatter.write(@xml, io)
|
23
25
|
io.string.chomp
|
24
26
|
end
|
@@ -28,8 +30,9 @@ module BundleOutdatedFormatter
|
|
28
30
|
def add_outdated(gem)
|
29
31
|
elements = @root.add_element(REXML::Element.new('outdated'))
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
+
@columns.each do |column|
|
34
|
+
escaped_text = REXML::Text.new(gem[column], false, nil, false)
|
35
|
+
elements.add_element(column).add_text(escaped_text)
|
33
36
|
end
|
34
37
|
end
|
35
38
|
end
|
metadata
CHANGED
@@ -1,127 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundle_outdated_formatter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- emsk
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: psych
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rexml
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.2'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: thor
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.20'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.20'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: tty-table
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
30
58
|
requirements:
|
31
59
|
- - "~>"
|
32
60
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
61
|
+
version: '0.10'
|
34
62
|
type: :runtime
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
66
|
- - "~>"
|
39
67
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
68
|
+
version: '0.10'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: bundler
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
|
-
- - "
|
73
|
+
- - ">="
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
75
|
+
version: '0'
|
48
76
|
type: :development
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- - "
|
80
|
+
- - ">="
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
84
|
+
name: codecov
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
|
-
- - "
|
87
|
+
- - ">="
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
89
|
+
version: '0'
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
|
-
- - "
|
94
|
+
- - ">="
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
96
|
+
version: '0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rake
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
|
-
- - "
|
101
|
+
- - ">="
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
103
|
+
version: '0'
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
|
-
- - "
|
108
|
+
- - ">="
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
110
|
+
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: rspec
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '3.
|
117
|
+
version: '3.9'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
124
|
+
version: '3.9'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: rubocop
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
131
|
+
version: '0.86'
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
136
|
- - "~>"
|
109
137
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
138
|
+
version: '0.86'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
140
|
+
name: rubocop-rspec
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
143
|
- - "~>"
|
116
144
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
145
|
+
version: '1.40'
|
118
146
|
type: :development
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
121
149
|
requirements:
|
122
150
|
- - "~>"
|
123
151
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
152
|
+
version: '1.40'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
125
167
|
description: BundleOutdatedFormatter is a command-line tool to format output of `bundle
|
126
168
|
outdated`
|
127
169
|
email:
|
@@ -131,6 +173,7 @@ executables:
|
|
131
173
|
extensions: []
|
132
174
|
extra_rdoc_files: []
|
133
175
|
files:
|
176
|
+
- ".github/workflows/build.yml"
|
134
177
|
- ".gitignore"
|
135
178
|
- ".rspec"
|
136
179
|
- ".rubocop.yml"
|
@@ -141,6 +184,7 @@ files:
|
|
141
184
|
- LICENSE.txt
|
142
185
|
- README.md
|
143
186
|
- Rakefile
|
187
|
+
- appveyor.yml
|
144
188
|
- bin/console
|
145
189
|
- bin/setup
|
146
190
|
- bundle_outdated_formatter.gemspec
|
@@ -153,6 +197,7 @@ files:
|
|
153
197
|
- lib/bundle_outdated_formatter/formatter/html_formatter.rb
|
154
198
|
- lib/bundle_outdated_formatter/formatter/json_formatter.rb
|
155
199
|
- lib/bundle_outdated_formatter/formatter/markdown_formatter.rb
|
200
|
+
- lib/bundle_outdated_formatter/formatter/terminal_formatter.rb
|
156
201
|
- lib/bundle_outdated_formatter/formatter/tsv_formatter.rb
|
157
202
|
- lib/bundle_outdated_formatter/formatter/xml_formatter.rb
|
158
203
|
- lib/bundle_outdated_formatter/formatter/yaml_formatter.rb
|
@@ -169,15 +214,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
214
|
requirements:
|
170
215
|
- - ">="
|
171
216
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
217
|
+
version: 2.0.0
|
173
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
219
|
requirements:
|
175
220
|
- - ">="
|
176
221
|
- !ruby/object:Gem::Version
|
177
222
|
version: '0'
|
178
223
|
requirements: []
|
179
|
-
|
180
|
-
rubygems_version: 2.6.10
|
224
|
+
rubygems_version: 3.1.2
|
181
225
|
signing_key:
|
182
226
|
specification_version: 4
|
183
227
|
summary: Formatter for `bundle outdated`
|