milestoner 17.11.0 → 18.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.adoc +183 -79
  4. data/lib/milestoner/builders/ascii_doc.rb +30 -10
  5. data/lib/milestoner/builders/container.rb +1 -0
  6. data/lib/milestoner/builders/feed.rb +46 -0
  7. data/lib/milestoner/builders/markdown.rb +30 -10
  8. data/lib/milestoner/builders/stream.rb +19 -8
  9. data/lib/milestoner/builders/web.rb +46 -16
  10. data/lib/milestoner/cli/actions/build/basename.rb +27 -0
  11. data/lib/milestoner/cli/actions/build/format.rb +4 -4
  12. data/lib/milestoner/cli/actions/build/label.rb +3 -3
  13. data/lib/milestoner/cli/actions/build/layout.rb +3 -3
  14. data/lib/milestoner/cli/actions/build/max.rb +24 -0
  15. data/lib/milestoner/cli/actions/build/root.rb +3 -3
  16. data/lib/milestoner/cli/actions/build/stylesheet.rb +36 -0
  17. data/lib/milestoner/cli/actions/build/tail.rb +26 -0
  18. data/lib/milestoner/cli/actions/build/version.rb +7 -3
  19. data/lib/milestoner/cli/actions/cache/delete.rb +1 -1
  20. data/lib/milestoner/cli/actions/cache/find.rb +2 -2
  21. data/lib/milestoner/cli/actions/cache/info.rb +1 -1
  22. data/lib/milestoner/cli/actions/cache/list.rb +2 -2
  23. data/lib/milestoner/cli/actions/next.rb +2 -2
  24. data/lib/milestoner/cli/actions/publish.rb +19 -4
  25. data/lib/milestoner/cli/commands/build.rb +15 -25
  26. data/lib/milestoner/cli/commands/cache.rb +1 -1
  27. data/lib/milestoner/commits/categorizer.rb +2 -2
  28. data/lib/milestoner/commits/enricher.rb +1 -1
  29. data/lib/milestoner/commits/enrichers/body.rb +2 -2
  30. data/lib/milestoner/commits/enrichers/format.rb +2 -2
  31. data/lib/milestoner/commits/enrichers/issue.rb +2 -2
  32. data/lib/milestoner/commits/enrichers/milestone.rb +1 -1
  33. data/lib/milestoner/commits/enrichers/note.rb +2 -2
  34. data/lib/milestoner/commits/enrichers/review.rb +2 -2
  35. data/lib/milestoner/commits/enrichers/uri.rb +2 -2
  36. data/lib/milestoner/commits/tagger.rb +78 -0
  37. data/lib/milestoner/configuration/contract.rb +30 -8
  38. data/lib/milestoner/configuration/defaults.yml +49 -24
  39. data/lib/milestoner/configuration/model.rb +17 -8
  40. data/lib/milestoner/configuration/transformers/build/template_paths.rb +4 -4
  41. data/lib/milestoner/configuration/transformers/citations/description.rb +5 -3
  42. data/lib/milestoner/configuration/transformers/citations/label.rb +2 -3
  43. data/lib/milestoner/configuration/transformers/citations/uri.rb +48 -0
  44. data/lib/milestoner/configuration/transformers/gems/description.rb +8 -2
  45. data/lib/milestoner/configuration/transformers/gems/label.rb +6 -3
  46. data/lib/milestoner/configuration/transformers/gems/name.rb +8 -2
  47. data/lib/milestoner/configuration/transformers/gems/uri.rb +12 -3
  48. data/lib/milestoner/configuration/transformers/generator/label.rb +2 -2
  49. data/lib/milestoner/configuration/transformers/generator/uri.rb +2 -2
  50. data/lib/milestoner/configuration/transformers/generator/version.rb +2 -2
  51. data/lib/milestoner/configuration/transformers/project/author.rb +5 -2
  52. data/lib/milestoner/configuration/transformers/project/label.rb +2 -2
  53. data/lib/milestoner/configuration/transformers/project/version.rb +2 -2
  54. data/lib/milestoner/configuration/transformers/syndication/link.rb +33 -0
  55. data/lib/milestoner/container.rb +20 -16
  56. data/lib/milestoner/models/commit.rb +2 -0
  57. data/lib/milestoner/models/tag.rb +8 -0
  58. data/lib/milestoner/renderers/universal.rb +2 -2
  59. data/lib/milestoner/syndication/builder.rb +120 -0
  60. data/lib/milestoner/syndication/refine.rb +25 -0
  61. data/lib/milestoner/syndication/shared.rb +25 -0
  62. data/lib/milestoner/tags/creator.rb +11 -33
  63. data/lib/milestoner/tags/publisher.rb +13 -5
  64. data/lib/milestoner/tags/pusher.rb +22 -13
  65. data/lib/milestoner/templates/layouts/page.html.erb +7 -1
  66. data/lib/milestoner/templates/layouts/page.xml.erb +11 -0
  67. data/lib/milestoner/templates/milestones/_avatar.adoc.erb +1 -0
  68. data/lib/milestoner/templates/milestones/_avatar.html.erb +1 -1
  69. data/lib/milestoner/templates/milestones/_avatar.md.erb +2 -0
  70. data/lib/milestoner/templates/milestones/_avatar.xml.erb +5 -0
  71. data/lib/milestoner/templates/milestones/_commit.adoc.erb +1 -1
  72. data/lib/milestoner/templates/milestones/_commit.html.erb +18 -8
  73. data/lib/milestoner/templates/milestones/_commit.md.erb +1 -1
  74. data/lib/milestoner/templates/milestones/_commit.xml.erb +84 -0
  75. data/lib/milestoner/templates/milestones/_icon.adoc.erb +1 -0
  76. data/lib/milestoner/templates/milestones/_icon.html.erb +2 -2
  77. data/lib/milestoner/templates/milestones/_icon.md.erb +5 -0
  78. data/lib/milestoner/templates/milestones/_icon.xml.erb +5 -0
  79. data/lib/milestoner/templates/milestones/_profile.adoc.erb +1 -0
  80. data/lib/milestoner/templates/milestones/_profile.md.erb +1 -0
  81. data/lib/milestoner/templates/milestones/_profile.xml.erb +5 -0
  82. data/lib/milestoner/templates/milestones/_tag.adoc.erb +13 -0
  83. data/lib/milestoner/templates/milestones/_tag.html.erb +82 -0
  84. data/lib/milestoner/templates/milestones/_tag.md.erb +18 -0
  85. data/lib/milestoner/templates/milestones/_tag.stream.erb +14 -0
  86. data/lib/milestoner/templates/milestones/_tag.xml.erb +27 -0
  87. data/lib/milestoner/templates/milestones/show.adoc.erb +1 -11
  88. data/lib/milestoner/templates/milestones/show.html.erb +1 -46
  89. data/lib/milestoner/templates/milestones/show.md.erb +1 -11
  90. data/lib/milestoner/templates/milestones/show.stream.erb +1 -11
  91. data/lib/milestoner/templates/milestones/show.xml.erb +1 -0
  92. data/lib/milestoner/templates/public/page.css.erb +111 -60
  93. data/lib/milestoner/views/context.rb +7 -4
  94. data/lib/milestoner/views/milestones/show.rb +4 -29
  95. data/lib/milestoner/views/parts/commit.rb +8 -8
  96. data/lib/milestoner/views/parts/tag.rb +51 -0
  97. data/milestoner.gemspec +8 -7
  98. data.tar.gz.sig +0 -0
  99. metadata +58 -22
  100. metadata.gz.sig +3 -3
  101. data/lib/milestoner/configuration/transformers/project/generator.rb +0 -35
  102. data/lib/milestoner/configuration/transformers/project/name.rb +0 -21
  103. data/lib/milestoner/configuration/transformers/uri/avatar.rb +0 -20
  104. data/lib/milestoner/configuration/transformers/uri/commit.rb +0 -23
  105. data/lib/milestoner/configuration/transformers/uri/profile.rb +0 -20
  106. data/lib/milestoner/configuration/transformers/uri/review.rb +0 -23
  107. data/lib/milestoner/configuration/transformers/uri/tracker.rb +0 -23
  108. data/lib/milestoner/error.rb +0 -7
