release-metrics 1.0.1 → 1.1.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/bin/releases +54 -0
- data/lib/metrics.rb +48 -0
- data/release-metrics.gemspec +2 -1
- data/releases.csv +6 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10cee685e7c6fea0197ebec0f887bb13195ec7f0da6f33fa89158d1cc3a5e39c
|
4
|
+
data.tar.gz: fe061d3b372f4c78fda6909dc8d637eab12062c3aabf25e98f4f6bea8b2aa279
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25457cc1516b43880cb0ff6957d5788cd84ccb51177f5aeec4a39ad85aa20c799b1c1734553b90fb869a498bd3ac982fb62c9f09ce6bddff9447ba729bd2cd1b
|
7
|
+
data.tar.gz: 4e76b4160cc6980c8115bae1bdae010881c3d1a5dc434a3c6c53844d70e4b35953bc493b4de3f6fd53518ff458d440a1933aa43f9e036128fbc0e8bcfdd162e6
|
data/bin/releases
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'docopt'
|
4
|
+
load File.expand_path(File.join(__dir__, '..', 'lib', 'metrics.rb'))
|
5
|
+
|
6
|
+
# Parse options
|
7
|
+
DOC =<<DOCOPT
|
8
|
+
Count releases in a given year (2012 - present).
|
9
|
+
|
10
|
+
Usage:
|
11
|
+
#{__FILE__} in-year YEAR
|
12
|
+
#{__FILE__} per-day-in-year YEAR
|
13
|
+
#{__FILE__} per-week-in-year YEAR
|
14
|
+
#{__FILE__} of-pe-in-year YEAR
|
15
|
+
#{__FILE__} of-foss-in-year YEAR
|
16
|
+
#{__FILE__} by-project-in-year YEAR --project PROJECT
|
17
|
+
DOCOPT
|
18
|
+
|
19
|
+
begin
|
20
|
+
options = Docopt::docopt(DOC)
|
21
|
+
rescue Docopt::Exit => e
|
22
|
+
puts "ERROR: Option parsing failed."
|
23
|
+
puts e.message
|
24
|
+
exit 1
|
25
|
+
end
|
26
|
+
|
27
|
+
# Do the thing
|
28
|
+
year = options['YEAR']
|
29
|
+
|
30
|
+
if options['in-year']
|
31
|
+
count = Metrics.releases_in_year(year)
|
32
|
+
puts "There have been #{count} total releases in #{year}"
|
33
|
+
end
|
34
|
+
if options['per-day-in-year']
|
35
|
+
count = Metrics.releases_per_day_in_year(year)
|
36
|
+
puts "There have been #{count} releases per day in #{year}"
|
37
|
+
end
|
38
|
+
if options['per-week-in-year']
|
39
|
+
count = Metrics.releases_per_week_in_year(year)
|
40
|
+
puts "There have been #{count} releases per week in #{year}"
|
41
|
+
end
|
42
|
+
if options['of-pe-in-year']
|
43
|
+
count = Metrics.pe_releases_in_year(year)
|
44
|
+
puts "There have been #{count} PE releases in #{year}"
|
45
|
+
end
|
46
|
+
if options['of-foss-in-year']
|
47
|
+
count = Metrics.foss_releases_in_year(year)
|
48
|
+
puts "There have been #{count} FOSS releases in #{year}"
|
49
|
+
end
|
50
|
+
if options['by-project-in-year']
|
51
|
+
project = options['PROJECT']
|
52
|
+
count = Metrics.releases_of_project_in_year(year, project)
|
53
|
+
puts "There have been #{count} releases of #{project} in #{year}"
|
54
|
+
end
|
data/lib/metrics.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module Metrics
|
4
|
+
module_function
|
5
|
+
|
6
|
+
DATA_FILE = 'releases.csv'
|
7
|
+
|
8
|
+
def release_data
|
9
|
+
return CSV.read(DATA_FILE)
|
10
|
+
end
|
11
|
+
|
12
|
+
def release_year(release_array)
|
13
|
+
date_string = release_array.first
|
14
|
+
return date_string.split('/').last
|
15
|
+
end
|
16
|
+
|
17
|
+
def data_in_year(year)
|
18
|
+
return release_data.select { |release_array| release_year(release_array) == year }
|
19
|
+
end
|
20
|
+
|
21
|
+
def releases_in_year(year)
|
22
|
+
return data_in_year(year).count
|
23
|
+
end
|
24
|
+
|
25
|
+
def releases_per_day_in_year(year)
|
26
|
+
# use a decimal so that division includes the decimal
|
27
|
+
days_in_year = 365.0
|
28
|
+
days_in_year = 366.0 if Date.new(year.to_i).leap?
|
29
|
+
return releases_in_year(year) / days_in_year
|
30
|
+
end
|
31
|
+
|
32
|
+
def releases_per_week_in_year(year)
|
33
|
+
return releases_per_day_in_year(year) * 7
|
34
|
+
end
|
35
|
+
|
36
|
+
def releases_of_project_in_year(year, project)
|
37
|
+
project_releases = data_in_year(year).select { |release_array| release_array.include? project }
|
38
|
+
return project_releases.count
|
39
|
+
end
|
40
|
+
|
41
|
+
def pe_releases_in_year(year)
|
42
|
+
return releases_of_project_in_year(year, 'Puppet Enterprise')
|
43
|
+
end
|
44
|
+
|
45
|
+
def foss_releases_in_year(year)
|
46
|
+
return releases_in_year(year) - pe_releases_in_year(year)
|
47
|
+
end
|
48
|
+
end
|
data/release-metrics.gemspec
CHANGED
@@ -2,7 +2,7 @@ require 'time'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = 'release-metrics'
|
5
|
-
gem.version = '1.0
|
5
|
+
gem.version = '1.1.0'
|
6
6
|
gem.date = Date.today.to_s
|
7
7
|
gem.summary = "Puppet, Inc. Release Metrics"
|
8
8
|
gem.authors = ["Puppet, Inc."]
|
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.license = 'Apache-2.0'
|
12
12
|
|
13
13
|
gem.files = %x(git ls-files -z).split("\0")
|
14
|
+
gem.require_path = 'lib'
|
14
15
|
gem.bindir = 'bin'
|
15
16
|
gem.executables = gem.files.grep(%r{^#{gem.bindir}}) { |f| File.basename(f) }
|
16
17
|
|
data/releases.csv
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
Date,Project,Version,Final?,Notes
|
2
|
+
11/14/2019,Puppet Enterprise,2019.2.1,y,
|
3
|
+
11/8/2019,puppet-bolt,1.37.0,y,
|
4
|
+
11/7/2019,puppet-bolt,1.36.0,y,
|
5
|
+
11/6/2019,Puppet Enterprise,2019.1.3,y,
|
6
|
+
11/6/2019,Puppet Enterprise,2018.1.11,y,
|
7
|
+
11/6/2019,Puppet Enterprise,2019.2.0,y,
|
2
8
|
11/1/2019,pdk,1.14.1.0,y,
|
3
9
|
10/25/2019,puppet-bolt,1.35.0,y,
|
4
10
|
10/23/2019,puppetdb,6.7.2,y,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: release-metrics
|
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
|
- Puppet, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docopt
|
@@ -42,6 +42,7 @@ description:
|
|
42
42
|
email: release@puppet.com
|
43
43
|
executables:
|
44
44
|
- add-release
|
45
|
+
- releases
|
45
46
|
extensions: []
|
46
47
|
extra_rdoc_files: []
|
47
48
|
files:
|
@@ -51,6 +52,8 @@ files:
|
|
51
52
|
- LICENSE
|
52
53
|
- README.md
|
53
54
|
- bin/add-release
|
55
|
+
- bin/releases
|
56
|
+
- lib/metrics.rb
|
54
57
|
- release-metrics.gemspec
|
55
58
|
- releases.csv
|
56
59
|
homepage: https://github.com/puppetlabs/release-metrics
|