bus_factor 0.0.1 → 0.0.2
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/Rakefile +1 -1
- data/bin/bus_factor +6 -0
- data/bus_factor.gemspec +11 -10
- data/lib/bus_factor.rb +48 -2
- data/lib/bus_factor/version.rb +1 -1
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c5162de74172469da5d8cf2aaa2ae6b00832eb7
|
4
|
+
data.tar.gz: 89375cd9bf386ee8c19de97d2d8761ce1682c7f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f7b01edb8d6e926adcb59d4a308d84346c987253a93b4a66d33de2f73110a7fe49e3ad2acdb396a532f294b1d5d7e41a379350909c761cac9f9b7c7329549b7
|
7
|
+
data.tar.gz: 9d2de5cdaf9f342298bf02a22304559de01ffd271f8a74eb11c377a3a7ae5687c5e640f10487ecc2adedc74ea6a036325de11ba2e04fead4b92722fb900b1ebe
|
data/Rakefile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
data/bin/bus_factor
ADDED
data/bus_factor.gemspec
CHANGED
@@ -4,20 +4,21 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'bus_factor/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'bus_factor'
|
8
8
|
spec.version = BusFactor::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
9
|
+
spec.authors = ['Daniel Heath']
|
10
|
+
spec.email = ['daniel@heath.cc']
|
11
|
+
spec.summary = 'Identify dependencies with few maintainers'
|
12
|
+
spec.description = 'Find things that are relatively likely to be abandoned unexpectedly'
|
13
|
+
spec.homepage = 'https://github.com/DanielHeath/bus_factor'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rest-client'
|
23
24
|
end
|
data/lib/bus_factor.rb
CHANGED
@@ -1,5 +1,51 @@
|
|
1
|
-
require
|
1
|
+
require 'bus_factor/version'
|
2
|
+
require 'json'
|
3
|
+
require 'bundler'
|
4
|
+
require 'rest-client'
|
5
|
+
Bundler.require :all
|
2
6
|
|
3
7
|
module BusFactor
|
4
|
-
|
8
|
+
class << self
|
9
|
+
Result = Struct.new(:name, :emails) do
|
10
|
+
def to_s(length_chars: 2, spec_chars:15)
|
11
|
+
fs = "%#{length_chars}s, %#{spec_chars}s: %s"
|
12
|
+
format(
|
13
|
+
fs,
|
14
|
+
emails.length,
|
15
|
+
name,
|
16
|
+
emails.join(', ')
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# TODO: how often updated?
|
22
|
+
def worst
|
23
|
+
sorted_specs.map do |spec|
|
24
|
+
Result.new(
|
25
|
+
spec.name,
|
26
|
+
owners_of(spec).map { |o| o['email'] }
|
27
|
+
)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def sorted_specs
|
32
|
+
specs = Bundler.locked_gems.specs.map(&:__materialize__)
|
33
|
+
specs.sort_by do |spec|
|
34
|
+
owners_of(spec).length
|
35
|
+
end
|
36
|
+
specs
|
37
|
+
end
|
38
|
+
|
39
|
+
def owners_of(geem)
|
40
|
+
geem = geem.name if geem.respond_to? :name
|
41
|
+
owner_cache[geem]
|
42
|
+
end
|
43
|
+
|
44
|
+
def owner_cache
|
45
|
+
@owner_cache ||= Hash.new do |hash, key|
|
46
|
+
uri = "https://rubygems.org/api/v1/gems/#{key}/owners.json"
|
47
|
+
hash[key] = JSON.parse(RestClient.get uri)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
5
51
|
end
|
data/lib/bus_factor/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bus_factor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Heath
|
@@ -38,10 +38,25 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rest-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
description: Find things that are relatively likely to be abandoned unexpectedly
|
42
56
|
email:
|
43
57
|
- daniel@heath.cc
|
44
|
-
executables:
|
58
|
+
executables:
|
59
|
+
- bus_factor
|
45
60
|
extensions: []
|
46
61
|
extra_rdoc_files: []
|
47
62
|
files:
|
@@ -50,6 +65,7 @@ files:
|
|
50
65
|
- LICENSE.txt
|
51
66
|
- README.md
|
52
67
|
- Rakefile
|
68
|
+
- bin/bus_factor
|
53
69
|
- bus_factor.gemspec
|
54
70
|
- lib/bus_factor.rb
|
55
71
|
- lib/bus_factor/version.rb
|