@@ -4,39 +4,69 @@ require "refinements/pathname"
4
4
 
5
5
  module Milestoner
6
6
  module Builders
7
- # Builds web page output (i.e. HTML and CSS).
7
+ # Builds web output (i.e. HTML and CSS).
8
8
  class Web
9
- include Milestoner::Import[:input]
9
+ include Milestoner::Import[:settings, :logger]
10
10
 
11
11
  using Refinements::Pathname
12
12
 
13
- def initialize(view: Views::Milestones::Show.new, enricher: Commits::Enricher.new, **)
13
+ def initialize(tagger: Commits::Tagger.new, view: Views::Milestones::Show.new, **)
14
+ @tagger = tagger
14
15
  @view = view
15
- @enricher = enricher
16
16
  super(**)
17
17
  end
18
18
 
19
19
  def call
20
- input.build_root.tap do |path|
21
- stylesheet_path.copy path.make_path.join("page.css")
22
- write path
23
- end
20
+ settings.build_root.make_path
21
+ copy_stylesheet
22
+
23
+ tagger.call
24
+ .fmap { |tags| build tags }
25
+ .alt_map { |message| failure message }
24
26
  end
25
27
 
26
28
  private
27
29
 
28
- attr_reader :view, :enricher
30
+ attr_reader :tagger, :view
31
+
32
+ def build tags
33
+ tags.each { |tag| write tag }
34
+ settings.build_root
35
+ end
36
+
37
+ def copy_stylesheet
38
+ return unless settings.build_stylesheet
39
+
40
+ stylesheet_template.copy stylesheet_path
41
+ logger.info { "Built: #{stylesheet_path}." }
42
+ end
43
+
44
+ def stylesheet_template
45
+ settings.build_template_paths
46
+ .map { |path| path.join "public/page.css.erb" }
47
+ .find(&:exist?)
48
+ .copy settings.build_root.make_path.join stylesheet_path
49
+ end
29
50
 
