fastlane-plugin-changelog 0.9.0 → 0.10.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/LICENSE +1 -1
- data/lib/fastlane/plugin/changelog.rb +0 -61
- data/lib/fastlane/plugin/changelog/actions/read_changelog.rb +2 -2
- data/lib/fastlane/plugin/changelog/actions/stamp_changelog.rb +2 -2
- data/lib/fastlane/plugin/changelog/actions/update_changelog.rb +2 -2
- data/lib/fastlane/plugin/changelog/helper/changelog_helper.rb +66 -5
- data/lib/fastlane/plugin/changelog/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 217045bc188429e310a1e0a6c5733c0ff8dcab0a
|
4
|
+
data.tar.gz: b861687d566ac30feac7866f2b1273d09e6c891b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 704b66ac13237ca0772114f88053978886e8e4960620bbf6b8e408efee3da2c58d836c63c01ba113d3403786f2420ba858b71f728b1024fbf6523e59d1d1fec6
|
7
|
+
data.tar.gz: 8da58cd64910ec0d72bfdc15382469228088069c3cdc594290cc2253da89672e281581e281aa0d6a28062fceabd1b7a09e2321ab6545d9f879d104f9543f5a39
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c)
|
3
|
+
Copyright (c) 2018 Pavel Procházka <pprochazka72@gmail.com>
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -2,69 +2,11 @@ require 'fastlane/plugin/changelog/version'
|
|
2
2
|
|
3
3
|
module Fastlane
|
4
4
|
module Changelog
|
5
|
-
CHANGELOG_PATH = './CHANGELOG.md'
|
6
|
-
DEFAULT_CHANGELOG = '# Change Log
|
7
|
-
All notable changes to this project will be documented in this file.
|
8
|
-
|
9
|
-
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
10
|
-
and this project adheres to [Semantic Versioning](http://semver.org/).
|
11
|
-
|
12
|
-
## [Unreleased]
|
13
|
-
### Added
|
14
|
-
- Your awesome new feature'
|
15
|
-
|
16
5
|
# Return all .rb files inside the "actions" and "helper" directory
|
17
6
|
def self.all_classes
|
18
7
|
Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
|
19
8
|
end
|
20
9
|
|
21
|
-
# Offer user to setup CHANGELOG.md file in project folder (unless it already exists)
|
22
|
-
def self.setup_changelog
|
23
|
-
unless has_changelog?
|
24
|
-
if FastlaneCore::UI.confirm('Your project folder does not have CHANGELOG.md - do you want to create one now?')
|
25
|
-
create_changelog
|
26
|
-
|
27
|
-
FastlaneCore::UI.message('Changelog plugin can automaticaly create a link for comparison between two tags (see https://github.com/pajapro/fastlane-plugin-changelog#--stamp_changelog)')
|
28
|
-
if FastlaneCore::UI.confirm('Do you want to create links for comparing tags?')
|
29
|
-
repo_url = FastlaneCore::UI.input('Enter your GitHub or Bitbucket repository URL (e.g.: https://github.com/owner/project or https://bitbucket.org/owner/project):')
|
30
|
-
create_comparison_link(repo_url)
|
31
|
-
else
|
32
|
-
write_to_changelog(DEFAULT_CHANGELOG)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Does CHANGELOG.md exists in project folder?
|
39
|
-
def self.has_changelog?
|
40
|
-
File.exist?(CHANGELOG_PATH)
|
41
|
-
end
|
42
|
-
|
43
|
-
# Create CHANGELOG.md file
|
44
|
-
def self.create_changelog
|
45
|
-
FileUtils.touch 'CHANGELOG.md'
|
46
|
-
end
|
47
|
-
|
48
|
-
# Create a link for tag comparison
|
49
|
-
def self.create_comparison_link(repo_url)
|
50
|
-
if repo_url.start_with?('https://github.com')
|
51
|
-
output = DEFAULT_CHANGELOG + "\n\n[Unreleased]: #{repo_url}/compare/master...HEAD"
|
52
|
-
write_to_changelog(output)
|
53
|
-
elsif repo_url.start_with?('https://bitbucket.org')
|
54
|
-
output = DEFAULT_CHANGELOG + "\n\n[Unreleased]: #{repo_url}/compare/master..HEAD"
|
55
|
-
write_to_changelog(output)
|
56
|
-
else
|
57
|
-
FastlaneCore::UI.error('Unknown repository host')
|
58
|
-
FastlaneCore::UI.message('Creating CHANGELOG.md without links for comparing tags')
|
59
|
-
write_to_changelog(DEFAULT_CHANGELOG)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# Write given content to CHANGELOG.md
|
64
|
-
def self.write_to_changelog(changelog)
|
65
|
-
File.open(CHANGELOG_PATH, 'w') { |f| f.write(changelog) }
|
66
|
-
FastlaneCore::UI.success('Successfuly created CHANGELOG.md')
|
67
|
-
end
|
68
10
|
end
|
69
11
|
end
|
70
12
|
|
@@ -73,6 +15,3 @@ end
|
|
73
15
|
Fastlane::Changelog.all_classes.each do |current|
|
74
16
|
require current
|
75
17
|
end
|
76
|
-
|
77
|
-
# By default we want to ensure CHANGELOG.md is present
|
78
|
-
Fastlane::Changelog.setup_changelog
|
@@ -8,7 +8,7 @@ module Fastlane
|
|
8
8
|
class ReadChangelogAction < Action
|
9
9
|
def self.run(params)
|
10
10
|
changelog_path = params[:changelog_path] unless params[:changelog_path].to_s.empty?
|
11
|
-
|
11
|
+
changelog_path = Helper::ChangelogHelper.ensure_changelog_exists(changelog_path)
|
12
12
|
|
13
13
|
section_identifier = params[:section_identifier] unless params[:section_identifier].to_s.empty?
|
14
14
|
escaped_section_identifier = Regexp.escape(section_identifier[/\[(.*?)\]/, 1])
|
@@ -77,7 +77,7 @@ module Fastlane
|
|
77
77
|
def self.available_options
|
78
78
|
[
|
79
79
|
FastlaneCore::ConfigItem.new(key: :changelog_path,
|
80
|
-
env_name: "
|
80
|
+
env_name: "FL_CHANGELOG_PATH",
|
81
81
|
description: "The path to your project CHANGELOG.md",
|
82
82
|
is_string: true,
|
83
83
|
default_value: "./CHANGELOG.md",
|
@@ -6,7 +6,7 @@ module Fastlane
|
|
6
6
|
def self.run(params)
|
7
7
|
# 1. Ensure CHANGELOG.md exists
|
8
8
|
changelog_path = params[:changelog_path] unless params[:changelog_path].to_s.empty?
|
9
|
-
|
9
|
+
changelog_path = Helper::ChangelogHelper.ensure_changelog_exists(changelog_path)
|
10
10
|
|
11
11
|
# 2. Ensure there are changes in [Unreleased] section
|
12
12
|
unreleased_section_content = Actions::ReadChangelogAction.run(changelog_path: changelog_path, section_identifier: UNRELEASED_IDENTIFIER, excluded_markdown_elements: ["###"])
|
@@ -108,7 +108,7 @@ module Fastlane
|
|
108
108
|
def self.available_options
|
109
109
|
[
|
110
110
|
FastlaneCore::ConfigItem.new(key: :changelog_path,
|
111
|
-
env_name: "
|
111
|
+
env_name: "FL_CHANGELOG_PATH",
|
112
112
|
description: "The path to your project CHANGELOG.md",
|
113
113
|
is_string: true,
|
114
114
|
default_value: "./CHANGELOG.md",
|
@@ -3,7 +3,7 @@ module Fastlane
|
|
3
3
|
class UpdateChangelogAction < Action
|
4
4
|
def self.run(params)
|
5
5
|
changelog_path = params[:changelog_path] unless params[:changelog_path].to_s.empty?
|
6
|
-
|
6
|
+
changelog_path = Helper::ChangelogHelper.ensure_changelog_exists(changelog_path)
|
7
7
|
|
8
8
|
section_identifier = params[:section_identifier] unless params[:section_identifier].to_s.empty?
|
9
9
|
escaped_section_identifier = section_identifier[/\[(.*?)\]/, 1]
|
@@ -95,7 +95,7 @@ module Fastlane
|
|
95
95
|
def self.available_options
|
96
96
|
[
|
97
97
|
FastlaneCore::ConfigItem.new(key: :changelog_path,
|
98
|
-
env_name: "
|
98
|
+
env_name: "FL_CHANGELOG_PATH",
|
99
99
|
description: "The path to your project CHANGELOG.md",
|
100
100
|
is_string: true,
|
101
101
|
default_value: "./CHANGELOG.md",
|
@@ -1,13 +1,74 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Helper
|
3
|
+
CHANGELOG_PATH = './CHANGELOG.md'
|
4
|
+
DEFAULT_CHANGELOG = '# Change Log
|
5
|
+
All notable changes to this project will be documented in this file.
|
6
|
+
|
7
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
8
|
+
and this project adheres to [Semantic Versioning](http://semver.org/).
|
9
|
+
|
10
|
+
## [Unreleased]
|
11
|
+
### Added
|
12
|
+
- Your awesome new feature'
|
13
|
+
|
14
|
+
# TODO: ❗️ Add unit tests for methods in this class
|
3
15
|
class ChangelogHelper
|
4
|
-
|
5
|
-
#
|
6
|
-
#
|
7
|
-
def self.
|
8
|
-
|
16
|
+
|
17
|
+
# Ensures CHANGELOG.md exists at given path. If not, offers to create a default one.
|
18
|
+
# Returns path to CHANGELOG.md to be used
|
19
|
+
def self.ensure_changelog_exists(path)
|
20
|
+
if File.exist?(path)
|
21
|
+
FastlaneCore::UI.success "Found CHANGELOG.md at #{path}"
|
22
|
+
path
|
23
|
+
else
|
24
|
+
FastlaneCore::UI.message("Cannot find CHANGELOG.md at #{path}")
|
25
|
+
generate_changelog
|
26
|
+
CHANGELOG_PATH
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Generates CHANGELOG.md in project root
|
31
|
+
def self.generate_changelog
|
32
|
+
if FastlaneCore::UI.confirm('Do you want to generate default CHANGELOG.md in the project root?')
|
33
|
+
FileUtils.touch 'CHANGELOG.md'
|
34
|
+
generate_comparison_link
|
35
|
+
else
|
36
|
+
FastlaneCore::UI.error("Cannot continue without CHANGELOG.md file")
|
37
|
+
end
|
9
38
|
end
|
10
39
|
|
40
|
+
# Generates link for tag comparison
|
41
|
+
def self.generate_comparison_link
|
42
|
+
FastlaneCore::UI.message('Changelog plugin can automaticaly create a link for comparison between two tags (see https://github.com/pajapro/fastlane-plugin-changelog#--stamp_changelog)')
|
43
|
+
if FastlaneCore::UI.confirm('Do you want to create links for comparing tags?')
|
44
|
+
repo_url = FastlaneCore::UI.input('Enter your GitHub or Bitbucket repository URL (e.g.: https://github.com/owner/project or https://bitbucket.org/owner/project):')
|
45
|
+
compose_comparison_link(repo_url)
|
46
|
+
else
|
47
|
+
write_to_changelog(DEFAULT_CHANGELOG)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Composes link for tag comparison for GitHub or Bitbucket
|
52
|
+
def self.compose_comparison_link(repo_url)
|
53
|
+
if repo_url.start_with?('https://github.com')
|
54
|
+
output = DEFAULT_CHANGELOG + "\n\n[Unreleased]: #{repo_url}/compare/master...HEAD"
|
55
|
+
write_to_changelog(output)
|
56
|
+
elsif repo_url.start_with?('https://bitbucket.org')
|
57
|
+
output = DEFAULT_CHANGELOG + "\n\n[Unreleased]: #{repo_url}/compare/master..HEAD"
|
58
|
+
write_to_changelog(output)
|
59
|
+
else
|
60
|
+
FastlaneCore::UI.error('Unknown repository host')
|
61
|
+
FastlaneCore::UI.message('Creating CHANGELOG.md without links for comparing tags')
|
62
|
+
write_to_changelog(DEFAULT_CHANGELOG)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# Writes given content to CHANGELOG.md in project root
|
67
|
+
def self.write_to_changelog(changelog)
|
68
|
+
File.open(CHANGELOG_PATH, 'w') { |f| f.write(changelog) }
|
69
|
+
FastlaneCore::UI.success('Successfuly created CHANGELOG.md')
|
70
|
+
end
|
71
|
+
|
11
72
|
def self.get_line_separator(file_path)
|
12
73
|
f = File.open(file_path)
|
13
74
|
enum = f.each_char
|
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.10.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: 2018-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|