milestoner 18.0.0 → 18.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +53 -30
- data/lib/milestoner/builders/stream.rb +6 -4
- data/lib/milestoner/builders/web.rb +1 -0
- data/lib/milestoner/cli/actions/publish.rb +2 -0
- data/lib/milestoner/commits/tagger.rb +3 -3
- data/lib/milestoner/renderers/universal.rb +5 -3
- data/lib/milestoner/tags/creator.rb +1 -4
- data/lib/milestoner/templates/layouts/page.html.erb +27 -18
- data/lib/milestoner/templates/layouts/page.stream.erb +1 -2
- data/lib/milestoner/templates/milestones/_tag.adoc.erb +1 -1
- data/lib/milestoner/templates/milestones/_tag.md.erb +1 -1
- data/lib/milestoner/templates/milestones/_tag.stream.erb +3 -2
- data/lib/milestoner/templates/public/page.css.erb +2 -3
- data/milestoner.gemspec +3 -3
- data.tar.gz.sig +0 -0
- metadata +7 -7
- 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: 27103ea8c0c11529358a9af74ba09984649748fd1420d5a87033935a3f7cd0c3
|
4
|
+
data.tar.gz: 71b5a313d296be4198631273b6b7520c1ea1a99350a829a38e7eec0aa9cdd690
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7260fdf39ccf76b5e7b65000851345b66ec85d1c2f8fd8db3337ad3bc8bef4842926ceefbd9d8da271b9a977f74eaee9fac6022a39928b67859c6f3fd34194d9
|
7
|
+
data.tar.gz: 1533468fce1026cf42692d347318d4ba17732aa20549d6aa4d5ffb6ea34a576baa567b98e885c11618628092ac83628462a981fb186c12528fd7640f7950e95a
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -12,6 +12,7 @@
|
|
12
12
|
:git_link: link:https://git-scm.com[Git]
|
13
13
|
:git_lint_link: link:https://alchemists.io/projects/git-lint[Git Lint]
|
14
14
|
:git_trailers_link: link:https://alchemists.io/articles/git_trailers[Git Trailers]
|
15
|
+
:git_notes_link: link:https://alchemists.io/articles/git_notes[Git Notes]
|
15
16
|
:hanami_link: link:https://hanamirb.org[Hanami]
|
16
17
|
:hanami_views_link: link:https://alchemists.io/articles/hanami_views[Hanami Views]
|
17
18
|
:hanamismith_link: link:https://alchemists.io/projects/hanamismith[Hanamismith]
|
@@ -38,7 +39,7 @@ You can use Milestoner to inspect the current state of the next milestone, celeb
|
|
38
39
|
|
39
40
|
Milestoner pairs well with the following gems:
|
40
41
|
|
41
|
-
* {git_lint_link}: Lints each {git_link} commit to ensure they are of high quality for historic inspection and release note generation.
|
42
|
+
* {git_lint_link}: Lints each {git_link} commit to ensure they are of high quality for readability, historic inspection, and release note generation.
|
42
43
|
* {rubysmith_link}: Automates building new {ruby_link} projects.
|
43
44
|
* {gemsmith_link}: Automates building new {rubygems_link} projects.
|
44
45
|
* {hanamismith_link}: Automates building new {hanami_link} projects.
|
@@ -47,43 +48,43 @@ toc::[]
|
|
47
48
|
|
48
49
|
== Screenshots
|
49
50
|
|
50
|
-
The following are screenshots of using this gem to render release notes for the {lode_link} gem. Even though {lode_link} is used for example purposes,
|
51
|
+
The following are screenshots of using this gem to render release notes for the {lode_link} gem. Even though {lode_link} is used for example purposes, keep in mind that Milestoner can be used for _any project and/or programming language_.
|
51
52
|
|
52
53
|
=== ASCII Doc Format
|
53
54
|
|
54
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-ascii_doc
|
55
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-ascii_doc.png[Release Notes,width=882,height=738,role=focal_point]
|
55
56
|
|
56
57
|
* *Command*: `milestoner build --format ascii_doc`
|
57
58
|
* *Renderer*: {ascii_doc_link}
|
58
59
|
|
59
60
|
=== Feed Format
|
60
61
|
|
61
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-
|
62
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-collapsed.png[Release Notes,width=1109,height=1143,role=focal_point]
|
62
63
|
|
63
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-
|
64
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-expanded.png[Release Notes,width=1109,height=1143,role=focal_point]
|
64
65
|
|
65
66
|
* *Command*: `milestoner build --format feed`
|
66
67
|
* *Renderer*: {net_news_wire_link}
|
67
68
|
|
68
69
|
=== Markdown Format
|
69
70
|
|
70
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-markdown
|
71
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-markdown.png[Release Notes,width=789,height=718,role=focal_point]
|
71
72
|
|
72
73
|
* *Command*: `milestoner build --format markdown`
|
73
74
|
* *Renderer*: {marked_link}
|
74
75
|
|
75
76
|
=== Stream Format
|
76
77
|
|
77
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-stream.png[Release Notes,width=
|
78
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-stream.png[Release Notes,width=586,height=341,role=focal_point]
|
78
79
|
|
79
80
|
* *Command*: `milestoner build --format stream`
|
80
81
|
* *Renderer*: {iterm_link}
|
81
82
|
|
82
83
|
=== Web Format
|
83
84
|
|
84
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-collapsed.png[Release Notes,width=
|
85
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-collapsed.png[Release Notes,width=1195,height=878,role=focal_point]
|
85
86
|
|
86
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-expanded.png[Release Notes,width=
|
87
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-expanded.png[Release Notes,width=1195,height=878,role=focal_point]
|
87
88
|
|
88
89
|
* *Command*: `milestoner build --format web`
|
89
90
|
* *Renderer*: {firefox_link}
|
@@ -95,14 +96,21 @@ image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-exp
|
|
95
96
|
** Example: `0.0.0`.
|
96
97
|
* Defaults to including {git_link} commits since last tag (or initialization of repository) when building release notes. This can be customized further if desired.
|
97
98
|
* Ensures {git_link} commit messages are grouped by prefix, in order defined, for categorization. For more details, see link:https://alchemists.io/projects/git-lint/#_commit_subject_prefix[Git Lint Commit Subject Prefix]. Defaults (can be customized):
|
98
|
-
** image:https://alchemists.io/images/projects/milestoner/icons/
|
99
|
-
** image:https://alchemists.io/images/projects/milestoner/icons/
|
100
|
-
** image:https://alchemists.io/images/projects/milestoner/icons/
|
101
|
-
** image:https://alchemists.io/images/projects/milestoner/icons/
|
102
|
-
** image:https://alchemists.io/images/projects/milestoner/icons/
|
99
|
+
** image:https://alchemists.io/images/projects/milestoner/icons/fixed.png[Fixed] Fixed
|
100
|
+
** image:https://alchemists.io/images/projects/milestoner/icons/added.png[Added] Added
|
101
|
+
** image:https://alchemists.io/images/projects/milestoner/icons/updated.png[Updated] Updated
|
102
|
+
** image:https://alchemists.io/images/projects/milestoner/icons/removed.png[Removed] Removed
|
103
|
+
** image:https://alchemists.io/images/projects/milestoner/icons/refactored.png[Refactored] Refactored
|
103
104
|
* Ensures {git_link} commit messages are alphabetically sorted for release note categorization and readability.
|
104
105
|
* Provides automatic versioning based on last {git_link} tag and {git_trailers_link}. See {git_commit_anatomy_link} for details.
|
105
|
-
* Supports multiple build formats:
|
106
|
+
* Supports multiple build formats:
|
107
|
+
** {ascii_doc_link}
|
108
|
+
** {syndication_link}
|
109
|
+
** {markdown_link}
|
110
|
+
** Stream (console)
|
111
|
+
** link:https://html.spec.whatwg.org/multipage[Web]
|
112
|
+
* Supports {git_notes_link}.
|
113
|
+
* Supports customization via your personal {xdg_link} and {hanami_views_link} configuration.
|
106
114
|
|
107
115
|
== Requirements
|
108
116
|
|
@@ -268,7 +276,7 @@ The above can be customized as follows:
|
|
268
276
|
|
269
277
|
As hinted at above, all URIs (including syndication), support {string_formats_link}. This means you can use the `%<key>s` format -- replacing `key` with the key of your choice -- to customize your configuration further.
|
270
278
|
|
271
|
-
💡 If you
|
279
|
+
💡 If you need to know what your current configuration looks like, you can jump into your applications IRB console and inspect `Milestoner::Container[:settings]` to see full details.
|
272
280
|
|
273
281
|
=== Config
|
274
282
|
|
@@ -321,7 +329,7 @@ milestoner cache --info
|
|
321
329
|
|
322
330
|
Once team member information is stored in your cache, you'll be able to build release notes which automatically link to GitHub user information without constantly hitting the GitHub API. _Users are identified by name so the full author name used for each commit message needs to match the same user name as stored in your source repository hosting service._
|
323
331
|
|
324
|
-
If you don't
|
332
|
+
If you don't use the cache, your release notes use a question mark (?) and _unknown_ for team members as highlighted below:
|
325
333
|
|
326
334
|
image:https://alchemists.io/images/projects/milestoner/screenshots/no_cache.png[Usage,width=851,height=571,role=focal_point]
|
327
335
|
|
@@ -338,7 +346,7 @@ milestoner build --format web
|
|
338
346
|
# 🟢 Milestone built: /Users/bkuhlmann/Engineering/OSS/milestoner/tmp/milestone
|
339
347
|
----
|
340
348
|
|
341
|
-
The above command is so useful that I use the following `msw` (i.e. Milestoner Web) Bash alias to build
|
349
|
+
The above command is so useful that I use the following `msw` (i.e. Milestoner Web) Bash alias to build current release notes or release notes for several tags:
|
342
350
|
|
343
351
|
[source,bash]
|
344
352
|
----
|
@@ -365,7 +373,7 @@ Check out the help documentation (i.e. `milestoner build --help`) for addition u
|
|
365
373
|
|
366
374
|
==== Automatic Versioning
|
367
375
|
|
368
|
-
As mentioned earlier, the calculation of version information happens automatically
|
376
|
+
As mentioned earlier, the calculation of version information happens automatically based on your last {git_link} tag and any {git_link} commit trailer metadata used. If none of this information is present, then the default version of `0.0.0` is used instead. All of this information is available to you via the following command:
|
369
377
|
|
370
378
|
[source,bash]
|
371
379
|
----
|
@@ -383,7 +391,7 @@ milestoner build --format stream
|
|
383
391
|
milestoner build --format stream --version 1.2.3
|
384
392
|
----
|
385
393
|
|
386
|
-
By default, automatic versioning is based on your last known {git_link} tag
|
394
|
+
By default, automatic versioning is based on your last known {git_link} tag. The version is bumped based on {git_link} commit trailer information from untagged commits (i.e. commits created since the last tag). All of this is managed via the {versionaire_link} gem. To ensure automatic versioning works properly, you only need to add the `Milestone` {git_link} commit trailer with a value of: `patch`, `minor`, or `major`. Here's an example assuming you have published Version 1.0.0:
|
387
395
|
|
388
396
|
....
|
389
397
|
# First commit.
|
@@ -426,7 +434,8 @@ Given the above, the resulting version would be: 2.0.0. This is because the high
|
|
426
434
|
|
427
435
|
==== Templates
|
428
436
|
|
429
|
-
Build template functionality is powered by {hanami_views_link} which means you can customize
|
437
|
+
Build template functionality is powered by {hanami_views_link} which means you can completely customize _all_ build formats, templates, partials, stylesheets, images, and so much more.
|
438
|
+
The quickest way to start customization is to copy the `templates` folder structure -- included with this gem -- to your preferred {runcom_link} configuration (i.e. global or local). For example, this gem's template structure is:
|
430
439
|
|
431
440
|
....
|
432
441
|
lib/milestoner/templates
|
@@ -468,28 +477,42 @@ lib/milestoner/templates
|
|
468
477
|
└── page.css.erb
|
469
478
|
....
|
470
479
|
|
471
|
-
This means you could, for example, copy all of
|
480
|
+
This means you could, for example, copy all of Milestoner's default templates to your own {runcom_link} configuration and customize as you see fit. Example (using global configuration):
|
472
481
|
|
473
482
|
[source,bash]
|
474
483
|
----
|
475
484
|
cp -r <milestoner_gem_root>/lib/milestoner/templates $HOME/.config/milestoner/templates
|
476
485
|
----
|
477
486
|
|
478
|
-
Milestoner searches your {runcom_link} configuration first and, if templates are detected, will be used instead. Otherwise, Milestoner falls back to it's own templates. Once {runcom_link} has calculated all possible template locations, {hanami_views_link} handles the final loading and
|
487
|
+
Milestoner searches your {runcom_link} configuration first and, if templates are detected, will be used instead. Otherwise, Milestoner falls back to it's own templates. Once {runcom_link} has calculated all possible template locations, {hanami_views_link} handles the final loading and rendering of the templates.
|
479
488
|
|
480
|
-
====
|
489
|
+
==== Formats
|
481
490
|
|
482
|
-
Of all
|
491
|
+
Of all build formats supported, the web format is the most powerful and feature rich. The following showcases _some_ of the information rendered in this format based on commit activity.
|
483
492
|
|
484
|
-
*
|
493
|
+
*With Basic Git Commit*
|
485
494
|
|
486
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-overview.png[
|
495
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-overview.png[Overview,width=1119,height=910,role=focal_point]
|
487
496
|
|
488
|
-
*With
|
497
|
+
*With Collaborators and Signers*
|
489
498
|
|
490
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-
|
499
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-collaborators_and_signers.png[Collaborators and Signers,width=1118,height=1003,role=focal_point]
|
491
500
|
|
492
|
-
|
501
|
+
*With Invalid Tag*
|
502
|
+
|
503
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-tag_invalid.png[Invalid Tag,width=1119,height=910,role=focal_point]
|
504
|
+
|
505
|
+
*With Valid Tag*
|
506
|
+
|
507
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-tag_valid.png[Valid Tag,width=1119,height=910,role=focal_point]
|
508
|
+
|
509
|
+
*With Notes*
|
510
|
+
|
511
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-notes.png[Notes,width=1119,height=910,role=focal_point]
|
512
|
+
|
513
|
+
💡 See {git_notes_link} to learn more.
|
514
|
+
|
515
|
+
You'll find all formats render similar information with the feed format being the closest but most formats are not as feature rich as the web format. Each milestone is meant to provide you with the right amount of statistical information you can make informed decisions.
|
493
516
|
|
494
517
|
== Security
|
495
518
|
|
@@ -18,7 +18,7 @@ module Milestoner
|
|
18
18
|
|
19
19
|
def call
|
20
20
|
tagger.call
|
21
|
-
.fmap { |tags|
|
21
|
+
.fmap { |tags| write tags }
|
22
22
|
.alt_map { |message| failure message }
|
23
23
|
end
|
24
24
|
|
@@ -26,12 +26,14 @@ module Milestoner
|
|
26
26
|
|
27
27
|
attr_reader :tagger, :view
|
28
28
|
|
29
|
+
def write(tags) = build(tags).tap { |content| io.write content }
|
30
|
+
|
29
31
|
def build tags
|
30
|
-
tags.
|
31
|
-
|
32
|
+
tags.reduce([]) { |content, tag| content.append render(tag) }
|
33
|
+
.join(%(\n#{"-" * 80}\n\n))
|
32
34
|
end
|
33
35
|
|
34
|
-
def
|
36
|
+
def render(tag) = view.call tag:, layout: settings.build_layout, format: :stream
|
35
37
|
|
36
38
|
def failure message
|
37
39
|
logger.error { message }
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require "dry/monads"
|
4
4
|
require "refinements/pathname"
|
5
|
+
require "refinements/struct"
|
5
6
|
require "versionaire"
|
6
7
|
|
7
8
|
module Milestoner
|
@@ -14,6 +15,7 @@ module Milestoner
|
|
14
15
|
|
15
16
|
using Refinements::Pathname
|
16
17
|
using Versionaire::Cast
|
18
|
+
using Refinements::Struct
|
17
19
|
|
18
20
|
def initialize(enricher: Commits::Enricher.new, model: Models::Tag, **)
|
19
21
|
@enricher = enricher
|
@@ -67,9 +69,7 @@ module Milestoner
|
|
67
69
|
end
|
68
70
|
|
69
71
|
def author tag
|
70
|
-
tag
|
71
|
-
tag.author_name ||= settings.project_author
|
72
|
-
author_enricher.call tag
|
72
|
+
author_enricher.call tag.with(author_name: tag.author_name || settings.project_author)
|
73
73
|
end
|
74
74
|
|
75
75
|
def committed_at(at) = at ? Time.at(at.to_i).utc : settings.loaded_at
|
@@ -1,11 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "refinements/binding"
|
4
|
+
|
3
5
|
module Milestoner
|
4
6
|
module Renderers
|
5
7
|
# The primary renderer for multiple input formats as HTML.
|
6
8
|
class Universal
|
7
9
|
include Import[:settings]
|
8
10
|
|
11
|
+
using Refinements::Binding
|
12
|
+
|
9
13
|
DELEGATES = {asciidoc: Asciidoc.new, markdown: Markdown.new}.freeze
|
10
14
|
|
11
15
|
def initialize(delegates: DELEGATES, **)
|
@@ -14,9 +18,7 @@ module Milestoner
|
|
14
18
|
@default_format = settings.commit_format.to_sym
|
15
19
|
end
|
16
20
|
|
17
|
-
def call
|
18
|
-
delegates.fetch(binding.local_variable_get(:for)).call content
|
19
|
-
end
|
21
|
+
def call(content, for: default_format) = delegates.fetch(binding[:for]).call content
|
20
22
|
|
21
23
|
private
|
22
24
|
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require "core"
|
4
4
|
require "dry/monads"
|
5
|
-
require "refinements/string_io"
|
6
5
|
|
7
6
|
module Milestoner
|
8
7
|
module Tags
|
@@ -11,8 +10,6 @@ module Milestoner
|
|
11
10
|
include Import[:git, :logger]
|
12
11
|
include Dry::Monads[:result]
|
13
12
|
|
14
|
-
using Refinements::StringIO
|
15
|
-
|
16
13
|
def initialize(collector: Commits::Collector.new, builder: Builders::Stream.new, **)
|
17
14
|
@collector = collector
|
18
15
|
@builder = builder
|
@@ -42,7 +39,7 @@ module Milestoner
|
|
42
39
|
|
43
40
|
def create(version) = build(version).bind { |body| git.tag_create version, body }
|
44
41
|
|
45
|
-
def build(version) = builder.call.fmap { |body| "Version #{version}\n\n#{body
|
42
|
+
def build(version) = builder.call.fmap { |body| "Version #{version}\n\n#{body}\n\n" }
|
46
43
|
end
|
47
44
|
end
|
48
45
|
end
|
@@ -10,24 +10,33 @@
|
|
10
10
|
<meta name="author" content="<%= project_author %>">
|
11
11
|
<meta name="generator" content="<%= generator_label %> <%= generator_version %>">
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
<%
|
29
|
-
|
30
|
-
|
13
|
+
<% if project_uri_icon %>
|
14
|
+
<link title="<%= project_label %>: Favorite Icon"
|
15
|
+
rel="icon"
|
16
|
+
href="<%= project_uri_icon %>"
|
17
|
+
sizes="32x32">
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<% if project_uri_logo %>
|
21
|
+
<link title="<%= project_label %>: Apple Icon"
|
22
|
+
rel="apple-touch-icon"
|
23
|
+
href="<%= project_uri_logo %>"
|
24
|
+
type="image/png"
|
25
|
+
sizes="200x200">
|
26
|
+
<% end %>
|
27
|
+
|
28
|
+
<% if build_stylesheet %>
|
29
|
+
<link title="<%= project_label %>: Stylesheet"
|
30
|
+
rel="stylesheet"
|
31
|
+
href="<%= build_stylesheet %>.css"
|
32
|
+
type="text/css">
|
33
|
+
<% end %>
|
34
|
+
|
35
|
+
<script src="https://unpkg.com/alpinejs@3.14.1"
|
36
|
+
integrity="sha384-l8f0VcPi/M1iHPv8egOnY/15TDwqgbOR1anMIJWvU6nLRgZVLTLSaNqi/TOoT5Fh"
|
37
|
+
crossorigin="anonymous"
|
38
|
+
defer>
|
39
|
+
</script>
|
31
40
|
</head>
|
32
41
|
|
33
42
|
<body>
|
@@ -1,2 +1 @@
|
|
1
|
-
<%= yield %>
|
2
|
-
Generated by <%= generator_label %> <%= generator_version %>.
|
1
|
+
<%= yield %>Generated by <%= generator_label %> <%= generator_version %>.
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
*<%= tag.total_commits %>. <%= tag.total_files %>. <%= tag.total_deletions %>. <%= tag.total_insertions %>.*
|
5
5
|
<% else %>
|
6
|
-
= pass:[ ]<% if project_uri_logo %>image:<%= project_uri_logo %>[Logo,50,50]pass:[ ]<% end %>link:<%= project_uri_home %>[<%= project_label %>] <%=
|
6
|
+
= pass:[ ]<% if project_uri_logo %>image:<%= project_uri_logo %>[Logo,50,50]pass:[ ]<% end %>link:<%= project_uri_home %>[<%= project_label %>] <%= tag.version %> (<%= tag.committed_date %>)
|
7
7
|
|
8
8
|
<%= render :avatar, name: tag.author.name, url: tag.avatar_url(tag.author) %> <%= render :profile, name: tag.author.name, url: tag.profile_url(tag.author) %> | <%= tag.security %>
|
9
9
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
**<%= tag.total_commits %>. <%= tag.total_files %>. <%= tag.total_deletions %>. <%= tag.total_insertions %>.**
|
11
11
|
<% else %>
|
12
|
-
# [<%= project_label %>](<%= project_uri_home %>) <%=
|
12
|
+
# [<%= project_label %>](<%= project_uri_home %>) <%= tag.version %> (<%= tag.committed_date %>)
|
13
13
|
<%= render :avatar, name: tag.author.name, url: tag.avatar_url(tag.author) %> <%= render :profile, name: tag.author.name, url: tag.profile_url(tag.author) %> | <%= tag.security %>
|
14
14
|
|
15
15
|
<% tag.commits.each do |commit| %><%= commit.render :commit %><% end %>
|
@@ -1,12 +1,13 @@
|
|
1
|
-
|
2
1
|
<% if tag.empty? %>
|
3
2
|
<%= project_label %> (<%= tag.committed_date %>)
|
4
3
|
|
5
4
|
<%= tag.total_commits %>. <%= tag.total_files %>. <%= tag.total_deletions %>. <%= tag.total_insertions %>.
|
6
5
|
<% else %>
|
7
|
-
<%= project_label %> <%=
|
6
|
+
<%= project_label %> <%= tag.version %> (<%= tag.committed_date %>)
|
7
|
+
<% if tag.version != project_version %>
|
8
8
|
|
9
9
|
<%= tag.author.name %> | <%= tag.security %>
|
10
|
+
<% end %>
|
10
11
|
|
11
12
|
<% tag.commits.each do |commit| %><%= commit.render :commit %><% end %>
|
12
13
|
|
@@ -10,16 +10,15 @@
|
|
10
10
|
--color-cheese: hsl(51, 100%, 93%);
|
11
11
|
--color-cloud: hsl(219, 100%, 93%);
|
12
12
|
--color-ghost: hsl(171.4, 17.1%, 92%);
|
13
|
-
--color-green: hsl(
|
13
|
+
--color-green: hsl(121, 73%, 35%);
|
14
14
|
--color-grey: hsl(240, 7%, 97%);
|
15
|
-
--color-sea: hsl(210, 24%, 15%);
|
16
15
|
--color-ice: hsl(216, 100%, 98%);
|
17
16
|
--color-major: hsl(7, 79%, 32%);
|
18
17
|
--color-minor: hsl(221, 79%, 32%);
|
19
18
|
--color-orange: hsl(24.8, 100%, 50.2%);
|
20
19
|
--color-patch: hsl(156, 79%, 32%);
|
21
20
|
--color-powder: hsl(0, 0%, 98%);
|
22
|
-
--color-red: hsl(0,
|
21
|
+
--color-red: hsl(0, 84.1%, 44.5%);
|
23
22
|
--color-slate: hsl(211, 23%, 41%);
|
24
23
|
--color-smoke: hsl(229, 31%, 93%);
|
25
24
|
--color-white: hsl(0, 0%, 100%);
|
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 = "18.
|
5
|
+
spec.version = "18.1.0"
|
6
6
|
spec.authors = ["Brooke Kuhlmann"]
|
7
7
|
spec.email = ["brooke@alchemists.io"]
|
8
8
|
spec.homepage = "https://alchemists.io/projects/milestoner"
|
@@ -30,13 +30,13 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency "core", "~> 1.3"
|
31
31
|
spec.add_dependency "dry-monads", "~> 1.6"
|
32
32
|
spec.add_dependency "dry-schema", "~> 1.13"
|
33
|
-
spec.add_dependency "etcher", "~> 2.
|
33
|
+
spec.add_dependency "etcher", "~> 2.1"
|
34
34
|
spec.add_dependency "gitt", "~> 3.6"
|
35
35
|
spec.add_dependency "hanami-view", "~> 2.1"
|
36
36
|
spec.add_dependency "infusible", "~> 3.8"
|
37
37
|
spec.add_dependency "lode", "~> 1.4"
|
38
38
|
spec.add_dependency "redcarpet", "~> 3.6"
|
39
|
-
spec.add_dependency "refinements", "~> 12.
|
39
|
+
spec.add_dependency "refinements", "~> 12.7"
|
40
40
|
spec.add_dependency "rss", "~> 0.3"
|
41
41
|
spec.add_dependency "runcom", "~> 11.5"
|
42
42
|
spec.add_dependency "sanitize", "~> 6.1"
|
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: 18.
|
4
|
+
version: 18.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
|
36
36
|
gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2024-07-
|
38
|
+
date: 2024-07-20 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: asciidoctor
|
@@ -141,14 +141,14 @@ dependencies:
|
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: '2.
|
144
|
+
version: '2.1'
|
145
145
|
type: :runtime
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: '2.
|
151
|
+
version: '2.1'
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
153
|
name: gitt
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
@@ -225,14 +225,14 @@ dependencies:
|
|
225
225
|
requirements:
|
226
226
|
- - "~>"
|
227
227
|
- !ruby/object:Gem::Version
|
228
|
-
version: '12.
|
228
|
+
version: '12.7'
|
229
229
|
type: :runtime
|
230
230
|
prerelease: false
|
231
231
|
version_requirements: !ruby/object:Gem::Requirement
|
232
232
|
requirements:
|
233
233
|
- - "~>"
|
234
234
|
- !ruby/object:Gem::Version
|
235
|
-
version: '12.
|
235
|
+
version: '12.7'
|
236
236
|
- !ruby/object:Gem::Dependency
|
237
237
|
name: rss
|
238
238
|
requirement: !ruby/object:Gem::Requirement
|
@@ -485,7 +485,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
485
485
|
- !ruby/object:Gem::Version
|
486
486
|
version: '0'
|
487
487
|
requirements: []
|
488
|
-
rubygems_version: 3.5.
|
488
|
+
rubygems_version: 3.5.16
|
489
489
|
signing_key:
|
490
490
|
specification_version: 4
|
491
491
|
summary: A command line interface for automated Git repository milestones.
|
metadata.gz.sig
CHANGED
Binary file
|