30
51
  def stylesheet_path
31
- input.build_template_paths
32
- .map { |path| path.join "public/page.css.erb" }
33
- .find(&:exist?)
52
+ settings.build_root.join "#{Pathname(settings.build_stylesheet).name}.css"
53
+ end
54
+
55
+ def write tag
56
+ path = make_path tag
57
+
58
+ path.write view.call(tag:, layout: settings.build_layout)
59
+ logger.info { "Built: #{path}." }
60
+ end
61
+
62
+ def make_path tag
63
+ version = settings.build_max == 1 ? "" : tag.version
64
+ settings.build_root.join(version, settings.build_basename).make_ancestors.sub_ext ".html"
34
65
  end
35
66
 
36
- def write path
37
- enricher.call.fmap do |commits|
38
- path.join("index.html").write view.call commits:, layout: input.build_layout
39
- end
67
+ def failure message
68
+ logger.error { message }
69
+ message
40
70
  end
41
71
  end
42
72
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+ require "sod"
5
+
6
+ module Milestoner
7
+ module CLI
8
+ module Actions
9
+ module Build
10
+ # Handles output path.
11
+ class Basename < Sod::Action
12
+ include Import[:settings]
13
+
14
+ description "Set basename."
15
+
16
+ ancillary "The file extension is dynamically calculated from format."
17
+
18
+ on %w[-b --basename], argument: "[NAME]"
19
+
20
+ default { Container[:settings].build_basename }
21
+
22
+ def call(name = nil) = settings.build_basename = name || default
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -8,15 +8,15 @@ module Milestoner
8
8
  module Build
9
9
  # Handles build output format.
10
10
  class Format < Sod::Action
11
- include Import[:input]
11
+ include Import[:settings]
12
12
 
13
13
  description "Set output format."
14
14
 
15
- on %w[-f --format], argument: "[KIND]", allow: %w[ascii_doc markdown stream web]
15
+ on %w[-f --format], argument: "[KIND]", allow: %w[ascii_doc feed markdown stream web]
16
16
 
17
- default { Container[:configuration].build_format }
17
+ default { Container[:settings].build_format }
18
18
 
19
- def call(kind = nil) = input.build_format = kind || default
19
+ def call(kind = nil) = settings.build_format = kind || default
20
20
  end
21
21
  end
22
22
  end
@@ -8,15 +8,15 @@ module Milestoner
8
8
  module Build
9
9
  # Handles build label.
