fastlane-plugin-changelog 0.11.0 → 0.16.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/README.md +17 -16
- data/lib/fastlane/plugin/changelog/actions/emojify_changelog.rb +19 -9
- data/lib/fastlane/plugin/changelog/actions/read_changelog.rb +2 -1
- data/lib/fastlane/plugin/changelog/actions/stamp_changelog.rb +34 -19
- data/lib/fastlane/plugin/changelog/actions/update_changelog.rb +19 -6
- data/lib/fastlane/plugin/changelog/helper/changelog_helper.rb +1 -1
- data/lib/fastlane/plugin/changelog/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88dc3f6cc69c73c660b54513b941382eda0f8866
|
4
|
+
data.tar.gz: bc40d6fe17cebb7a3ae63ffac3a2fe1f8a9a9a12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 691abf1f00864a292359498499cf6af7b1fb308373f268ba7ac440e04ef73016af2ccb575190fa5b7c294c549be53e4806790a97809778d233cd65814e166033
|
7
|
+
data.tar.gz: 5ee732505ba076fd8bff381ade7e0ff6041f78edad5cb9a2160aca477e1c2d241102b07029086e65c51fc611f09afdd5dc7e6ae35cede277195bca694583d745
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ fastlane add_plugin changelog
|
|
14
14
|
|
15
15
|
This plugin is inspired by and based on [Keep a CHANGELOG](http://keepachangelog.com/) project. [Keep a CHANGELOG](http://keepachangelog.com/) proposes a standardised format for keeping change log of your project repository in `CHANGELOG.md` file. This file contains a curated, chronologically ordered list of notable changes for each version of a project in human readable format.
|
16
16
|
|
17
|
-
Since [Keep a CHANGELOG](http://keepachangelog.com/) project proposes a well-defined structure with _sections_ (e.g.: `[Unreleased]`, `0.3.0]`) and _subsections_ (`Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`) it opens up an opportunity to automate reading from/writing to `CHANGELOG.md` with [`fastlane`](https://fastlane.tools).
|
17
|
+
Since [Keep a CHANGELOG](http://keepachangelog.com/) project proposes a well-defined structure with _sections_ (e.g.: `[Unreleased]`, `[0.3.0]`) and _subsections_ (`Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`) it opens up an opportunity to automate reading from/writing to `CHANGELOG.md` with [`fastlane`](https://fastlane.tools).
|
18
18
|
|
19
19
|
## Actions
|
20
20
|
`fastlane-plugin-changelog` consists of 3 actions enabling you to manipulate `CHANGELOG.md` from [`fastlane`](https://fastlane.tools).
|
@@ -52,7 +52,8 @@ Additionally, you can provide an optional `git_tag` param, specifing git tag ass
|
|
52
52
|
``` ruby
|
53
53
|
stamp_changelog(
|
54
54
|
section_identifier: 'Build XYZ', # Specify identifier to stamp the Unreleased section with
|
55
|
-
git_tag: 'bXYZ' # Specify reference to git tag associated with this section
|
55
|
+
git_tag: 'bXYZ', # Specify reference to git tag associated with this section
|
56
|
+
stamp_date: true # Specify whether current date should be appended to stamped section line (default is `true`)
|
56
57
|
)
|
57
58
|
```
|
58
59
|
|
@@ -87,26 +88,26 @@ Deprecated:
|
|
87
88
|
emojifies into:
|
88
89
|
|
89
90
|
```
|
90
|
-
Added 🎁:
|
91
|
-
|
91
|
+
*Added* 🎁:
|
92
|
+
• New awesome feature
|
92
93
|
|
93
|
-
Changed ↔️:
|
94
|
-
|
94
|
+
*Changed* ↔️:
|
95
|
+
• Onboarding flow UI
|
95
96
|
|
96
|
-
Fixed ✅:
|
97
|
-
|
97
|
+
*Fixed* ✅:
|
98
|
+
• Fix Markdown links
|
98
99
|
|
99
|
-
Removed 🚫:
|
100
|
-
|
100
|
+
*Removed* 🚫:
|
101
|
+
• User tracking
|
101
102
|
|
102
|
-
Work In Progress 🚧:
|
103
|
-
|
103
|
+
*Work In Progress* 🚧:
|
104
|
+
• Sales screen
|
104
105
|
|
105
|
-
Security 🔒:
|
106
|
-
|
106
|
+
*Security* 🔒:
|
107
|
+
• Enable SSL pinning
|
107
108
|
|
108
|
-
Deprecated 💨:
|
109
|
-
|
109
|
+
*Deprecated* 💨:
|
110
|
+
• Obsolete contact screen
|
110
111
|
```
|
111
112
|
|
112
113
|
Example of use:
|
@@ -28,14 +28,14 @@ module Fastlane
|
|
28
28
|
|
29
29
|
if SUBSECTION_IDENTIFIERS.include?(stripped)
|
30
30
|
emojified_string = case stripped
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
31
|
+
when 'Added' then '*Added* 🎁'
|
32
|
+
when 'Changed' then '*Changed* ↔️'
|
33
|
+
when 'Fixed' then '*Fixed* ✅'
|
34
|
+
when 'Removed' then '*Removed* 🚫'
|
35
|
+
when 'Work In Progress' then '*Work In Progress* 🚧'
|
36
|
+
when 'Security' then '*Security* 🔒'
|
37
|
+
when 'Deprecated' then '*Deprecated* 💨'
|
38
|
+
end
|
39
39
|
|
40
40
|
# Add back trailing colon, if previously removed
|
41
41
|
if chopped_colon
|
@@ -49,11 +49,15 @@ module Fastlane
|
|
49
49
|
emojified_content.concat(emojified_string)
|
50
50
|
else
|
51
51
|
# Output updated line
|
52
|
+
# Replace '-' with '*'
|
53
|
+
if line.start_with?('-')
|
54
|
+
line[0] = '•'
|
55
|
+
end
|
52
56
|
emojified_content.concat(line)
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
56
|
-
UI.success("
|
60
|
+
UI.success("Successfully emojified output of read_changelog action")
|
57
61
|
|
58
62
|
Actions.lane_context[SharedValues::EMOJIFY_CHANGELOG_CONTENT] = emojified_content
|
59
63
|
end
|
@@ -74,6 +78,12 @@ module Fastlane
|
|
74
78
|
[]
|
75
79
|
end
|
76
80
|
|
81
|
+
def self.output
|
82
|
+
[
|
83
|
+
['EMOJIFY_CHANGELOG_CONTENT', 'Contains the emojified content of the last read_changelog action'],
|
84
|
+
]
|
85
|
+
end
|
86
|
+
|
77
87
|
def self.authors
|
78
88
|
["pajapro"]
|
79
89
|
end
|
@@ -103,7 +103,8 @@ module Fastlane
|
|
103
103
|
|
104
104
|
def self.output
|
105
105
|
[
|
106
|
-
['READ_CHANGELOG_SECTION_CONTENT', 'Contains text from a section of your CHANGELOG.md file']
|
106
|
+
['READ_CHANGELOG_SECTION_CONTENT', 'Contains text from a section of your CHANGELOG.md file'],
|
107
|
+
['READ_CHANGELOG_CHANGELOG_PATH', 'Contains the path to the CHANGELOG.md file']
|
107
108
|
]
|
108
109
|
end
|
109
110
|
|
@@ -14,20 +14,22 @@ module Fastlane
|
|
14
14
|
UI.important("WARNING: No changes in [Unreleased] section to stamp!")
|
15
15
|
else
|
16
16
|
section_identifier = params[:section_identifier] unless params[:section_identifier].to_s.empty?
|
17
|
-
|
17
|
+
should_stamp_date = params[:should_stamp_date]
|
18
|
+
stamp_datetime_format = params[:stamp_datetime_format]
|
18
19
|
git_tag = params[:git_tag]
|
19
20
|
placeholder_line = params[:placeholder_line]
|
20
21
|
|
21
|
-
stamp(changelog_path, section_identifier,
|
22
|
+
stamp(changelog_path, section_identifier, should_stamp_date, stamp_datetime_format, git_tag, placeholder_line)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
|
-
def self.stamp(changelog_path, section_identifier,
|
26
|
+
def self.stamp(changelog_path, section_identifier, should_stamp_date, stamp_datetime_format, git_tag, placeholder_line)
|
26
27
|
# 1. Update [Unreleased] section with given identifier
|
27
28
|
Actions::UpdateChangelogAction.run(changelog_path: changelog_path,
|
28
29
|
section_identifier: UNRELEASED_IDENTIFIER,
|
29
30
|
updated_section_identifier: section_identifier,
|
30
|
-
|
31
|
+
should_append_date: should_stamp_date,
|
32
|
+
append_datetime_format: stamp_datetime_format,
|
31
33
|
excluded_placeholder_line: placeholder_line)
|
32
34
|
|
33
35
|
file_content = ""
|
@@ -64,27 +66,33 @@ module Fastlane
|
|
64
66
|
# 3. Create link to git tags diff
|
65
67
|
if !git_tag.nil? && !git_tag.empty?
|
66
68
|
last_line = file_content.lines.last
|
67
|
-
previous_tag =
|
68
|
-
previous_previous_tag =
|
69
|
+
previous_tag = ''
|
70
|
+
previous_previous_tag = ''
|
71
|
+
reversed_tags = false
|
69
72
|
|
70
73
|
if last_line.include? 'https://github.com' # GitHub uses compare/olderTag...newerTag structure
|
71
74
|
previous_previous_tag = %r{(?<=compare\/)(.*)?(?=\.{3})}.match(last_line)
|
72
75
|
previous_tag = /(?<=\.{3})(.*)?/.match(last_line)
|
73
76
|
elsif last_line.include? 'https://bitbucket.org' # Bitbucket uses compare/newerTag..olderTag structure
|
77
|
+
reversed_tags = true
|
74
78
|
previous_tag = %r{(?<=compare\/)(.*)?(?=\.{2})}.match(last_line)
|
75
79
|
previous_previous_tag = /(?<=\.{2})(.*)?/.match(last_line)
|
76
80
|
end
|
77
81
|
|
78
82
|
# Replace section identifier
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
83
|
+
previous_section_identifier = /(?<=\[)[^\]]+(?=\]:)/.match(last_line)
|
84
|
+
last_line.sub!("[#{previous_section_identifier}]:", "[#{section_identifier}]:")
|
85
|
+
|
86
|
+
# Replace first tag
|
87
|
+
last_line.sub!(
|
88
|
+
reversed_tags ? previous_tag.to_s : previous_previous_tag.to_s,
|
89
|
+
reversed_tags ? git_tag.to_s : previous_tag.to_s
|
90
|
+
)
|
91
|
+
# Replace second tag
|
92
|
+
last_line.sub!(
|
93
|
+
"..#{reversed_tags ? previous_previous_tag : previous_tag}",
|
94
|
+
"..#{reversed_tags ? previous_tag : git_tag}"
|
95
|
+
)
|
88
96
|
|
89
97
|
UI.message("Created a link for comparison between #{previous_tag} and #{git_tag} tag")
|
90
98
|
|
@@ -95,7 +103,7 @@ module Fastlane
|
|
95
103
|
changelog = File.open(changelog_path, "w")
|
96
104
|
changelog.puts(file_content)
|
97
105
|
changelog.close
|
98
|
-
UI.success("
|
106
|
+
UI.success("Successfully stamped #{section_identifier} in #{changelog_path}")
|
99
107
|
end
|
100
108
|
|
101
109
|
#####################################################
|
@@ -123,10 +131,17 @@ module Fastlane
|
|
123
131
|
env_name: "FL_STAMP_CHANGELOG_SECTION_IDENTIFIER",
|
124
132
|
description: "The unique section identifier to stamp the [Unreleased] section with",
|
125
133
|
is_string: true),
|
126
|
-
FastlaneCore::ConfigItem.new(key: :
|
127
|
-
env_name: "
|
128
|
-
description: "Specifies whether the current date should be
|
134
|
+
FastlaneCore::ConfigItem.new(key: :should_stamp_date,
|
135
|
+
env_name: "FL_STAMP_CHANGELOG_SHOULD_STAMP_DATE",
|
136
|
+
description: "Specifies whether the current date as per the stamp_datetime_format should be stamped to the section identifier",
|
129
137
|
default_value: true,
|
138
|
+
is_string: false,
|
139
|
+
optional: true),
|
140
|
+
FastlaneCore::ConfigItem.new(key: :stamp_datetime_format,
|
141
|
+
env_name: "FL_STAMP_CHANGELOG_DATETIME_FORMAT",
|
142
|
+
description: "The strftime format string to use for the date in the stamped section",
|
143
|
+
default_value: '%FZ',
|
144
|
+
is_string: true,
|
130
145
|
optional: true),
|
131
146
|
FastlaneCore::ConfigItem.new(key: :git_tag,
|
132
147
|
env_name: "FL_STAMP_CHANGELOG_GIT_TAG",
|
@@ -48,8 +48,14 @@ module Fastlane
|
|
48
48
|
line_old = line.dup
|
49
49
|
line.sub!(section_name, new_section_identifier)
|
50
50
|
|
51
|
-
|
52
|
-
|
51
|
+
should_append_date = params[:should_append_date]
|
52
|
+
|
53
|
+
if should_append_date
|
54
|
+
append_datetime_format = params[:append_datetime_format]
|
55
|
+
|
56
|
+
now = Time.now.utc.strftime(append_datetime_format)
|
57
|
+
ENV["FL_UPDATE_APPEND_DATETIME_VAL"] = now
|
58
|
+
|
53
59
|
line.concat(" - " + now)
|
54
60
|
line.delete!(line_separator) # remove line break, because concatenation adds line break between section identifer & date
|
55
61
|
line.concat(line_separator) # add line break to the end of the string, in order to start next line on the next line
|
@@ -72,7 +78,7 @@ module Fastlane
|
|
72
78
|
changelog = File.open(changelog_path, "w")
|
73
79
|
changelog.puts(file_content)
|
74
80
|
changelog.close
|
75
|
-
UI.success("
|
81
|
+
UI.success("Successfully updated #{changelog_path}")
|
76
82
|
end
|
77
83
|
|
78
84
|
def self.is_section_line(line)
|
@@ -114,10 +120,17 @@ module Fastlane
|
|
114
120
|
description: "The updated unique section identifier (without square brackets)",
|
115
121
|
is_string: true,
|
116
122
|
optional: true),
|
117
|
-
FastlaneCore::ConfigItem.new(key: :
|
118
|
-
env_name: "
|
119
|
-
description: "
|
123
|
+
FastlaneCore::ConfigItem.new(key: :should_append_date,
|
124
|
+
env_name: "FL_UPDATE_CHANGELOG_SHOULD_APPEND_DATE",
|
125
|
+
description: "Specifies whether the current date as per the append_datetime_format should be appended to section identifier",
|
120
126
|
default_value: true,
|
127
|
+
is_string: false,
|
128
|
+
optional: true),
|
129
|
+
FastlaneCore::ConfigItem.new(key: :append_datetime_format,
|
130
|
+
env_name: "FL_UPDATE_CHANGELOG_APPEND_DATETIME_FORMAT",
|
131
|
+
description: "The strftime format string to use for the date after the section identifier",
|
132
|
+
default_value: '%FZ',
|
133
|
+
is_string: true,
|
121
134
|
optional: true),
|
122
135
|
FastlaneCore::ConfigItem.new(key: :excluded_placeholder_line,
|
123
136
|
env_name: "FL_UPDATE_CHANGELOG_EXCLUDED_PLACEHOLDER_LINE",
|
@@ -65,7 +65,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
65
65
|
# Writes given content to CHANGELOG.md in project root
|
66
66
|
def self.write_to_changelog(changelog)
|
67
67
|
File.open(CHANGELOG_PATH, 'w') { |f| f.write(changelog) }
|
68
|
-
FastlaneCore::UI.success('
|
68
|
+
FastlaneCore::UI.success('Successfully created CHANGELOG.md')
|
69
69
|
end
|
70
70
|
|
71
71
|
def self.get_line_separator(file_path)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-changelog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Prochazka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
131
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.
|
132
|
+
rubygems_version: 2.6.13
|
133
133
|
signing_key:
|
134
134
|
specification_version: 4
|
135
135
|
summary: Automate changes to your project CHANGELOG.md
|