fastlane-plugin-acknowledgements 1.0.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: a96fffce894ebe968c7aeef20b70802cafc44b71
4
+ data.tar.gz: 0765f8a26162b29ac1ae68baecffb77d961de436
5
+ SHA512:
6
+ metadata.gz: 8e3c4c4c686ca2a0ca837824fa5b12070b26dac1ba7752c91be27f2d0381783537998ad03000414dff39259ddf312d1c62fc3bb43304558bc1e94b82bc5e68f4
7
+ data.tar.gz: a19f080ac31cc9b8610bf3c5c8d41cf1545f19ea4624bb819459970f14ad8b9c8d8389f87c11f50d64296ae3a59a3e27074846151928774fb9b4a57315c5009e
data/LICENSE ADDED
@@ -0,0 +1,10 @@
1
+ /*
2
+ * -----------------------------------------------------------------------------------
3
+ * "THE BEER-WARE LICENSE" (Revision 42):
4
+ * <http://www.knage.net> & <https://simonrice.com> wrote this file. As long as
5
+ * you retain this notice you can do whatever you want with this stuff. If we
6
+ * meet some day, and you think this stuff is worth it, you can buy me a beer
7
+ * in return.
8
+ * Christophe Vallinas Knage & Simon Rice.
9
+ * -----------------------------------------------------------------------------------
10
+ */
data/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # Acknowledgements `fastlane` plugin
2
+
3
+ [![Fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-acknowledgements)
4
+ ![Build Status](https://api.travis-ci.org/simonrice/fastlane-plugin-acknowledgements.svg)
5
+ ![](http://ruby-gem-downloads-badge.herokuapp.com/fastlane-plugin-acknowledgements)
6
+ [![Twitter: @_simonrice](https://img.shields.io/badge/contact-@_simonrice-blue.svg?style=flat)](https://twitter.com/_simonrice)
7
+ [![License](https://img.shields.io/badge/license-Beerware_🍺-green.svg?style=flat)](https://github.com/simonrice/fastlane-plugin-acknowledgements/blob/master/LICENSE)
8
+
9
+ Helping developers give credit where it's rightfully due in an automated fashion!
10
+
11
+ This plugin builds on the good work done by Christophe Knage on [iOS AcknowledgementGenerator](https://github.com/cvknage/iOS-AcknowledgementGenerator) in the form of a Fastlane plugin, along with adding the ability to strip unwanted markdown from license files.
12
+
13
+ By the way, Christophe if you're reading this, I owe you a drink should I ever meet you 🍻.
14
+
15
+ ## Getting started
16
+
17
+ ### 1. Gather your license files
18
+
19
+ Place all of your licenses from your various dependencies in a directory (e.g., a `licenses` folder in your project directory). Each license file should be named after your dependency (so an Alamofire license file should be called `Alamofire.license`)
20
+
21
+ ### 2. Create a settings bundle in your project
22
+
23
+ You'll see the acknowledgements in your app's settings scene, so create a settings bundle & ensure it is included in your target.
24
+
25
+ ### 3. Add Plugin
26
+
27
+ ```bash
28
+ fastlane add_plugin acknowledgements
29
+ ```
30
+
31
+ ### 4. Use the plugin in the Fastfile
32
+
33
+ ```ruby
34
+ acknowledgements(
35
+ settings_bundle: 'path/to/settings.bundle',
36
+ license_path: 'path/to/licenses'
37
+ )
38
+ ```
39
+
40
+ You can also specify a different extension for your licenses using the optional `license_extension` parameter:
41
+
42
+ ```ruby
43
+ license_extension: '.acknowledgement'
44
+ ```
45
+
46
+ ## Run tests for this plugin
47
+
48
+ To run both the tests & code style validation, run
49
+
50
+ ```
51
+ rake
52
+ ```
53
+
54
+ To automatically fix many of the styling issues, use
55
+ ```
56
+ rubocop -a
57
+ ```
58
+
59
+ ## Issues and Feedback
60
+
61
+ For any other issues and feedback about this plugin, please submit it to this repository.
62
+
63
+ ## Troubleshooting
64
+
65
+ If you have trouble using plugins, check out the [Plugins Troubleshooting](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/PluginsTroubleshooting.md) doc in the main `fastlane` repo.
66
+
67
+ ## Using `fastlane` Plugins
68
+
69
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Plugins.md).
70
+
71
+ ## License
72
+
73
+ Released under the BEER-WARE License 🍺. See the
74
+ [LICENSE](https://github.com/simonrice/fastlane-plugin-acknowledgements/blob/master/LICENSE)
75
+ file for more information.
@@ -0,0 +1,138 @@
1
+ require 'CFPropertyList'
2
+
3
+ require 'redcarpet'
4
+ require 'redcarpet/render_strip'
5
+
6
+ module Fastlane
7
+ module Actions
8
+ class AcknowledgementsAction < Action
9
+ ACKNOWLEDGEMENT_GENERATOR_LICENSE = '"THE BEER-WARE LICENSE" (Revision 42):' \
10
+ '
11
+ ' \
12
+ '<http://www.knage.net> & <https://simonrice.com> wrote this file. As long as you retain this notice you ' \
13
+ 'can do whatever you want with this stuff. If we meet some day, and you think ' \
14
+ 'this stuff is worth it, you can buy me a beer in return Christophe Vallinas Knage & Simon Rice.'.freeze
15
+
16
+ def self.create_acknowledgement(name, content, settings_bundle)
17
+ # Create a arbitrary data structure of basic data types
18
+ acknowledgement = {
19
+ 'StringsTable' => 'ThirdPartyLicenses',
20
+ 'PreferenceSpecifiers' => [{
21
+ 'Type' => 'PSGroupSpecifier',
22
+ 'FooterText' => content
23
+ }]
24
+ }
25
+
26
+ # Generate name for acknowledgement plist
27
+ acknowledgement_name = "Acknowledgement-#{name}"
28
+
29
+ # Generate item for acknowledgement list
30
+ acknowledgement_list_item = {
31
+ 'Type' => 'PSChildPaneSpecifier',
32
+ 'Title' => name,
33
+ 'File' => acknowledgement_name
34
+ }
35
+
36
+ # Create plist file
37
+ plist = CFPropertyList::List.new
38
+ plist.value = CFPropertyList.guess(acknowledgement)
39
+ plist.save("#{settings_bundle}/#{acknowledgement_name}.plist", CFPropertyList::List::FORMAT_XML)
40
+
41
+ # return
42
+ acknowledgement_list_item
43
+ end
44
+
45
+ def self.save_acknowledgement_list(acknowledgement_list_items, settings_bundle)
46
+ # Create a arbitrary data structure of basic data types
47
+ acknowledgement_list = {
48
+ 'StringsTable' => 'ThirdPartyLicenses',
49
+ 'PreferenceSpecifiers' => acknowledgement_list_items
50
+ }
51
+
52
+ # Create plist file
53
+ plist = CFPropertyList::List.new
54
+ plist.value = CFPropertyList.guess(acknowledgement_list)
55
+ plist.save("#{settings_bundle}/Acknowledgements.plist", CFPropertyList::List::FORMAT_XML)
56
+ end
57
+
58
+ def self.run(params)
59
+ # UI.message "Parameter API Token: #{params[:api_token]}"
60
+
61
+ settings_bundle = params[:settings_bundle]
62
+ acknowledgement_list = []
63
+ Dir.glob("#{params[:license_path]}/*#{params[:license_extension]}") do |file|
64
+ UI.message "Parsing: #{file.split('/').last}..."
65
+
66
+ # Extract name
67
+ license_file_name = File.basename(file)
68
+ project_name = license_file_name.split('.').first
69
+
70
+ # Extract license
71
+ license_file = File.open(file)
72
+ project_license = license_file.read
73
+ parser = Redcarpet::Markdown.new(Redcarpet::Render::StripDown, space_after_headers: true)
74
+ project_license = parser.render(project_license)
75
+
76
+ # Create Acknowledgement- plist
77
+ acknowledgement_item = create_acknowledgement(project_name, project_license, settings_bundle)
78
+ license_file.close
79
+ acknowledgement_list.push(acknowledgement_item)
80
+ end
81
+
82
+ # Push AcknowledgementGenerator License
83
+ acknowledgement_generator_license = create_acknowledgement('AcknowledgementGenerator (Fastlane Edition)', ACKNOWLEDGEMENT_GENERATOR_LICENSE, settings_bundle)
84
+ acknowledgement_list.push(acknowledgement_generator_license)
85
+ sorted_acknowledgements = acknowledgement_list.sort_by { |item| item['Title'].downcase }
86
+
87
+ # Create Acknowledgements plist
88
+ UI.message "Adding acknowledgements to #{settings_bundle}..."
89
+ save_acknowledgement_list(sorted_acknowledgements, settings_bundle)
90
+
91
+ # All finished
92
+ UI.success 'Acknowledgement Generator Finished'
93
+ end
94
+
95
+ #####################################################
96
+ # @!group Documentation
97
+ #####################################################
98
+
99
+ def self.description
100
+ "Use Fastlane to give credit where it's rightfully due."
101
+ end
102
+
103
+ def self.available_options
104
+ [
105
+ FastlaneCore::ConfigItem.new(key: :settings_bundle,
106
+ env_name: 'FL_ACKNOWLEDGEMENTS_SETTINGS_BUNDLE',
107
+ description: 'Location of the settings bundle file',
108
+ verify_block: proc do |value|
109
+ UI.user_error!("No Settings Bundle path for AcknowledgementsAction given, pass using `settings_bundle: 'path/to/settings.bundle'`") unless value && !value.empty?
110
+ UI.user_error!("Couldn't find file at path '#{value}'") unless File.exist?(value)
111
+ end),
112
+
113
+ FastlaneCore::ConfigItem.new(key: :license_path,
114
+ env_name: 'FL_ACKNOWLEDGEMENTS_LICENSE_PATH',
115
+ description: 'Path containing the license files',
116
+ verify_block: proc do |value|
117
+ UI.user_error!("No License path for AcknowledgementsAction given, pass using `license_path: 'path/to/licenses/'`") unless value && !value.empty?
118
+ UI.user_error!("Couldn't find file at path '#{value}'") unless File.exist?(value)
119
+ end),
120
+
121
+ FastlaneCore::ConfigItem.new(key: :license_extension,
122
+ env_name: 'FL_ACKNOWLEDGEMENTS_LICENSE_EXTENSION',
123
+ description: "File extension for license files. Defaults to '.license'.",
124
+ default_value: '.license')
125
+ ]
126
+ end
127
+
128
+ def self.authors
129
+ # So no one will ever forget your contribution to fastlane :) You are awesome btw!
130
+ ['@_simonrice', '@cvknage']
131
+ end
132
+
133
+ def self.is_supported?(_platform)
134
+ true
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,5 @@
1
+ module Fastlane
2
+ module Acknowledgements
3
+ VERSION = '1.0.0'.freeze
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ require 'fastlane/plugin/acknowledgements/version'
2
+
3
+ module Fastlane
4
+ module Acknowledgements
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::Acknowledgements.all_classes.each do |current|
15
+ require current
16
+ end
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fastlane-plugin-acknowledgements
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Simon Rice
8
+ - Christophe Knage
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-06-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: CFPropertyList
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '2.3'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: 3.0.0
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '2.3'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ - !ruby/object:Gem::Dependency
35
+ name: redcarpet
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: pry
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: rspec
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ - !ruby/object:Gem::Dependency
91
+ name: rake
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rubocop
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: fastlane
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.104.0
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 1.104.0
132
+ description:
133
+ email:
134
+ - simon@simonrice.com
135
+ executables: []
136
+ extensions: []
137
+ extra_rdoc_files: []
138
+ files:
139
+ - LICENSE
140
+ - README.md
141
+ - lib/fastlane/plugin/acknowledgements.rb
142
+ - lib/fastlane/plugin/acknowledgements/actions/acknowledgements_action.rb
143
+ - lib/fastlane/plugin/acknowledgements/version.rb
144
+ homepage: https://github.com/simonrice/fastlane-plugin-acknowledgements
145
+ licenses:
146
+ - THE BEER-WARE LICENSE
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.6.10
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: Use Fastlane to give credit where it's rightfully due
168
+ test_files: []