10
10
  class Label < Sod::Action
11
- include Import[:input]
11
+ include Import[:settings]
12
12
 
13
13
  description "Set label."
14
14
 
15
15
  on %w[-l --label], argument: "[TEXT]"
16
16
 
17
- default { Container[:configuration].project_label }
17
+ default { Container[:settings].project_label }
18
18
 
19
- def call(label = nil) = input.project_label = label || default
19
+ def call(label = nil) = settings.project_label = label || default
20
20
  end
21
21
  end
22
22
  end
@@ -8,7 +8,7 @@ module Milestoner
8
8
  module Build
9
9
  # Handles build layout.
10
10
  class Layout < Sod::Action
11
- include Import[:input]
11
+ include Import[:settings]
12
12
 
13
13
  description "Set view template layout."
14
14
 
@@ -16,9 +16,9 @@ module Milestoner
16
16
 
17
17
  on %w[-L --layout], argument: "[NAME]"
18
18
 
19
- default { Container[:configuration].build_layout }
19
+ default { Container[:settings].build_layout }
20
20
 
21
- def call(layout = nil) = input.build_layout = parse(layout)
21
+ def call(layout = nil) = settings.build_layout = parse(layout)
22
22
 
23
23
  private
24
24
 
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sod"
4
+
5
+ module Milestoner
6
+ module CLI
7
+ module Actions
8
+ module Build
9
+ # Handles build maximum.
10
+ class Max < Sod::Action
11
+ include Import[:settings]
12
+
13
+ description "Set maximum number of tags to process."
14
+
15
+ on %w[-m --max], argument: "[NUMBER]", type: Integer
16
+
17
+ default { Container[:settings].build_max }
18
+
19
+ def call(max = nil) = settings.build_max = max || default
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -9,15 +9,15 @@ module Milestoner
9
9
  module Build
10
10
  # Handles build root path.
11
11
  class Root < Sod::Action
12
- include Import[:input]
12
+ include Import[:settings]
13
13
 
14
14
  description "Set root output path."
15
15
 
16
16
  on %w[-r --root], argument: "[PATH]"
17
17
 
18
- default { Container[:configuration].build_root }
18
+ default { Container[:settings].build_root }
19
19
 
20
- def call(path = nil) = input.build_root = Pathname(path || default).expand_path
20
+ def call(path = nil) = settings.build_root = Pathname(path || default).expand_path
21
21
  end
22
22
  end
23
23
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sod"
4
+
5
+ module Milestoner
6
+ module CLI
7
+ module Actions
8
+ module Build
9
+ # Handles build stylesheet.
10
+ class Stylesheet < Sod::Action
11
+ include Import[:settings]
12
+
13
+ description "Set stylesheet file name or relative path."
14
+
15
+ ancillary "Only used by web format. Use false to disable."
16
+
17
+ on %w[-s --stylesheet], argument: "[NAME]"
18
+
19
+ default { Container[:settings].build_stylesheet }
20
+
21
+ def call(name = nil) = settings.build_stylesheet = parse(name)
22
+
23
+ private
24
+
25
+ def parse value
26
+ case value
27
+ in "false" then false
28
+ in String then value
29
+ else default
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sod"
4
+
5
+ module Milestoner
6
+ module CLI
7
+ module Actions
8
+ module Build
9
+ # Handles build tail.
10
+ class Tail < Sod::Action
11
+ include Import[:settings]
12
+
13
+ description "Set tail reference."
14
+
15
+ ancillary "Defines the Git reference at which to cap the build."
16
+
17
+ on %w[-t --tail], argument: "[REFERENCE]", allow: %w[head tag]
18
+
19
+ default { Container[:settings].build_tail }
20
+
21
+ def call(reference = nil) = settings.build_tail = reference || default
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -9,7 +9,7 @@ module Milestoner
9
9
  module Build
10
10
  # Handles build version.
11
11
  class Version < Sod::Action
12
- include Import[:input]
12
+ include Import[:settings, :logger]
13
13
 
14
14
  using Versionaire::Cast
15
15
 
@@ -19,9 +19,13 @@ module Milestoner
19
19
 
20
20
  on %w[-v --version], argument: "[VERSION]"
21
21
 
