fastlane-plugin-changelog_generator 0.1.0 → 0.2.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/lib/fastlane/plugin/changelog_generator/actions/generate_changelog_action.rb +2 -4
- data/lib/fastlane/plugin/changelog_generator/actions/generate_release_changelog_action.rb +9 -4
- data/lib/fastlane/plugin/changelog_generator/helper/changelog_generator_fetcher.rb +20 -2
- data/lib/fastlane/plugin/changelog_generator/helper/changelog_generator_helper.rb +4 -5
- data/lib/fastlane/plugin/changelog_generator/version.rb +1 -1
- metadata +2 -4
- data/lib/fastlane/plugin/changelog_generator/actions/fetch_github_labels_action.rb +0 -70
- data/lib/fastlane/plugin/changelog_generator/actions/git_tags_action.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 741359874cb09cf98217125eb8fa4f170feba154
|
4
|
+
data.tar.gz: 1c2c405f51e39405a19c2af10e240ca85b264785
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fa0a3bddd0ac73e747eca18d9d5005497eb360c0fcac1b6c9ed7b282e1bc13136a343275c23268660da4b7699cb06e394018e36fb1a48a38dbda1ec326126e5
|
7
|
+
data.tar.gz: e3b3c7e422bd8739bae4ee5c8d7bd11805fbd26efea912fda0f402d59e38e6c2ef708beee282bce2f44db23a5f6e8b4a81b8eeb1acee0673688f1e5649e885f9
|
@@ -2,12 +2,10 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
class GenerateChangelogAction < Action
|
4
4
|
def self.run(params)
|
5
|
-
labels, pull_requests =
|
6
|
-
base_branch: params[:base_branch],
|
7
|
-
github_api_token: params[:github_api_token])
|
5
|
+
labels, pull_requests = Helper::ChangelogGeneratorFetcher.fetch_github_data(params, lane_context)
|
8
6
|
|
9
7
|
tag_limit = params[:max_number_of_tags]
|
10
|
-
tags = params[:tags] ||
|
8
|
+
tags = params[:tags] || Helper::ChangelogGeneratorHelper.git_tags(tag_limit)
|
11
9
|
releases = []
|
12
10
|
|
13
11
|
# Unreleased section
|
@@ -8,9 +8,7 @@ module Fastlane
|
|
8
8
|
tag_b = prompt_tag("Please enter second tag: ", [tag_a], true)
|
9
9
|
end
|
10
10
|
|
11
|
-
labels, pull_requests =
|
12
|
-
base_branch: params[:base_branch],
|
13
|
-
github_api_token: params[:github_api_token])
|
11
|
+
labels, pull_requests = Helper::ChangelogGeneratorFetcher.fetch_github_data(params, lane_context)
|
14
12
|
|
15
13
|
release = Helper::ChangelogGeneratorRelease.new(labels, pull_requests, tag_b, tag_a)
|
16
14
|
Helper::ChangelogGeneratorRender.new([release], labels, params).to_markdown
|
@@ -18,10 +16,16 @@ module Fastlane
|
|
18
16
|
|
19
17
|
def self.prompt_tag(message = '', excluded_tags = [], allow_none = false)
|
20
18
|
no_tag_text = 'No tag'
|
19
|
+
other_tag_text = 'Enter tag manually'
|
20
|
+
tag_limit = 10
|
21
21
|
|
22
|
-
available_tags =
|
22
|
+
available_tags = Helper::ChangelogGeneratorHelper.git_tags
|
23
23
|
available_tags.reject! { |tag| excluded_tags.include?(tag) }
|
24
|
+
tags_count = available_tags.count
|
25
|
+
|
26
|
+
available_tags = available_tags.take(tag_limit)
|
24
27
|
available_tags << no_tag_text if allow_none
|
28
|
+
available_tags << other_tag_text if tags_count > tag_limit
|
25
29
|
|
26
30
|
if allow_none && available_tags.count == 1
|
27
31
|
UI.important("Skiping second tag because there are no tags available.")
|
@@ -30,6 +34,7 @@ module Fastlane
|
|
30
34
|
|
31
35
|
tag = UI.select(message, available_tags)
|
32
36
|
tag = nil if tag == no_tag_text
|
37
|
+
tag = UI.input('Tag: ') if tag == other_tag_text
|
33
38
|
tag
|
34
39
|
end
|
35
40
|
|
@@ -3,11 +3,26 @@ require 'octokit'
|
|
3
3
|
module Fastlane
|
4
4
|
module Helper
|
5
5
|
class ChangelogGeneratorFetcher
|
6
|
-
|
7
|
-
|
6
|
+
module SharedValues
|
7
|
+
GENERATE_CHANGELOG_GITHUB_LABELS = :GENERATE_CHANGELOG_GITHUB_LABELS
|
8
|
+
GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS = :GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS
|
9
|
+
end
|
8
10
|
|
11
|
+
def self.fetch_github_data(params, lane_context)
|
12
|
+
Actions.verify_gem!('octokit')
|
9
13
|
Octokit.auto_paginate = true
|
10
14
|
|
15
|
+
labels = lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_LABELS]
|
16
|
+
pull_requests = lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS]
|
17
|
+
if labels && pull_requests
|
18
|
+
UI.important "Skipping API call because labels & pull requests are cached"
|
19
|
+
return labels, pull_requests
|
20
|
+
end
|
21
|
+
|
22
|
+
project = params[:github_project]
|
23
|
+
base_branch = params[:base_branch]
|
24
|
+
access_token = params[:github_api_token]
|
25
|
+
|
11
26
|
issues_map = {}
|
12
27
|
Octokit.issues(project, state: 'closed', access_token: access_token).each do |issue|
|
13
28
|
issues_map[issue.number] = issue
|
@@ -32,6 +47,9 @@ module Fastlane
|
|
32
47
|
pr.label_ids = issues_map[pr.number].labels.map(&:id)
|
33
48
|
end
|
34
49
|
|
50
|
+
lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_LABELS] = labels
|
51
|
+
lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS] = pull_requests
|
52
|
+
|
35
53
|
return labels, pull_requests
|
36
54
|
end
|
37
55
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Helper
|
3
3
|
class ChangelogGeneratorHelper
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
UI.message("Hello from the changelog_generator plugin helper!")
|
4
|
+
def self.git_tags(limit = nil)
|
5
|
+
tags = `git tag --sort=taggerdate`.split("\n").reverse
|
6
|
+
tags = tags.take(limit) if limit
|
7
|
+
tags
|
9
8
|
end
|
10
9
|
end
|
11
10
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-changelog_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fernando Saragoca
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
@@ -117,10 +117,8 @@ files:
|
|
117
117
|
- LICENSE
|
118
118
|
- README.md
|
119
119
|
- lib/fastlane/plugin/changelog_generator.rb
|
120
|
-
- lib/fastlane/plugin/changelog_generator/actions/fetch_github_labels_action.rb
|
121
120
|
- lib/fastlane/plugin/changelog_generator/actions/generate_changelog_action.rb
|
122
121
|
- lib/fastlane/plugin/changelog_generator/actions/generate_release_changelog_action.rb
|
123
|
-
- lib/fastlane/plugin/changelog_generator/actions/git_tags_action.rb
|
124
122
|
- lib/fastlane/plugin/changelog_generator/helper/changelog_generator_fetcher.rb
|
125
123
|
- lib/fastlane/plugin/changelog_generator/helper/changelog_generator_helper.rb
|
126
124
|
- lib/fastlane/plugin/changelog_generator/helper/changelog_generator_release.rb
|
@@ -1,70 +0,0 @@
|
|
1
|
-
module Fastlane
|
2
|
-
module Actions
|
3
|
-
class FetchGithubLabelsAction < Action
|
4
|
-
module SharedValues
|
5
|
-
GENERATE_CHANGELOG_GITHUB_LABELS = :GENERATE_CHANGELOG_GITHUB_LABELS
|
6
|
-
GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS = :GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.run(params)
|
10
|
-
Actions.verify_gem!('octokit')
|
11
|
-
|
12
|
-
labels = lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_LABELS]
|
13
|
-
pull_requests = lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS]
|
14
|
-
if labels && pull_requests
|
15
|
-
UI.important "Skipping API call because labels & pull requests are cached"
|
16
|
-
return labels, pull_requests
|
17
|
-
end
|
18
|
-
|
19
|
-
api_token = params[:github_api_token]
|
20
|
-
base_branch = params[:base_branch]
|
21
|
-
project = params[:github_project]
|
22
|
-
|
23
|
-
labels, pull_requests = Helper::ChangelogGeneratorFetcher.fetch_labels(project,
|
24
|
-
base_branch,
|
25
|
-
api_token)
|
26
|
-
lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_LABELS] = labels
|
27
|
-
lane_context[SharedValues::GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS] = pull_requests
|
28
|
-
return labels, pull_requests
|
29
|
-
end
|
30
|
-
|
31
|
-
def output
|
32
|
-
[
|
33
|
-
['GENERATE_CHANGELOG_GITHUB_LABELS', 'Fetched GitHub labels'],
|
34
|
-
['GENERATE_CHANGELOG_GITHUB_PULL_REQUESTS', 'Fetched GitHub pull requests']
|
35
|
-
]
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.description
|
39
|
-
"Fetches GitHub for labels & merged pull requests"
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.authors
|
43
|
-
["Fernando Saragoca"]
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.return_value
|
47
|
-
"A tuple with an array of labels & an array of pull requests"
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.available_options
|
51
|
-
[
|
52
|
-
FastlaneCore::ConfigItem.new(key: :github_project,
|
53
|
-
env_name: 'GENERATE_CHANGELOG_GITHUB_PROJECT',
|
54
|
-
description: 'GitHub project name, including organization'),
|
55
|
-
FastlaneCore::ConfigItem.new(key: :github_api_token,
|
56
|
-
env_name: 'GENERATE_CHANGELOG_GITHUB_API_TOKEN',
|
57
|
-
description: 'API token to access GitHub API',
|
58
|
-
default_value: ENV["GITHUB_API_TOKEN"]),
|
59
|
-
FastlaneCore::ConfigItem.new(key: :base_branch,
|
60
|
-
env_name: 'GENERATE_CHANGELOG_BASE_BRANCH',
|
61
|
-
description: 'Base branch for pull requests')
|
62
|
-
]
|
63
|
-
end
|
64
|
-
|
65
|
-
def self.is_supported?(platform)
|
66
|
-
true
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Fastlane
|
2
|
-
module Actions
|
3
|
-
class GitTagsAction < Action
|
4
|
-
def self.run(params)
|
5
|
-
tags = `git tag --sort=taggerdate`.split("\n").reverse
|
6
|
-
tags = tags.take(params[:limit]) if params[:limit]
|
7
|
-
tags
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.description
|
11
|
-
"Git tags sorted by taggerdate"
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.authors
|
15
|
-
["Fernando Saragoca"]
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.return_value
|
19
|
-
"Array of git tags sorted by taggerdate"
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.available_options
|
23
|
-
[
|
24
|
-
FastlaneCore::ConfigItem.new(key: :limit,
|
25
|
-
env_name: 'GIT_TAGS_LIMIT',
|
26
|
-
description: 'Limit number of tags to return',
|
27
|
-
is_string: false,
|
28
|
-
optional: true)
|
29
|
-
]
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.is_supported?(platform)
|
33
|
-
true
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|