milestoner 19.7.0 → 19.8.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
- checksums.yaml.gz.sig +0 -0
- data/lib/milestoner/builders/syndication/builder.rb +0 -1
- data/lib/milestoner/commits/categorizer.rb +0 -1
- data/lib/milestoner/models/commit.rb +2 -0
- data/lib/milestoner/models/tag.rb +1 -1
- data/lib/milestoner/tags/enricher.rb +10 -0
- data/lib/milestoner/tags/manifest.rb +0 -1
- data/lib/milestoner/templates/layouts/page.html.erb +6 -6
- data/lib/milestoner/templates/milestones/_avatar.adoc.erb +1 -1
- data/lib/milestoner/templates/milestones/_avatar.html.erb +2 -2
- data/lib/milestoner/templates/milestones/_avatar.md.erb +1 -1
- data/lib/milestoner/templates/milestones/_avatar.xml.erb +6 -1
- data/lib/milestoner/templates/milestones/_commit.xml.erb +0 -1
- data/lib/milestoner/templates/milestones/_contributor.html.erb +7 -0
- data/lib/milestoner/templates/milestones/_contributor.xml.erb +7 -0
- data/lib/milestoner/templates/milestones/_contributors.html.erb +7 -0
- data/lib/milestoner/templates/milestones/_contributors.xml.erb +5 -0
- data/lib/milestoner/templates/milestones/_user.xml.erb +4 -1
- data/lib/milestoner/templates/milestones/_users.xml.erb +2 -2
- data/lib/milestoner/templates/milestones/show.adoc.erb +2 -0
- data/lib/milestoner/templates/milestones/show.html.erb +20 -14
- data/lib/milestoner/templates/milestones/show.md.erb +2 -0
- data/lib/milestoner/templates/milestones/show.stream.erb +2 -0
- data/lib/milestoner/templates/milestones/show.xml.erb +4 -0
- data/lib/milestoner/templates/public/page.css.erb +72 -17
- data/lib/milestoner/views/parts/commit.rb +0 -2
- data/lib/milestoner/views/parts/tag.rb +5 -0
- data/milestoner.gemspec +2 -2
- data.tar.gz.sig +0 -0
- metadata +8 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 598330664be3b7f14d771c22ff8fc790eff94bd2b91a655724b7c6f5cfd9887a
|
4
|
+
data.tar.gz: a32407b5c1d405ceab1c70bd2fb1c5cb3212709c7f28cff61e19f8c4b1ad64c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e91e5a636d3a2466273565462bdbfabe1ce7040e53c73cb6417b7dfbb390f75af4c15f898377604d57c8030f9cf4d30d64eac747ceb9ac5784fb82e12ee1dd62
|
7
|
+
data.tar.gz: 2496b6691182133f355c7af89ddc755f617b2af8e9815613f30be20b57043f5978b04825e9bca0322027bbec3bdde3be5be11fd2371a5090f2b106c97d5f2bea
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -19,7 +19,6 @@ module Milestoner
|
|
19
19
|
@pattern = labels.empty? ? // : Regexp.union(labels)
|
20
20
|
end
|
21
21
|
|
22
|
-
# :reek:NestedIterators
|
23
22
|
def call min: Collector::MIN, max: Collector::MAX
|
24
23
|
collect(min, max).each_value { |commits| commits.sort_by! { |_, commit| commit.subject } }
|
25
24
|
.values
|
@@ -3,6 +3,6 @@
|
|
3
3
|
module Milestoner
|
4
4
|
module Models
|
5
5
|
# Represents a Git tag comprised of multiple commits.
|
6
|
-
Tag = Struct.new :author, :commits, :committed_at, :sha, :signature, :version
|
6
|
+
Tag = Struct.new :author, :commits, :committed_at, :contributors, :sha, :signature, :version
|
7
7
|
end
|
8
8
|
end
|
@@ -8,6 +8,7 @@ require "versionaire"
|
|
8
8
|
module Milestoner
|
9
9
|
module Tags
|
10
10
|
# Builds a collection of enriched tags and associated commits.
|
11
|
+
# :reek:TooManyMethods
|
11
12
|
class Enricher
|
12
13
|
include Milestoner::Dependencies[:git, :settings, :logger]
|
13
14
|
include Commits::Enrichers::Dependencies[author_enricher: :author]
|
@@ -78,6 +79,7 @@ module Milestoner
|
|
78
79
|
author: author(tag),
|
79
80
|
commits:,
|
80
81
|
committed_at: committed_at(tag.committed_at),
|
82
|
+
contributors: contributors(commits),
|
81
83
|
sha: tag.sha,
|
82
84
|
signature: tag.signature,
|
83
85
|
version: Version(tag.version || settings.project_version)
|
@@ -94,6 +96,7 @@ module Milestoner
|
|
94
96
|
author: commits.last.author,
|
95
97
|
commits:,
|
96
98
|
committed_at: Time.now,
|
99
|
+
contributors: [],
|
97
100
|
version: settings.project_version
|
98
101
|
]
|
99
102
|
]
|
@@ -103,6 +106,13 @@ module Milestoner
|
|
103
106
|
author_enricher.call tag.with(author_name: tag.author_name || settings.project_author)
|
104
107
|
end
|
105
108
|
|
109
|
+
# :reek:UtilityFunction
|
110
|
+
def contributors commits
|
111
|
+
commits.reduce([]) { |all, commit| all.append(*commit.contributors) }
|
112
|
+
.uniq
|
113
|
+
.sort_by(&:name)
|
114
|
+
end
|
115
|
+
|
106
116
|
def committed_at(at) = at ? Time.at(at.to_i) : settings.loaded_at
|
107
117
|
end
|
108
118
|
end
|
@@ -30,19 +30,19 @@
|
|
30
30
|
href="<%= stylesheet_uri %>.css"
|
31
31
|
type="text/css">
|
32
32
|
|
33
|
-
<script src="https://unpkg.com/alpinejs@3.
|
34
|
-
integrity="sha384-
|
33
|
+
<script src="https://unpkg.com/alpinejs@3.15.0"
|
34
|
+
integrity="sha384-ZzplbkDNw4d2hjWc+D9EcDIgXEUybwPr2Slhix4BTtvQO3JbK60Av543BvQT9gTu"
|
35
35
|
crossorigin="anonymous"
|
36
36
|
defer>
|
37
37
|
</script>
|
38
38
|
|
39
|
-
<script src="https://unpkg.com/htmx.org@2.0.
|
40
|
-
integrity="sha384-
|
39
|
+
<script src="https://unpkg.com/htmx.org@2.0.7"
|
40
|
+
integrity="sha384-ZBXiYtYQ6hJ2Y0ZNoYuI+Nq5MqWBr+chMrS/RkXpNzQCApHEhOt2aY8EJgqwHLkJ"
|
41
41
|
crossorigin="anonymous">
|
42
42
|
</script>
|
43
43
|
|
44
|
-
<script src="https://unpkg.com/htmx-select@0.
|
45
|
-
integrity="sha384-
|
44
|
+
<script src="https://unpkg.com/htmx-select@0.8.0"
|
45
|
+
integrity="sha384-KMC31xzp4MoFILGxlftLhiqi68jrjw66Ygqa4O5zidGWkqWgvkKxCwKOJ82C6Fme"
|
46
46
|
crossorigin="anonymous">
|
47
47
|
</script>
|
48
48
|
</head>
|
@@ -1 +1 @@
|
|
1
|
-
image:<%= user.avatar_url %>[<%= user.image_alt
|
1
|
+
image:<%= user.avatar_url %>[<%= user.image_alt %>,<%= locals.fetch :width, 24 %>,<%= locals.fetch :height, 24 %>]
|
@@ -1 +1 @@
|
|
1
|
-
<img src="<%= user.avatar_url %>" alt="<%= user.image_alt %>" width="24" height="24" loading="lazy">
|
1
|
+
<img src="<%= user.avatar_url %>" alt="<%= user.image_alt %>" width="<%= locals.fetch :width, 24 %>" height="<%= locals.fetch :height, 24 %>" loading="lazy">
|
@@ -1 +1,6 @@
|
|
1
|
-
<img src="<%= user.avatar_url %>"
|
1
|
+
<img src="<%= user.avatar_url %>"
|
2
|
+
alt="<%= user.image_alt %>"
|
3
|
+
width="<%= locals.fetch :width, 24 %>"
|
4
|
+
height="<%= locals.fetch :height, 24 %>"
|
5
|
+
loading="lazy"
|
6
|
+
style="border-radius: 50%;">
|
@@ -13,5 +13,7 @@
|
|
13
13
|
*<%= tag.total_commits %>. <%= tag.total_files %>. <%= tag.total_deletions %>. <%= tag.total_insertions %>.* +
|
14
14
|
*<%= tag.total_duration %>.*
|
15
15
|
|
16
|
+
Thanks to all who contributed to this release: <%= tag.contributor_names %>.
|
17
|
+
|
16
18
|
link:../<%= past.version %>/[Previous (<%= past.version %>)] | link:../<%= future.version %>/[Next (<%= future.version %>)]
|
17
19
|
<% end %>
|
@@ -31,6 +31,21 @@
|
|
31
31
|
<time datetime="<%= tag.committed_datetime %>" class="date"><%= tag.committed_date %></time>
|
32
32
|
</header>
|
33
33
|
|
34
|
+
<button class="help" popovertarget="po-shortcuts">ℹ️</button>
|
35
|
+
|
36
|
+
<div id="po-shortcuts" class="popover" popover="auto">
|
37
|
+
<h2 class="label">Keyboard Shortcuts</h2>
|
38
|
+
|
39
|
+
<ul class="shortcuts">
|
40
|
+
<li class="shortcut"><kbd class="key">v</kbd>: View versions.</li>
|
41
|
+
<li class="shortcut"><kbd class="key">TAB</kbd>: Move to next commit.</li>
|
42
|
+
<li class="shortcut"><kbd class="key">⇧ + TAB</kbd>: Move to previous commit.</li>
|
43
|
+
<li class="shortcut"><kbd class="key">ENTER</kbd>: Open or close a commit.</li>
|
44
|
+
<li class="shortcut"><kbd class="key">←</kbd>: View previous version.</li>
|
45
|
+
<li class="shortcut"><kbd class="key">→</kbd>: View next version.</li>
|
46
|
+
</ul>
|
47
|
+
</div>
|
48
|
+
|
34
49
|
<% if tag.empty? %>
|
35
50
|
<p class="dormant"></p>
|
36
51
|
<% else %>
|
@@ -75,6 +90,11 @@
|
|
75
90
|
<span class="duration"><%= tag.total_duration %>.</span>
|
76
91
|
</p>
|
77
92
|
|
93
|
+
<section class="contributions">
|
94
|
+
<p class="message">Thanks to all who contributed to this release:</p>
|
95
|
+
<%= render "contributors", contributors: tag.contributors %>
|
96
|
+
</section>
|
97
|
+
|
78
98
|
<ul class="actions">
|
79
99
|
<li class="fragment">
|
80
100
|
<a href="../<%= past.version %>/"
|
@@ -94,20 +114,6 @@
|
|
94
114
|
<div class="previous spinner htmx-indicator"></div>
|
95
115
|
</li>
|
96
116
|
|
97
|
-
<li>
|
98
|
-
<button class="help" popovertarget="po-shortcuts">ℹ️</button>
|
99
|
-
|
100
|
-
<div id="po-shortcuts" class="popover" popover="auto">
|
101
|
-
<h2 class="label">Keyboard Shortcuts</h2>
|
102
|
-
|
103
|
-
<ul>
|
104
|
-
<li class="shortcut"><kbd class="key">v</kbd>: View versions.</li>
|
105
|
-
<li class="shortcut"><kbd class="key">←</kbd>: View previous version.</li>
|
106
|
-
<li class="shortcut"><kbd class="key">→</kbd>: View next version.</li>
|
107
|
-
</ul>
|
108
|
-
</div>
|
109
|
-
</li>
|
110
|
-
|
111
117
|
<li class="fragment">
|
112
118
|
<div class="next spinner htmx-indicator"></div>
|
113
119
|
|
@@ -12,5 +12,7 @@
|
|
12
12
|
**<%= tag.total_commits %>. <%= tag.total_files %>. <%= tag.total_deletions %>. <%= tag.total_insertions %>.**
|
13
13
|
**<%= tag.total_duration %>.**
|
14
14
|
|
15
|
+
Thanks to all who contributed to this release: <%= tag.contributor_names %>.
|
16
|
+
|
15
17
|
[Previous (<%= past.version %>)](../<%= past.version %>/) | [Next (<%= future.version %>)](../<%= future.version %>/)
|
16
18
|
<% end %>
|
@@ -3,6 +3,16 @@
|
|
3
3
|
100% { transform: rotate(360deg); }
|
4
4
|
}
|
5
5
|
|
6
|
+
*, *::after, *::before {
|
7
|
+
box-sizing: border-box;
|
8
|
+
}
|
9
|
+
|
10
|
+
@media (prefers-reduced-motion: no-preference) {
|
11
|
+
:where(html) {
|
12
|
+
interpolate-size: allow-keywords;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
6
16
|
/* Rouge (https://rouge.jneen.net) */
|
7
17
|
.rouge.highlight {
|
8
18
|
--color-berry: hsl(240, 18%, 40%);
|
@@ -364,6 +374,10 @@
|
|
364
374
|
}
|
365
375
|
}
|
366
376
|
|
377
|
+
figcaption {
|
378
|
+
text-align: center;
|
379
|
+
}
|
380
|
+
|
367
381
|
:not(pre) > code {
|
368
382
|
background-color: var(--color-night);
|
369
383
|
border-radius: 0.3rem;
|
@@ -482,6 +496,10 @@
|
|
482
496
|
font-size: 1rem;
|
483
497
|
margin: 0 0 1rem 0;
|
484
498
|
}
|
499
|
+
|
500
|
+
.shortcut {
|
501
|
+
margin: 0.5rem 0;
|
502
|
+
}
|
485
503
|
}
|
486
504
|
|
487
505
|
.spinner {
|
@@ -602,6 +620,13 @@
|
|
602
620
|
}
|
603
621
|
}
|
604
622
|
|
623
|
+
.help {
|
624
|
+
align-self: center;
|
625
|
+
background: none;
|
626
|
+
border: none;
|
627
|
+
font-size: 1rem;
|
628
|
+
}
|
629
|
+
|
605
630
|
.overview {
|
606
631
|
align-items: center;
|
607
632
|
display: grid;
|
@@ -656,16 +681,23 @@
|
|
656
681
|
}
|
657
682
|
|
658
683
|
.row {
|
684
|
+
padding: 0.3em 0;
|
685
|
+
|
686
|
+
&[open] {
|
687
|
+
height: auto;
|
688
|
+
overflow: clip;
|
689
|
+
}
|
690
|
+
|
691
|
+
&[open] > .summary::before {
|
692
|
+
content: "\25BC";
|
693
|
+
width: 0.5rem;
|
694
|
+
}
|
695
|
+
|
659
696
|
.label {
|
660
697
|
font-weight: 600;
|
661
698
|
}
|
662
699
|
}
|
663
700
|
|
664
|
-
.row[open] > .summary::before {
|
665
|
-
content: "\25BC";
|
666
|
-
width: 0.5rem;
|
667
|
-
}
|
668
|
-
|
669
701
|
.summary {
|
670
702
|
align-items: center;
|
671
703
|
border-radius: 0.5rem;
|
@@ -675,8 +707,11 @@
|
|
675
707
|
grid-template-areas:
|
676
708
|
"toggle icon subject subject subject subject subject subject"
|
677
709
|
"toggle icon author files lines issue review review";
|
678
|
-
|
679
|
-
|
710
|
+
|
711
|
+
@media (width >= 700px) {
|
712
|
+
grid-template: 1fr / auto auto 4.6fr repeat(5, 1fr);
|
713
|
+
grid-template-areas: "toggle icon subject author files lines issue review";
|
714
|
+
}
|
680
715
|
|
681
716
|
&::-webkit-details-marker {
|
682
717
|
display: none;
|
@@ -715,10 +750,6 @@
|
|
715
750
|
border-radius: 0.5rem;
|
716
751
|
}
|
717
752
|
|
718
|
-
@media (width >= 700px) {
|
719
|
-
grid-template: 1fr / auto auto 5fr repeat(5, 1fr);
|
720
|
-
grid-template-areas: "toggle icon subject author files lines issue review";
|
721
|
-
}
|
722
753
|
|
723
754
|
.icon {
|
724
755
|
grid-area: icon;
|
@@ -899,6 +930,8 @@
|
|
899
930
|
}
|
900
931
|
|
901
932
|
.footer {
|
933
|
+
margin-top: 1rem;
|
934
|
+
|
902
935
|
.totals {
|
903
936
|
align-items: center;
|
904
937
|
display: flex;
|
@@ -920,14 +953,36 @@
|
|
920
953
|
}
|
921
954
|
}
|
922
955
|
|
923
|
-
.
|
924
|
-
|
925
|
-
|
926
|
-
|
956
|
+
.contributions {
|
957
|
+
align-items: center;
|
958
|
+
display: flex;
|
959
|
+
flex-direction: column;
|
960
|
+
gap: 1rem;
|
961
|
+
justify-content: center;
|
962
|
+
margin: 3rem 0;
|
963
|
+
|
964
|
+
.message {
|
965
|
+
font-style: italic;
|
966
|
+
margin: 0;
|
967
|
+
}
|
927
968
|
}
|
928
969
|
|
929
|
-
.
|
930
|
-
|
970
|
+
.contributors {
|
971
|
+
align-items: center;
|
972
|
+
display: flex;
|
973
|
+
flex-wrap: wrap;
|
974
|
+
gap: 1.5rem;
|
975
|
+
justify-content: center;
|
976
|
+
list-style: none;
|
977
|
+
margin: 0;
|
978
|
+
padding: 0;
|
979
|
+
}
|
980
|
+
|
981
|
+
.profile {
|
982
|
+
align-items: center;
|
983
|
+
display: flex;
|
984
|
+
flex-direction: column;
|
985
|
+
margin: 0;
|
931
986
|
}
|
932
987
|
|
933
988
|
.actions {
|
@@ -7,7 +7,6 @@ module Milestoner
|
|
7
7
|
module Views
|
8
8
|
module Parts
|
9
9
|
# The commit presentation logic.
|
10
|
-
# :reek:RepeatedConditional
|
11
10
|
class Commit < Hanami::View::Part
|
12
11
|
include Dependencies[:settings, :sanitizer, :color]
|
13
12
|
|
@@ -81,7 +80,6 @@ module Milestoner
|
|
81
80
|
|
82
81
|
def total_deletions = format "%d", -deletions
|
83
82
|
|
84
|
-
# :reek:FeatureEnvy
|
85
83
|
def total_insertions
|
86
84
|
insertions.then { |total| total.positive? ? "+#{total}" : total.to_s }
|
87
85
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "hanami/view"
|
4
|
+
require "refinements/array"
|
4
5
|
require "refinements/string"
|
5
6
|
|
6
7
|
module Milestoner
|
@@ -10,10 +11,12 @@ module Milestoner
|
|
10
11
|
class Tag < Hanami::View::Part
|
11
12
|
include Dependencies[:settings, :color, :durationer]
|
12
13
|
|
14
|
+
using Refinements::Array
|
13
15
|
using Refinements::String
|
14
16
|
|
15
17
|
decorate :commits
|
16
18
|
decorate :author, as: :user
|
19
|
+
decorate :contributors, as: :user
|
17
20
|
|
18
21
|
def colored_total_deletions(*custom)
|
19
22
|
custom.push :green if custom.empty?
|
@@ -35,6 +38,8 @@ module Milestoner
|
|
35
38
|
|
36
39
|
def committed_datetime = committed_at.strftime "%Y-%m-%dT%H:%M:%S%z"
|
37
40
|
|
41
|
+
def contributor_names = contributors.map(&:name).to_sentence
|
42
|
+
|
38
43
|
def deletion_count = commits.sum(&:deletions)
|
39
44
|
|
40
45
|
def duration
|
data/milestoner.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "milestoner"
|
5
|
-
spec.version = "19.
|
5
|
+
spec.version = "19.8.0"
|
6
6
|
spec.authors = ["Brooke Kuhlmann"]
|
7
7
|
spec.email = ["brooke@alchemists.io"]
|
8
8
|
spec.homepage = "https://alchemists.io/projects/milestoner"
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency "infusible", "~> 4.0"
|
37
37
|
spec.add_dependency "lode", "~> 2.0"
|
38
38
|
spec.add_dependency "redcarpet", "~> 3.6"
|
39
|
-
spec.add_dependency "refinements", "~> 13.
|
39
|
+
spec.add_dependency "refinements", "~> 13.5"
|
40
40
|
spec.add_dependency "rouge", "~> 4.5"
|
41
41
|
spec.add_dependency "rss", "~> 0.3"
|
42
42
|
spec.add_dependency "runcom", "~> 12.0"
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: milestoner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 19.
|
4
|
+
version: 19.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -223,14 +223,14 @@ dependencies:
|
|
223
223
|
requirements:
|
224
224
|
- - "~>"
|
225
225
|
- !ruby/object:Gem::Version
|
226
|
-
version: '13.
|
226
|
+
version: '13.5'
|
227
227
|
type: :runtime
|
228
228
|
prerelease: false
|
229
229
|
version_requirements: !ruby/object:Gem::Requirement
|
230
230
|
requirements:
|
231
231
|
- - "~>"
|
232
232
|
- !ruby/object:Gem::Version
|
233
|
-
version: '13.
|
233
|
+
version: '13.5'
|
234
234
|
- !ruby/object:Gem::Dependency
|
235
235
|
name: rouge
|
236
236
|
requirement: !ruby/object:Gem::Requirement
|
@@ -486,6 +486,10 @@ files:
|
|
486
486
|
- lib/milestoner/templates/milestones/_content.adoc.erb
|
487
487
|
- lib/milestoner/templates/milestones/_content.html.erb
|
488
488
|
- lib/milestoner/templates/milestones/_content.xml.erb
|
489
|
+
- lib/milestoner/templates/milestones/_contributor.html.erb
|
490
|
+
- lib/milestoner/templates/milestones/_contributor.xml.erb
|
491
|
+
- lib/milestoner/templates/milestones/_contributors.html.erb
|
492
|
+
- lib/milestoner/templates/milestones/_contributors.xml.erb
|
489
493
|
- lib/milestoner/templates/milestones/_logo.adoc.erb
|
490
494
|
- lib/milestoner/templates/milestones/_logo.html.erb
|
491
495
|
- lib/milestoner/templates/milestones/_logo.md.erb
|
@@ -553,7 +557,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
553
557
|
- !ruby/object:Gem::Version
|
554
558
|
version: '0'
|
555
559
|
requirements: []
|
556
|
-
rubygems_version: 3.7.
|
560
|
+
rubygems_version: 3.7.2
|
557
561
|
specification_version: 4
|
558
562
|
summary: A command line interface for automated Git repository milestones.
|
559
563
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|