22
- default { Container[:configuration].project_version }
22
+ default { Container[:settings].project_version }
23
23
 
24
- def call(version = nil) = input.project_version = Version(version || default)
24
+ def call version = nil
25
+ settings.project_version = Version(version || default)
26
+ rescue Versionaire::Error => error
27
+ logger.error { error.message }
28
+ end
25
29
  end
26
30
  end
27
31
  end
@@ -8,7 +8,7 @@ module Milestoner
8
8
  module Cache
9
9
  # Handles deleting a user from the cache.
10
10
  class Delete < Sod::Action
11
- include Import[:kernel, :logger, client: :cache]
11
+ include Import[:logger, client: :cache]
12
12
 
13
13
  description "Delete user."
14
14
 
@@ -8,7 +8,7 @@ module Milestoner
8
8
  module Cache
9
9
  # Handles finding a user in the cache.
10
10
  class Find < Sod::Action
11
- include Import[:kernel, :logger, client: :cache]
11
+ include Import[:logger, :io, client: :cache]
12
12
 
13
13
  description "Find user."
14
14
 
@@ -21,7 +21,7 @@ module Milestoner
21
21
 
22
22
  private
23
23
 
24
- def success(user) = kernel.puts user.to_h.values.join(", ")
24
+ def success(user) = io.puts user.to_h.values.join(", ")
25
25
 
26
26
  def failure(message) = logger.abort message
27
27
  end
@@ -8,7 +8,7 @@ module Milestoner
8
8
  module Cache
9
9
  # Handles cache information.
10
10
  class Info < Sod::Action
11
- include Import[:kernel, :logger, client: :cache]
11
+ include Import[:logger, client: :cache]
12
12
 
13
13
  description "Show information."
14
14
 
@@ -8,7 +8,7 @@ module Milestoner
8
8
  module Cache
9
9
  # Handles listing users within the cache.
10
10
  class List < Sod::Action
11
- include Import[:kernel, :logger, client: :cache]
11
+ include Import[:logger, :io, client: :cache]
12
12
 
13
13
  description "List users."
14
14
 
@@ -24,7 +24,7 @@ module Milestoner
24
24
  def print users
25
25
  return logger.info { "No users found." } if users.empty?
26
26
 
27
- users.each { |user| kernel.puts user.to_h.values.join ", " }
27
+ users.each { |user| io.puts user.to_h.values.join ", " }
28
28
  end
29
29
  end
30
30
  end
@@ -7,7 +7,7 @@ module Milestoner
7
7
  module Actions
8
8
  # Handles calculation of next version.
9
9
  class Next < Sod::Action
10
- include Import[:configuration, :kernel]
10
+ include Import[:settings, :io]
11
11
 
12
12
  description "Show next version."
13
13
 
@@ -15,7 +15,7 @@ module Milestoner
15
15
 
16
16
  on %w[-n --next]
17
17
 
18
- def call(*) = kernel.puts configuration.project_version
18
+ def call(*) = io.puts settings.project_version
19
19
  end
20
20
  end
21
21
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "dry/monads"
3
4
  require "sod"
4
5
  require "versionaire"
5
6
 
@@ -8,28 +9,42 @@ module Milestoner
8
9
  module Actions
9
10
  # Handles tag creation and pushing of tag to local repository.
10
11
  class Publish < Sod::Action
11
- include Import[:configuration]
12
+ include Import[:settings, :logger]
13
+ include Dry::Monads[:result]
12
14
 
13
15
  using Versionaire::Cast
14
16
 
15
17
  description "Publish milestone."
16
18
 
17
- ancillary "Build, commit, tag, and push to remote repository."
19
+ ancillary "Tag and push to remote repository."
18
20
 
19
21
  on %w[-p --publish], argument: "[VERSION]"
20
22
 
21
- default { Container[:configuration].project_version }
23
+ default { Container[:settings].project_version }
22
24
 
23
25
  def initialize(publisher: Tags::Publisher.new, **)
24
26
  super(**)
25
27
  @publisher = publisher
26
28
  end
27
29
 
