gl 0.2.1 → 0.3.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 +4 -4
- data/.rubocop_todo.yml +11 -5
- data/Gemfile.lock +1 -1
- data/README.md +13 -0
- data/lib/gl/cli.rb +5 -2
- data/lib/gl/cli/global.rb +56 -0
- data/lib/gl/cli/registry.rb +9 -35
- data/lib/gl/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcad142f18a5ae01fdf53d892e4f9046df3a37ae9e69802a1b63d084d4b11fcf
|
4
|
+
data.tar.gz: 06ecdaaaceff8b4241c33c66b7c066b4bad4302e3c08eabd033336d387b3564b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86310a663708bc342f3b50e703bb2789a8b72d049c1a6f1dc225093205c3241cd353a7f787aa842b7d043a53ff1fd0922fce621df53145a470f97aa047ec90ac
|
7
|
+
data.tar.gz: 522140b9b71f5ef24480f40210c0155f44d2f82e271e14dd1625ac6d6854407a13fb30e343b6398bf968448a899d6d8ccda83714e483f53c33e89aa164764877
|
data/.rubocop_todo.yml
CHANGED
@@ -1,27 +1,33 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2019-08-19
|
3
|
+
# on 2019-08-19 16:08:47 +0200 using RuboCop version 0.74.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
8
|
|
9
|
-
# Offense count:
|
9
|
+
# Offense count: 1
|
10
|
+
Lint/ShadowingOuterLocalVariable:
|
11
|
+
Exclude:
|
12
|
+
- 'lib/gl/cli/registry.rb'
|
13
|
+
|
14
|
+
# Offense count: 4
|
10
15
|
Metrics/AbcSize:
|
11
|
-
Max:
|
16
|
+
Max: 48
|
12
17
|
|
13
|
-
# Offense count:
|
18
|
+
# Offense count: 5
|
14
19
|
# Configuration parameters: CountComments, ExcludedMethods.
|
15
20
|
Metrics/MethodLength:
|
16
21
|
Max: 35
|
17
22
|
|
18
|
-
# Offense count:
|
23
|
+
# Offense count: 6
|
19
24
|
Style/Documentation:
|
20
25
|
Exclude:
|
21
26
|
- 'spec/**/*'
|
22
27
|
- 'test/**/*'
|
23
28
|
- 'lib/gl.rb'
|
24
29
|
- 'lib/gl/cli.rb'
|
30
|
+
- 'lib/gl/cli/global.rb'
|
25
31
|
- 'lib/gl/cli/issues.rb'
|
26
32
|
- 'lib/gl/cli/merge_requests.rb'
|
27
33
|
- 'lib/gl/cli/registry.rb'
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -15,6 +15,7 @@ Inside your git workspace you can issue the following commands:
|
|
15
15
|
$ gl
|
16
16
|
|
17
17
|
Commands:
|
18
|
+
gl global # commands unrelated to the current project
|
18
19
|
gl help [COMMAND] # Describe available commands or one specific command
|
19
20
|
gl issues # handle issues of the project
|
20
21
|
gl mr # handle merge requests of the project
|
@@ -70,6 +71,18 @@ $ gl issue open 409
|
|
70
71
|
$ gl mr open 213
|
71
72
|
```
|
72
73
|
|
74
|
+
With the registry subcommand you can get a overview about the registry usage.
|
75
|
+
|
76
|
+
```bash
|
77
|
+
$ gl registry status
|
78
|
+
|
79
|
+
+---------------------------+------+-------------+
|
80
|
+
| Registry | Tags | Size |
|
81
|
+
+---------------------------+------+-------------+
|
82
|
+
| XXXXXXXXXXXXXXXXXXXXXXXXX | 42 | 13511.85 MB |
|
83
|
+
+---------------------------+------+-------------+
|
84
|
+
```
|
85
|
+
|
73
86
|
## Development
|
74
87
|
|
75
88
|
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/gl/cli.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'gl/cli/registry'
|
4
4
|
require 'gl/cli/merge_requests'
|
5
5
|
require 'gl/cli/issues'
|
6
|
+
require 'gl/cli/global'
|
6
7
|
|
7
8
|
module Gl
|
8
9
|
class CLI < Thor
|
@@ -15,14 +16,16 @@ module Gl
|
|
15
16
|
desc 'issues', 'handle issues of the project'
|
16
17
|
subcommand 'issues', Issues
|
17
18
|
|
19
|
+
desc 'global', 'commands unrelated to the current project'
|
20
|
+
subcommand 'global', Global
|
21
|
+
|
18
22
|
def self.setup
|
19
23
|
Gitlab.endpoint = "https://#{Gl.remote_base}/api/v4/"
|
20
24
|
Gl.validate_endpoint!
|
21
25
|
|
22
|
-
prompt = TTY::Prompt.new
|
23
|
-
|
24
26
|
token = `git config --get gl.#{Gl.remote_slug}.token`.chomp
|
25
27
|
if token.empty?
|
28
|
+
prompt = TTY::Prompt.new
|
26
29
|
Gl.open_in_browser('profile/personal_access_tokens')
|
27
30
|
token = prompt.mask("Please enter your GitLab token for #{Gl.remote_base}")
|
28
31
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gl
|
4
|
+
class Global < Thor
|
5
|
+
desc 'registry', 'display statistics about the registry'
|
6
|
+
def registry
|
7
|
+
spinner = TTY::Spinner.new('[:spinner] Fetching projects ...')
|
8
|
+
|
9
|
+
results = {}
|
10
|
+
|
11
|
+
spinner.auto_spin
|
12
|
+
projects = Gitlab.projects.auto_paginate
|
13
|
+
spinner.stop("Found #{projects.count}")
|
14
|
+
|
15
|
+
bar = TTY::ProgressBar.new(
|
16
|
+
'processing projects [:bar] :current/:total processed (:percent, :eta remaining)',
|
17
|
+
total: projects.size
|
18
|
+
)
|
19
|
+
|
20
|
+
projects.each do |project|
|
21
|
+
bar.advance(1)
|
22
|
+
registries = begin
|
23
|
+
Gitlab.registry_repositories(project.id).auto_paginate
|
24
|
+
rescue Gitlab::Error::Forbidden
|
25
|
+
next
|
26
|
+
end
|
27
|
+
|
28
|
+
next if registries.empty?
|
29
|
+
|
30
|
+
infos = registries.map do |registry|
|
31
|
+
tags = Gitlab.registry_repository_tags(project.id, registry.id).auto_paginate
|
32
|
+
|
33
|
+
next if tags.empty?
|
34
|
+
|
35
|
+
tags = tags.map do |tag|
|
36
|
+
Gitlab.registry_repository_tag(project.id, registry.id, tag.name)
|
37
|
+
rescue Gitlab::Error::NotFound
|
38
|
+
next
|
39
|
+
end
|
40
|
+
|
41
|
+
tags
|
42
|
+
end
|
43
|
+
|
44
|
+
sizes = infos.flatten.compact.map(&:total_size)
|
45
|
+
|
46
|
+
project_size = sizes.compact.inject(0) { |sum, x| sum + x }
|
47
|
+
results[project.path_with_namespace] = (project_size / 1024.0 / 1024.0).round(2)
|
48
|
+
end
|
49
|
+
|
50
|
+
bar.finish
|
51
|
+
table = TTY::Table.new(['Project', 'Size in MB'], results.sort_by { |_key, value| -value })
|
52
|
+
table << ['Total usage', results.values.inject(0) { |sum, x| sum + x }.round(2)]
|
53
|
+
puts table.render(:ascii, alignments: %i[left right])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/gl/cli/registry.rb
CHANGED
@@ -4,53 +4,27 @@ module Gl
|
|
4
4
|
class Registry < Thor
|
5
5
|
desc 'status', 'display statistics about the registry'
|
6
6
|
def status
|
7
|
-
|
7
|
+
project = Gl.current_project
|
8
8
|
|
9
|
-
|
9
|
+
registries = Gitlab.registry_repositories(project).auto_paginate
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
bar = TTY::ProgressBar.new(
|
16
|
-
'processing projects [:bar] :current/:total processed (:percent, :eta remaining)',
|
17
|
-
total: projects.size
|
18
|
-
)
|
19
|
-
|
20
|
-
projects.each do |project|
|
21
|
-
bar.advance(1)
|
22
|
-
registries = begin
|
23
|
-
Gitlab.registry_repositories(project.id)
|
24
|
-
rescue Gitlab::Error::Forbidden
|
25
|
-
next
|
26
|
-
end
|
27
|
-
|
28
|
-
next if registries.empty?
|
29
|
-
|
30
|
-
infos = registries.map do |registry|
|
31
|
-
tags = Gitlab.registry_repository_tags(project.id, registry.id)
|
11
|
+
table = TTY::Table.new(header: %w[Registry Tags Size]) do |table|
|
12
|
+
registries.each do |registry|
|
13
|
+
tags = Gitlab.registry_repository_tags(project, registry.id).auto_paginate
|
32
14
|
|
33
15
|
next if tags.empty?
|
34
16
|
|
35
17
|
tags = tags.map do |tag|
|
36
|
-
Gitlab.registry_repository_tag(project
|
18
|
+
Gitlab.registry_repository_tag(project, registry.id, tag.name)
|
37
19
|
rescue Gitlab::Error::NotFound
|
38
20
|
next
|
39
21
|
end
|
40
22
|
|
41
|
-
tags
|
23
|
+
tags_size = tags.flatten.compact.map(&:total_size).inject(0) { |sum, x| sum + x }
|
24
|
+
table << [registry.path, tags.count, "#{(tags_size / 1024.0 / 1024.0).round(2)} MB"]
|
42
25
|
end
|
43
|
-
|
44
|
-
sizes = infos.flatten.compact.map(&:total_size)
|
45
|
-
|
46
|
-
project_size = sizes.inject(0) { |sum, x| sum + x }
|
47
|
-
results[project.path_with_namespace] = (project_size / 1024.0 / 1024.0).round(2)
|
48
26
|
end
|
49
|
-
|
50
|
-
bar.finish
|
51
|
-
table = TTY::Table.new(['Project', 'Size in MB'], results.sort_by { |_key, value| -value })
|
52
|
-
table << ['Total usage', results.values.inject(0) { |sum, x| sum + x }.round(2)]
|
53
|
-
puts table.render(:ascii, alignments: %i[left right])
|
27
|
+
puts table.render(:ascii, alignments: %i[left right], padding: [0, 1])
|
54
28
|
end
|
55
29
|
end
|
56
30
|
end
|
data/lib/gl/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flipez
|
@@ -144,6 +144,7 @@ files:
|
|
144
144
|
- gl.gemspec
|
145
145
|
- lib/gl.rb
|
146
146
|
- lib/gl/cli.rb
|
147
|
+
- lib/gl/cli/global.rb
|
147
148
|
- lib/gl/cli/issues.rb
|
148
149
|
- lib/gl/cli/merge_requests.rb
|
149
150
|
- lib/gl/cli/registry.rb
|