fastlane-plugin-acknowledgements 1.0.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 +7 -0
- data/LICENSE +10 -0
- data/README.md +75 -0
- data/lib/fastlane/plugin/acknowledgements/actions/acknowledgements_action.rb +138 -0
- data/lib/fastlane/plugin/acknowledgements/version.rb +5 -0
- data/lib/fastlane/plugin/acknowledgements.rb +16 -0
- metadata +168 -0
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
|
+
[](https://rubygems.org/gems/fastlane-plugin-acknowledgements)
|
4
|
+

|
5
|
+

|
6
|
+
[](https://twitter.com/_simonrice)
|
7
|
+
[](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,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: []
|