28
- def call(version = nil) = publisher.call Version(version || default)
30
+ def call version = nil
31
+ case publisher.call Version(version || default)
32
+ in Success(version) then version
33
+ in Failure(message) then log_error message
34
+ else log_error "Publish failed, unable to parse result."
35
+ end
36
+ rescue Versionaire::Error => error
37
+ log_error error.message
38
+ end
29
39
 
30
40
  private
31
41
 
32
42
  attr_reader :publisher
43
+
44
+ def log_error message
45
+ logger.error { message }
46
+ message
47
+ end
33
48
  end
34
49
  end
35
50
  end
@@ -5,33 +5,34 @@ require "sod"
5
5
  module Milestoner
6
6
  module CLI
7
7
  module Commands
8
- # Handles the building of milestone output.
8
+ # Handles the building of different milestone formats.
9
9
  class Build < Sod::Command
10
- include Import[:input, :logger, :kernel]
11
- include Builders::Import[:ascii_doc, :markdown, :stream, :web]
10
+ include Import[:settings, :logger, :io]
11
+ include Builders::Import[:ascii_doc, :feed, :markdown, :stream, :web]
12
12
 
13
13
  handle "build"
14
14
 
15
15
  description "Build milestone."
16
16
 
17
+ on Actions::Build::Basename
18
+ on Actions::Build::Format
17
19
  on Actions::Build::Label
18
- on Actions::Build::Version
19
20
  on Actions::Build::Layout
20
- on Actions::Build::Format
21
+ on Actions::Build::Max
21
22
  on Actions::Build::Root
23
+ on Actions::Build::Stylesheet
24
+ on Actions::Build::Tail
25
+ on Actions::Build::Version
22
26
 
23
- # :reek:TooManyStatements
24
27
  def call
25
- format = input.build_format
28
+ format = settings.build_format
26
29
 
27
- log_info "Building #{input.project_label} milestone (#{format})..."
30
+ log_info "Building #{settings.project_label} (#{format})..."
28
31
 
29
- case format
30
- when "ascii_doc" then build_ascii_doc
31
- when "markdown" then build_markdown
32
- when "stream" then build_stream
33
- when "web" then build_web
34
- else logger.abort "Invalid build format: #{format}."
32
+ if infused_keys.include? format.to_sym
33
+ __send__(format).call
34
+ else
35
+ logger.abort "Invalid build format: #{format}."
35
36
  end
36
37
  end
37
38
 
@@ -39,17 +40,6 @@ module Milestoner
39
40
 
40
41
  attr_reader :view, :enricher
41
42
 
42
- def build_ascii_doc = log_info("Milestone built: #{ascii_doc.call}.")
43
-
44
- def build_markdown = log_info("Milestone built: #{markdown.call}.")
45
-
46
- def build_stream
47
- kernel.puts
48
- stream.call
49
- end
50
-
51
- def build_web = log_info "Milestone built: #{web.call}."
52
-
53
43
  def log_info(message) = logger.info { message }
54
44
  end
55
45
  end
@@ -7,7 +7,7 @@ module Milestoner
7
7
  module Commands
8
8
  # Handles the building of milestone output.
9
9
  class Cache < Sod::Command
10
- include Import[:input, :logger]
10
+ include Import[:settings, :logger]
11
11
 
12
12
  handle "cache"
13
13
 
@@ -7,7 +7,7 @@ module Milestoner
7
7
  module Commits
8
8
  # Retrieves and categorizes Git repository commit tagged or untagged history.
9
9
  class Categorizer
10
- include Import[:git, :input]
10
+ include Import[:settings]
11
11
 
12
12
  using Refinements::Array
13
13
 
@@ -15,7 +15,7 @@ module Milestoner
15
15
  @collector = collector
16
16
  super(**)
17
17
 
18
- @labels = input.commit_categories.pluck :label
18
+ @labels = settings.commit_categories.pluck :label
19
19
  @pattern = labels.empty? ? // : Regexp.union(labels)
20
20
  end
21
21
 
@@ -6,7 +6,7 @@ module Milestoner
6
6
  module Commits
7
7
  # Enriches commits and associated trailers for final processing.
8
8
  class Enricher
9
- include Import[:input]
9
+ include Import[:settings]
10
10
 
