fastlane-plugin-auth0_shipper 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 29e146e26763e575ba388e1dfc0ead7415eba933
4
+ data.tar.gz: 13e72d927db32d62099c28545a00be9958bc6e06
5
+ SHA512:
6
+ metadata.gz: 7b3bd221a465ecc2ffca5a26bbb807c48b9c5734c0b10a3a8cf3d42d172cc089eaeeb0db8d6a375b86e16c17c5c11e14f2e412f5ac8d2fff2dba2738977ee174
7
+ data.tar.gz: 194feafdb58a94a9c480b9871fd30d93daf318f38430308e87fa5a8cdcdde6df763b8ea21a8fc00bdef08a64a0d17062b18419e279e50bec41547c00b6c739fc
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Auth0, Inc. <support@auth0.com> (http://auth0.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # auth0_shipper plugin
2
+
3
+ [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-auth0_shipper)
4
+
5
+ ## Getting Started
6
+
7
+ This project is a [fastlane](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-auth0_shipper`, add it to your project by running:
8
+
9
+ ```bash
10
+ fastlane add_plugin auth0_shipper
11
+ ```
12
+
13
+ ## About auth0_shipper
14
+
15
+ OSS libraries release process for Auth0
16
+
17
+ **Note to author:** Add a more detailed description about this plugin here. If your plugin contains multiple actions, make sure to mention them here.
18
+
19
+ ## Example
20
+
21
+ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
22
+
23
+ **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
24
+
25
+ ## Run tests for this plugin
26
+
27
+ To run both the tests, and code style validation, run
28
+
29
+ ```
30
+ rake
31
+ ```
32
+
33
+ To automatically fix many of the styling issues, use
34
+ ```
35
+ rubocop -a
36
+ ```
37
+
38
+ ## Issues and Feedback
39
+
40
+ For any other issues and feedback about this plugin, please submit it to this repository.
41
+
42
+ ## Troubleshooting
43
+
44
+ If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
45
+
46
+ ## Using `fastlane` Plugins
47
+
48
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
49
+
50
+ ## About `fastlane`
51
+
52
+ `fastlane` is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -0,0 +1,16 @@
1
+ require 'fastlane/plugin/auth0_shipper/version'
2
+
3
+ module Fastlane
4
+ module Auth0Shipper
5
+ # Return all .rb files inside the "actions" and "helper" directory
6
+ def self.all_classes
7
+ Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
8
+ end
9
+ end
10
+ end
11
+
12
+ # By default we want to import all available actions and helpers
13
+ # A plugin can contain any number of actions and plugins
14
+ Fastlane::Auth0Shipper.all_classes.each do |current|
15
+ require current
16
+ end
@@ -0,0 +1,91 @@
1
+ module Fastlane
2
+ module Actions
3
+ class PrepareReleaseAction < Action
4
+ def self.run(params)
5
+ Actions::EnsureGitStatusCleanAction.run({})
6
+ UI.user_error!("Must specify if the release is major, minor or patch or the version number") if params[:bump].nil? && params[:version].nil?
7
+ current_version = Helper::Auth0ShipperHelper.resolve_current_version
8
+ if params[:version].nil?
9
+ next_version = Helper::Auth0ShipperHelper.calculate_next_version(current_version, params[:bump])
10
+ else
11
+ next_version = Helper::Auth0ShipperHelper.wrap_version params[:version]
12
+ end
13
+ UI.header "Preparing release for version #{next_version} 🏗"
14
+ changelog_entry = Helper::Auth0ShipperHelper.prepare_changelog(current_version, next_version, params[:organization], params[:repository])
15
+ Helper::Auth0ShipperHelper.prepare_changelog_file(params[:changelog], changelog_entry)
16
+ UI.message "\n#{changelog_entry}"
17
+ `"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" -w #{params[:changelog]}` unless UI.confirm("is CHANGELOG for version #{next_version} Ok?")
18
+ Helper::Auth0ShipperHelper.prepare_readme_file(params[:readme], current_version, next_version)
19
+ Actions::GitAddAction.run(path: [params[:readme], params[:changelog]])
20
+ Actions::IncrementVersionNumberAction.run(version_number: next_version.to_s)
21
+ Actions::CommitVersionBumpAction.run(message: "Release #{next_version}", xcodeproj: params[:xcodeproj], force: true)
22
+ Actions::AddGitTagAction.run(tag: next_version.to_s)
23
+ UI.success "Release #{next_version} ready to be uploaded! 📦"
24
+ next_version
25
+ end
26
+
27
+ def self.description
28
+ "Prepares the release for an Auth0 OSS library"
29
+ end
30
+
31
+ def self.authors
32
+ ["Hernan Zalazar"]
33
+ end
34
+
35
+ def self.return_value
36
+
37
+ end
38
+
39
+ def self.details
40
+ "Preprares the release of an Auth0 OSS library (Changelog update, version bump and tag)"
41
+ end
42
+
43
+ def self.available_options
44
+ [
45
+ FastlaneCore::ConfigItem.new(key: :bump,
46
+ env_name: "AUTH0_SHIPPER_BUMP",
47
+ description: "If the version bump is major, minor or patch",
48
+ optional: true,
49
+ type: String),
50
+ FastlaneCore::ConfigItem.new(key: :version,
51
+ env_name: "AUTH0_SHIPPER_VERSION",
52
+ description: "Version of the release to perform. It ignores bump if both are supplied",
53
+ optional: true,
54
+ type: String),
55
+ FastlaneCore::ConfigItem.new(key: :readme,
56
+ env_name: "AUTH0_SHIPPER_README",
57
+ description: "Path to the README file",
58
+ default_value: "README.md",
59
+ optional: true,
60
+ type: String),
61
+ FastlaneCore::ConfigItem.new(key: :changelog,
62
+ env_name: "AUTH0_SHIPPER_CHANGELOG",
63
+ description: "Path to the CHANGELOG file",
64
+ default_value: "CHANGELOG.md",
65
+ optional: true,
66
+ type: String),
67
+ FastlaneCore::ConfigItem.new(key: :organization,
68
+ env_name: "AUTH0_SHIPPER_ORGANIZATION",
69
+ description: "Github organization where the library is available",
70
+ default_value: "auth0",
71
+ optional: true,
72
+ type: String),
73
+ FastlaneCore::ConfigItem.new(key: :repository,
74
+ env_name: "AUTH0_SHIPPER_REPOSITORY",
75
+ description: "Github repository name where the library is available",
76
+ optional: false,
77
+ type: String),
78
+ FastlaneCore::ConfigItem.new(key: :xcodeproj,
79
+ env_name: "AUTH0_SHIPPER_XCODEPROJ",
80
+ description: "Xcode project file",
81
+ optional: false,
82
+ type: String)
83
+ ]
84
+ end
85
+
86
+ def self.is_supported?(platform)
87
+ [:ios].include?(platform)
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,38 @@
1
+ module Fastlane
2
+ module Actions
3
+ class PublishReleaseAction < Action
4
+ def self.run(params)
5
+ tag = Actions::LastGitTagAction.run({})
6
+ UI.header "Publishing release #{tag} 📨"
7
+ Actions::PodLibLintAction.run({})
8
+ Actions::PushToGitRemoteAction.run({})
9
+ Actions::PodPushAction.run({})
10
+ UI.success "Shipped #{next_version}! 🚀"
11
+ end
12
+
13
+ def self.description
14
+ "Performs a pending release represented by the latest tag"
15
+ end
16
+
17
+ def self.authors
18
+ ["Hernan Zalazar"]
19
+ end
20
+
21
+ def self.return_value
22
+
23
+ end
24
+
25
+ def self.details
26
+ "Performs the release of an Auth0 OSS library that include pod linter, push to git remote and push to CocoaPods trunk"
27
+ end
28
+
29
+ def self.available_options
30
+ []
31
+ end
32
+
33
+ def self.is_supported?(platform)
34
+ [:ios].include?(platform)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,56 @@
1
+ module Fastlane
2
+ module Helper
3
+ class Auth0ShipperHelper
4
+ require 'semantic'
5
+
6
+ def self.calculate_next_version(current, bump)
7
+ current.increment!(bump)
8
+ end
9
+
10
+ def self.wrap_version(version)
11
+ Semantic::Version.new version
12
+ end
13
+
14
+ def self.ios_current_version
15
+ current_version_number = Actions::GetVersionNumberAction.run({})
16
+ UI.user_error!("Cannot find current version number from .xcodeproj") if current_version_number.nil?
17
+ Semantic::Version.new current_version_number
18
+ end
19
+
20
+ def self.tag_current_version
21
+ tag = Actions::LastGitTagAction.run({})
22
+ Semantic::Version.new tag.to_s unless tag.nil?
23
+ end
24
+
25
+ def self.resolve_current_version
26
+ current_version_plist = ios_current_version
27
+ current_version_tag = tag_current_version
28
+ current_version = current_version_plist
29
+ current_version = UI.select("Please select current version", [current_version_plist, current_version_tag]) unless current_version_tag.nil? || (current_version_plist == current_version_tag)
30
+ end
31
+
32
+ def self.prepare_changelog(current, next_version, organization, repository)
33
+ command = "curl -H \"Accept: text/markdown\" https://webtask.it.auth0.com/api/run/wt-hernan-auth0_com-0/oss-changelog.js\\?webtask_no_cache=1\\&repo=#{repository}\\&milestone=#{next_version} -f -s"
34
+ changelog = FastlaneCore::CommandExecutor.execute(
35
+ command: command,
36
+ print_command: false,
37
+ error: proc do |error_output|
38
+ UI.user_error!("Failed to build changelog for version #{next_version}")
39
+ end
40
+ )
41
+ "# Change Log\n\n" +
42
+ "## [#{next_version}](https://github.com/#{organization}/#{repository}/tree/#{next_version}) (#{Time.now.strftime('%Y-%m-%d')})\n" +
43
+ "[Full Changelog](https://github.com/#{organization}/#{repository}/compare/#{current}...#{next_version})\n" +
44
+ changelog
45
+ end
46
+
47
+ def self.prepare_changelog_file(file, entry)
48
+ File.write(f = file, File.read(f).gsub(/# Change Log/, entry))
49
+ end
50
+
51
+ def self.prepare_readme_file(file_name, current, next_version)
52
+ File.write(f = file_name, File.read(f).gsub(/~> #{current.major}\.#{current.minor}/, "~> #{next_version.major}.#{next_version.minor}"))
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,5 @@
1
+ module Fastlane
2
+ module Auth0Shipper
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fastlane-plugin-auth0_shipper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Hernan Zalazar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-01-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: semantic
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: fastlane
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.0.3
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 2.0.3
111
+ description:
112
+ email: hernan.zalazar@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - LICENSE
118
+ - README.md
119
+ - lib/fastlane/plugin/auth0_shipper.rb
120
+ - lib/fastlane/plugin/auth0_shipper/actions/prepare_release_action.rb
121
+ - lib/fastlane/plugin/auth0_shipper/actions/publish_release_action.rb
122
+ - lib/fastlane/plugin/auth0_shipper/helper/auth0_shipper_helper.rb
123
+ - lib/fastlane/plugin/auth0_shipper/version.rb
124
+ homepage:
125
+ licenses:
126
+ - MIT
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 2.2.2
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: OSS libraries release process for Auth0
148
+ test_files: []
149
+ has_rdoc: