aeon 0.0.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.
- data/Gemfile +4 -0
- data/Gemfile.lock +26 -0
- data/README +19 -0
- data/Rakefile +10 -0
- data/aeon.gemspec +22 -0
- data/lib/aeon.rb +51 -0
- data/lib/aeon/version.rb +3 -0
- metadata +99 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
aeon (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.1.2)
|
10
|
+
rake (0.8.7)
|
11
|
+
rspec (2.5.0)
|
12
|
+
rspec-core (~> 2.5.0)
|
13
|
+
rspec-expectations (~> 2.5.0)
|
14
|
+
rspec-mocks (~> 2.5.0)
|
15
|
+
rspec-core (2.5.2)
|
16
|
+
rspec-expectations (2.5.0)
|
17
|
+
diff-lcs (~> 1.1.2)
|
18
|
+
rspec-mocks (2.5.0)
|
19
|
+
|
20
|
+
PLATFORMS
|
21
|
+
ruby
|
22
|
+
|
23
|
+
DEPENDENCIES
|
24
|
+
aeon!
|
25
|
+
rake
|
26
|
+
rspec
|
data/README
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Aeon
|
2
|
+
===========================================================
|
3
|
+
An analytics tool measuring how old a projects dependencies
|
4
|
+
are.
|
5
|
+
|
6
|
+
|
7
|
+
Example
|
8
|
+
-----------------------------------------------------------
|
9
|
+
|
10
|
+
require 'aeon'
|
11
|
+
|
12
|
+
p Aeon.score
|
13
|
+
|
14
|
+
TODO
|
15
|
+
-----------------------------------------------------------
|
16
|
+
* Spec it out a little bit
|
17
|
+
* Build a rake task which can break when score exceeds
|
18
|
+
threshhold
|
19
|
+
|
data/Rakefile
ADDED
data/aeon.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "aeon/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "aeon"
|
7
|
+
s.version = Aeon::VERSION
|
8
|
+
s.authors = ["Andrew Kiellor"]
|
9
|
+
s.email = ["akiellor@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
|
12
|
+
s.summary = %q{Aeon scores the age of your bundles dependencies.}
|
13
|
+
s.description = %q{Aeon is an analysis tool to score the age of your bundles dependencies.}
|
14
|
+
s.rubyforge_project = "aeon"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.add_development_dependency('rspec')
|
21
|
+
s.add_development_dependency('rake')
|
22
|
+
end
|
data/lib/aeon.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require "aeon/version"
|
2
|
+
|
3
|
+
module Aeon
|
4
|
+
def self.score
|
5
|
+
Dependency.outdated.map(&:score).inject(0) {|sum, score| sum + score}
|
6
|
+
end
|
7
|
+
|
8
|
+
class Version
|
9
|
+
attr_reader :segments
|
10
|
+
|
11
|
+
def initialize version
|
12
|
+
@segments = version.split('.')
|
13
|
+
end
|
14
|
+
|
15
|
+
def - other
|
16
|
+
@segments.zip(other.segments).map do |dot_pair|
|
17
|
+
r = dot_pair[0].to_i - dot_pair[1].to_i
|
18
|
+
r < 0 ? 0 : r
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Dependency
|
24
|
+
attr_reader :name
|
25
|
+
|
26
|
+
def initialize name, local_version, remote_version
|
27
|
+
@name = name
|
28
|
+
@local_version = local_version
|
29
|
+
@remote_version = remote_version
|
30
|
+
end
|
31
|
+
|
32
|
+
def score
|
33
|
+
dot_pair_delta = @remote_version - @local_version
|
34
|
+
|
35
|
+
(0..(dot_pair_delta.size - 1)).to_a.inject(0) do |result, dot_offset|
|
36
|
+
result + ((10.rpower dot_offset) * dot_pair_delta[(dot_pair_delta.size - 1) - dot_offset])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.outdated
|
41
|
+
`gem outdated`.split("\n").map do |dep_line|
|
42
|
+
if m = dep_line.match(/^([^\s]+) \(([^\s]+) < ([^\)]+)\)$/)
|
43
|
+
name, local_version, remote_version = m.captures
|
44
|
+
Dependency.new name, Version.new(local_version), Version.new(remote_version)
|
45
|
+
else
|
46
|
+
raise "Failed to parse line: #{depline}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/aeon/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aeon
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Andrew Kiellor
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-06-01 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rake
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
description: Aeon is an analysis tool to score the age of your bundles dependencies.
|
49
|
+
email:
|
50
|
+
- akiellor@gmail.com
|
51
|
+
executables: []
|
52
|
+
|
53
|
+
extensions: []
|
54
|
+
|
55
|
+
extra_rdoc_files: []
|
56
|
+
|
57
|
+
files:
|
58
|
+
- Gemfile
|
59
|
+
- Gemfile.lock
|
60
|
+
- README
|
61
|
+
- Rakefile
|
62
|
+
- aeon.gemspec
|
63
|
+
- lib/aeon.rb
|
64
|
+
- lib/aeon/version.rb
|
65
|
+
homepage: ""
|
66
|
+
licenses: []
|
67
|
+
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
|
71
|
+
require_paths:
|
72
|
+
- lib
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
version: "0"
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
version: "0"
|
91
|
+
requirements: []
|
92
|
+
|
93
|
+
rubyforge_project: aeon
|
94
|
+
rubygems_version: 1.8.5
|
95
|
+
signing_key:
|
96
|
+
specification_version: 3
|
97
|
+
summary: Aeon scores the age of your bundles dependencies.
|
98
|
+
test_files: []
|
99
|
+
|