11
11
  include Enrichers::Import[
12
12
  :author,
@@ -5,7 +5,7 @@ module Milestoner
5
5
  module Enrichers
6
6
  # Enriches commit text by rendering as HTML based on trailer information.
7
7
  class Body
8
- include Milestoner::Import[:input]
8
+ include Milestoner::Import[:settings]
9
9
 
10
10
  def initialize(key: "Format", renderer: Renderers::Universal.new, **)
11
11
  @key = key
@@ -15,7 +15,7 @@ module Milestoner
15
15
 
16
16
  def call commit
17
17
  commit.trailer_value_for(key)
18
- .value_or(input.commit_format)
18
+ .value_or(settings.commit_format)
19
19
  .then { |format| renderer.call commit.body, for: format.to_sym }
20
20
  end
21
21
 
@@ -5,14 +5,14 @@ module Milestoner
5
5
  module Enrichers
6
6
  # Enriches a commit format based on trailer information.
7
7
  class Format
8
- include Milestoner::Import[:input]
8
+ include Milestoner::Import[:settings]
9
9
 
10
10
  def initialize(key: "Format", **)
11
11
  @key = key
12
12
  super(**)
13
13
  end
14
14
 
15
- def call(commit) = commit.trailer_value_for(key).value_or(input.commit_format)
15
+ def call(commit) = commit.trailer_value_for(key).value_or(settings.commit_format)
16
16
 
17
17
  private
18
18
 
@@ -5,7 +5,7 @@ module Milestoner
5
5
  module Enrichers
6
6
  # Enriches a commit issue based on trailer information.
7
7
  class Issue
8
- include Milestoner::Import[:input]
8
+ include Milestoner::Import[:settings]
9
9
 
10
10
  def initialize(key: "Issue", model: Models::Link, **)
11
11
  @key = key
@@ -14,7 +14,7 @@ module Milestoner
14
14
  end
15
15
 
16
16
  def call commit
17
- uri = input.tracker_uri
17
+ uri = settings.tracker_uri
18
18
 
19
19
  commit.trailer_value_for(key)
20
20
  .either -> value { model[id: value, uri: format(uri, id: value)] },
@@ -5,7 +5,7 @@ module Milestoner
5
5
  module Enrichers
6
6
  # Enriches a commit milestone based on trailer information.
7
7
  class Milestone
8
- include Milestoner::Import[:input]
8
+ include Milestoner::Import[:settings]
9
9
 
10
10
  def initialize(key: "Milestone", default: "unknown", **)
11
11
  @key = key
@@ -5,7 +5,7 @@ module Milestoner
5
5
  module Enrichers
6
6
  # Enriches commit notes by rendering as HTML based on trailer information.
7
7
  class Note
8
- include Milestoner::Import[:input]
8
+ include Milestoner::Import[:settings]
9
9
 
10
10
  def initialize(key: "Format", renderer: Renderers::Universal.new, **)
11
11
  @key = key
@@ -15,7 +15,7 @@ module Milestoner
15
15
 
16
16
  def call commit
17
17
  commit.trailer_value_for(key)
18
- .value_or(input.commit_format)
18
+ .value_or(settings.commit_format)
19
19
  .then { |format| renderer.call commit.notes, for: format.to_sym }
20
20
  end
21
21
 
@@ -5,14 +5,14 @@ module Milestoner
5
5
  module Enrichers
6
6
  # Enriches a commit review based on trailer information.
7
7
  class Review
8
- include Milestoner::Import[:input]
8
+ include Milestoner::Import[:settings]
9
9
 
10
10
  def initialize(model: Models::Link, **)
11
11
  @model = model
12
12
  super(**)
13
13
  end
14
14
 
15
- def call(*) = model[id: "All", uri: format(input.review_uri, id: nil)]
15
+ def call(*) = model[id: "All", uri: format(settings.review_uri, id: nil)]
16
16
 
17
17
  private
18
18
 
@@ -5,9 +5,9 @@ module Milestoner
5
5
  module Enrichers
6
6
  # Enriches a commit URI based on trailer information.
7
7
  class URI
8
- include Milestoner::Import[:input]
8
+ include Milestoner::Import[:settings]
9
9
 
10
- def call(commit) = format input.commit_uri, id: commit.sha
10
+ def call(commit) = format settings.commit_uri, id: commit.sha
11
11
  end
12
12
  end
13
13
  end