fastlane-plugin-privatexcframeworkpackaging 0.3.2
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 +21 -0
- data/README.md +83 -0
- data/lib/fastlane/plugin/privatexcframeworkpackaging/actions/privatexcframeworkpackaging_action.rb +246 -0
- data/lib/fastlane/plugin/privatexcframeworkpackaging/template/package_base_template.txt +14 -0
- data/lib/fastlane/plugin/privatexcframeworkpackaging/template/package_binary_target_template.txt +5 -0
- data/lib/fastlane/plugin/privatexcframeworkpackaging/template/package_library_item_template.txt +4 -0
- data/lib/fastlane/plugin/privatexcframeworkpackaging/version.rb +5 -0
- data/lib/fastlane/plugin/privatexcframeworkpackaging.rb +16 -0
- metadata +192 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 71bf838c5ff37939505c2f39d440b707fa2f57e1d39a78afefb49168b419b17c
|
4
|
+
data.tar.gz: 687b13ad0f7fc74ad91cdae469f898495d83922a6605b41052ec95bf2ac09af9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3ff55062ccc9a745a36ffcb0cc3770f477b5b640c7ced99bc6f14aba9113231db76cf9ede6f7aedbd27bcfaf1e0c45e0edd859b76fff9eb563da7d1b5862b46b
|
7
|
+
data.tar.gz: b9f0ba2d21b84af074264766f40964478b989cdb7284f55ea8234ce80cd17b9a2c6a26f7af59888e98b9cd1af71271674094aa99c78f56a432111c90029cd2d9
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2023 Masami Yamate <m.yamate@mail.yamatte.net>
|
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,83 @@
|
|
1
|
+
# privatexcframeworkpackaging plugin
|
2
|
+
|
3
|
+
[](https://rubygems.org/gems/fastlane-plugin-privatexcframeworkpackaging)
|
4
|
+
|
5
|
+
## Getting Started
|
6
|
+
|
7
|
+
This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-privatexcframeworkpackaging`, add it to your project by running:
|
8
|
+
|
9
|
+
```bash
|
10
|
+
fastlane add_plugin privatexcframeworkpackaging
|
11
|
+
```
|
12
|
+
|
13
|
+
## About privatexcframeworkpackaging
|
14
|
+
|
15
|
+
Create a Swift package wrapping XCFramework in a private repository.
|
16
|
+
|
17
|
+
## Preparation
|
18
|
+
|
19
|
+
### GitHub CLI
|
20
|
+
|
21
|
+
To use this plugin, you need to use GitHub CLI. Please authenticate your GitHub CLI account beforehand.
|
22
|
+
|
23
|
+
[Github CLI](https://cli.github.com/)
|
24
|
+
[Github CLI - gh auth login](https://cli.github.com/manual/gh_auth_login)
|
25
|
+
|
26
|
+
### Preparation of the Swift Package Project to be Introduced
|
27
|
+
|
28
|
+
This plugin performs the following tasks:
|
29
|
+
|
30
|
+
1. It zips the XCFramework contained in the XCFrameworks directory located directly under the root directory.
|
31
|
+
2. It automatically creates a release version for binary distribution.
|
32
|
+
3. It automatically uploads the XCFramework zip file to the release assets of the release version for distribution.
|
33
|
+
4. It automatically updates the Package.swift file using the uploaded zip file in the release assets.
|
34
|
+
5. It automatically generates a pull request for the release.
|
35
|
+
|
36
|
+
Note that the generation of XCFramework needs to be considered separately using some other method.
|
37
|
+
|
38
|
+
### Creation of the XCFrameworks Directory
|
39
|
+
|
40
|
+
|
41
|
+
Create a directory named "XCFrameworks" directly under the project directory. Place the XCFramework that you want to distribute in this directory, which you intend to distribute through a private repository.
|
42
|
+
|
43
|
+
```sh
|
44
|
+
mkdir ./XCFrameworks
|
45
|
+
```
|
46
|
+
|
47
|
+
### Create a configuration file
|
48
|
+
|
49
|
+
Create a file named "PrivatePackageConfig.yml" directly under the project directory.
|
50
|
+
|
51
|
+
The following is an example entry for "PrivatePackageConfig.yml". Please modify it accordingly to suit your installation environment.
|
52
|
+
|
53
|
+
```yml
|
54
|
+
default_branch_name: "main" # Default branch name for repository
|
55
|
+
package_name: "PrivateXCFrameworkPackagingExampleFramework" # Package name in Package.swift
|
56
|
+
libraries: # Library item settings included in the Product array (multiple settings possible)
|
57
|
+
- name: "SampleFramework" # Library Name
|
58
|
+
targets: # Name of binary target to include in library
|
59
|
+
- "SampleFramework" # binary target name
|
60
|
+
binary_targets: # Binary target name. Use the same name as the XCFramework name.
|
61
|
+
- "SampleFramework" # XCFramework name
|
62
|
+
```
|
63
|
+
|
64
|
+
## Example
|
65
|
+
|
66
|
+
For sample projects, please refer to the repository below.
|
67
|
+
[PrivateXCFrameworkPackagingExampleFramework](https://github.com/MasamiYamate/PrivateXCFrameworkPackagingExampleFramework)
|
68
|
+
|
69
|
+
## Issues and Feedback
|
70
|
+
|
71
|
+
For any other issues and feedback about this plugin, please submit it to this repository.
|
72
|
+
|
73
|
+
## Troubleshooting
|
74
|
+
|
75
|
+
If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
|
76
|
+
|
77
|
+
## Using _fastlane_ Plugins
|
78
|
+
|
79
|
+
For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
|
80
|
+
|
81
|
+
## About _fastlane_
|
82
|
+
|
83
|
+
_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).
|
data/lib/fastlane/plugin/privatexcframeworkpackaging/actions/privatexcframeworkpackaging_action.rb
ADDED
@@ -0,0 +1,246 @@
|
|
1
|
+
require 'fastlane/action'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Fastlane
|
5
|
+
module Actions
|
6
|
+
class PrivatexcframeworkpackagingAction < Action
|
7
|
+
def self.run(params)
|
8
|
+
# Configの読み込み
|
9
|
+
config = load_config
|
10
|
+
make_libraries(config)
|
11
|
+
# 事前準備
|
12
|
+
prepare_binary_upload(config)
|
13
|
+
# タグを取得する
|
14
|
+
latest_tag_result = fetch_latest_tag
|
15
|
+
# binary配布用のVersionを発行する
|
16
|
+
asset_version = make_binary_release_version(latest_tag_result)
|
17
|
+
# リリースアセットにUpするZipを生成する
|
18
|
+
make_xcframework_xip
|
19
|
+
# Checksumを生成
|
20
|
+
checksum_items = make_xcframework_checksum(config)
|
21
|
+
# Upload
|
22
|
+
upload_binary_for_release_asset(asset_version)
|
23
|
+
asset_urls = fetch_release_asset_urls(asset_version)
|
24
|
+
|
25
|
+
# ここからリリース用のPR作成フロー
|
26
|
+
# 作業ブランチの作成
|
27
|
+
new_version = asset_version.split('_').shift
|
28
|
+
branch_name = checkout_package_update_branch(new_version)
|
29
|
+
# Package.swiftの更新
|
30
|
+
update_package(config, checksum_items, asset_urls)
|
31
|
+
# Pull requestの発行
|
32
|
+
make_binary_update_pull_request(config, new_version, branch_name)
|
33
|
+
end
|
34
|
+
|
35
|
+
# 事前準備
|
36
|
+
def self.prepare_binary_upload(config)
|
37
|
+
# 既に作業用ディレクトリがある場合は削除する
|
38
|
+
`rm -rf ./Build/Zip`
|
39
|
+
# Baseブランチへの切り替え
|
40
|
+
basebranch_name = config['defaultbranch_name']
|
41
|
+
# 最新の状態を取得する
|
42
|
+
`git checkout #{basebranch_name} ; git pull`
|
43
|
+
# 最新の状態を取得する
|
44
|
+
`git checkout #{basebranch_name} ; git pull`
|
45
|
+
# XCFrameworkのディレクトリの確認
|
46
|
+
unless Dir.exist?('./XCFrameworks')
|
47
|
+
throw Exception.new('There is no directory to save XCFramework')
|
48
|
+
end
|
49
|
+
# git diffがないことを確認する
|
50
|
+
git_diff_exit_code = `git diff --exit-code --quiet & echo $?`.chomp
|
51
|
+
if git_diff_exit_code != '0'
|
52
|
+
throw Exception.new('There are differences')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# binaryリリース用のバージョンを発行する
|
57
|
+
def self.make_binary_release_version(latest_tag_result)
|
58
|
+
split_version_items = latest_tag_result.split('.')
|
59
|
+
# マイナーバージョンUp
|
60
|
+
minor_version = split_version_items[1].to_i + 1
|
61
|
+
new_version = "#{split_version_items[0]}.#{minor_version}.#{split_version_items[2].sub(/_.*/m, '')}"
|
62
|
+
# リリースアセット用のVersionの発行
|
63
|
+
now_time = Time.now
|
64
|
+
ymd_string = "#{format('%04<number>d', number: now_time.year)}#{format('%02<number>d', number: now_time.month)}#{format('%02<number>d', number: now_time.day)}"
|
65
|
+
hms_string = "#{format('%02<number>d', number: now_time.hour)}#{format('%02<number>d', number: now_time.min)}#{format('%02<number>d', number: now_time.sec)}"
|
66
|
+
asset_version = "#{new_version}_binary_#{ymd_string}_#{hms_string}"
|
67
|
+
`bundle exec gh release create #{asset_version}`
|
68
|
+
return asset_version
|
69
|
+
end
|
70
|
+
|
71
|
+
# 各frameworkをZipに圧縮する
|
72
|
+
def self.make_xcframework_xip
|
73
|
+
xcframeworks_path = './XCFrameworks'
|
74
|
+
work_dir_path = './Build/Zip'
|
75
|
+
# 作業用ディレクトリの作成
|
76
|
+
`mkdir -p #{work_dir_path}`
|
77
|
+
Dir.foreach(xcframeworks_path) do |item|
|
78
|
+
next if item == '.' || item == '..' || item == '.DS_Store'
|
79
|
+
|
80
|
+
zip_file_path = "#{work_dir_path}/#{item}.zip"
|
81
|
+
xcframework_path = "#{xcframeworks_path}/#{item}"
|
82
|
+
`zip -r -X #{zip_file_path} #{xcframework_path}`
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# 各XCFramework zipのchecksumを取得する
|
87
|
+
def self.make_xcframework_checksum(config)
|
88
|
+
result = {}
|
89
|
+
zip_dir = './Build/Zip'
|
90
|
+
Dir.foreach(zip_dir) do |item|
|
91
|
+
next if item == '.' || item == '..' || item == '.DS_Store'
|
92
|
+
|
93
|
+
framework_path = "#{zip_dir}/#{item}"
|
94
|
+
checksum = `shasum -a 256 #{framework_path}`.split( ).shift
|
95
|
+
framework_name = extraction_framework_name(item)
|
96
|
+
result[framework_name] = checksum
|
97
|
+
end
|
98
|
+
return result
|
99
|
+
end
|
100
|
+
|
101
|
+
# Package更新用のブランチをチェックアウト
|
102
|
+
def self.checkout_package_update_branch(new_version)
|
103
|
+
# Version発行後の最新の状態を取得する
|
104
|
+
`git pull`
|
105
|
+
# 作業用ブランチの作成
|
106
|
+
branch_name = "feature/update-#{new_version}"
|
107
|
+
current_branch = `git branch --contains | cut -d ' ' -f 2`
|
108
|
+
if branch_name != current_branch
|
109
|
+
`git checkout -b #{branch_name}`
|
110
|
+
end
|
111
|
+
return branch_name
|
112
|
+
end
|
113
|
+
|
114
|
+
# Update用のPull Requestを発行する
|
115
|
+
def self.make_binary_update_pull_request(config, new_version, branch_name)
|
116
|
+
`git add .`
|
117
|
+
commit_message = "Update binary #{new_version}"
|
118
|
+
`git commit -m "#{commit_message}"`
|
119
|
+
`git push --set-upstream origin #{branch_name}`
|
120
|
+
|
121
|
+
basebranch_name = config['basebranch_name']
|
122
|
+
title = "Update #{new_version}"
|
123
|
+
body = "Update XCFrameworks Version #{new_version}"
|
124
|
+
`bundle exec gh pr create --base "#{basebranch_name}" --head "#{branch_name}" --title "#{title}" --body "#{body}"`
|
125
|
+
end
|
126
|
+
|
127
|
+
# binary targetの各項目を生成する
|
128
|
+
def self.make_binary_targets(config, checksum_items, asset_urls)
|
129
|
+
result = []
|
130
|
+
binary_target_template = fetch_template('package_binary_target_template.txt')
|
131
|
+
binary_targets = config['binary_targets']
|
132
|
+
for binary_target_name in binary_targets
|
133
|
+
checksum = checksum_items[binary_target_name]
|
134
|
+
asset_url = "#{asset_urls[binary_target_name]}.zip"
|
135
|
+
binary_target_item = binary_target_template.gsub('${binary_target_name}', binary_target_name).gsub('${binary_target_url}', asset_url).gsub('${binary_check_sum}', checksum)
|
136
|
+
result.push(binary_target_item)
|
137
|
+
end
|
138
|
+
return result
|
139
|
+
end
|
140
|
+
|
141
|
+
# libraryの各項目を生成する
|
142
|
+
def self.make_libraries(config)
|
143
|
+
result = []
|
144
|
+
library_template = fetch_template('package_library_item_template.txt')
|
145
|
+
libraries = config['libraries']
|
146
|
+
for library in libraries
|
147
|
+
name = library['name']
|
148
|
+
targets = library['targets'].map { |target| '\'' + target + '\'' }.join(',')
|
149
|
+
library_item = library_template.gsub('${library_name}', name).gsub('${library_targets}', targets)
|
150
|
+
result.push(library_item)
|
151
|
+
end
|
152
|
+
return result
|
153
|
+
end
|
154
|
+
|
155
|
+
# Package.swiftを更新する
|
156
|
+
def self.update_package(config, checksum_items, asset_urls)
|
157
|
+
binary_targets = make_binary_targets(config, checksum_items, asset_urls).join(',')
|
158
|
+
libraries = make_libraries(config).join(',')
|
159
|
+
package_name = config['package_name']
|
160
|
+
update_package_template = fetch_template('package_base_template.txt')
|
161
|
+
update_package_txt = update_package_template.gsub('${package_name}', package_name).gsub('${product_items}', libraries).gsub('${binary_targets}', binary_targets)
|
162
|
+
open('./Package.swift', 'w') do |file|
|
163
|
+
file.puts(update_package_txt)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
# binaryをUploadする
|
168
|
+
def self.upload_binary_for_release_asset(tag)
|
169
|
+
zip_dir = './Build/Zip'
|
170
|
+
Dir.foreach(zip_dir) do |item|
|
171
|
+
next if item == '.' || item == '..' || item == '.DS_Store'
|
172
|
+
|
173
|
+
framework_path = "#{zip_dir}/#{item}"
|
174
|
+
`bundle exec gh release upload #{tag} #{framework_path}`
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
# 設定ファイルを取得する
|
179
|
+
def self.load_config
|
180
|
+
return open('PrivatePackageConfig.yml', 'r') { |file| YAML.load(file) }
|
181
|
+
end
|
182
|
+
|
183
|
+
# Upload済みのRelease Assetsのapi urlを取得する
|
184
|
+
def self.fetch_release_asset_urls(tag)
|
185
|
+
result = {}
|
186
|
+
assets_json = `bundle exec gh release view #{tag} --json assets`
|
187
|
+
assets_hash = JSON.load(assets_json)
|
188
|
+
assets = assets_hash['assets']
|
189
|
+
for asset in assets
|
190
|
+
api_url = asset['apiUrl']
|
191
|
+
framework_name = extraction_framework_name(asset['name'])
|
192
|
+
result[framework_name] = api_url
|
193
|
+
end
|
194
|
+
return result
|
195
|
+
end
|
196
|
+
|
197
|
+
# Package.swift更新用の各テンプレートファイルを抽出する
|
198
|
+
def self.fetch_template(file_name)
|
199
|
+
directory_path_items = __dir__.split(File::SEPARATOR)
|
200
|
+
directory_path_items.pop
|
201
|
+
plugin_root_dir_path = directory_path_items.join(File::Separator)
|
202
|
+
template_file = open("#{plugin_root_dir_path}/template/#{file_name}", 'r')
|
203
|
+
return template_file.read
|
204
|
+
end
|
205
|
+
|
206
|
+
# 拡張子付きのファイル名からFramework名称を抽出する
|
207
|
+
def self.extraction_framework_name(file_name)
|
208
|
+
# hogeFuga.xcframeworkやhogeFuga.xcframework.zipからファイル名を抽出する
|
209
|
+
return file_name.split('.').shift
|
210
|
+
end
|
211
|
+
|
212
|
+
# 最新のタグを取得する
|
213
|
+
def self.fetch_latest_tag
|
214
|
+
# タグを取得する
|
215
|
+
latest_tag_result = `git describe --tags --abbrev=0`.chomp
|
216
|
+
if latest_tag_result == ''
|
217
|
+
latest_tag_result = '0.0.0'
|
218
|
+
end
|
219
|
+
return latest_tag_result
|
220
|
+
end
|
221
|
+
|
222
|
+
def self.description
|
223
|
+
'Generate a Swift package using the XCFramework uploaded to the Release assets of a private repository.'
|
224
|
+
end
|
225
|
+
|
226
|
+
def self.authors
|
227
|
+
['Masami Yamate']
|
228
|
+
end
|
229
|
+
|
230
|
+
def self.return_value
|
231
|
+
end
|
232
|
+
|
233
|
+
def self.details
|
234
|
+
'Generate a Swift package using the XCFramework uploaded to the Release assets of a private repository.'
|
235
|
+
end
|
236
|
+
|
237
|
+
def self.available_options
|
238
|
+
[]
|
239
|
+
end
|
240
|
+
|
241
|
+
def self.is_supported?(platform)
|
242
|
+
[:ios, :mac].include?(platform)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// swift-tools-version: 5.9
|
2
|
+
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
3
|
+
|
4
|
+
import PackageDescription
|
5
|
+
|
6
|
+
let package = Package(
|
7
|
+
name: "${package_name}",
|
8
|
+
products: [
|
9
|
+
${product_items}
|
10
|
+
],
|
11
|
+
targets: [
|
12
|
+
${binary_targets}
|
13
|
+
]
|
14
|
+
)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fastlane/plugin/privatexcframeworkpackaging/version'
|
2
|
+
|
3
|
+
module Fastlane
|
4
|
+
module Privatexcframeworkpackaging
|
5
|
+
# Return all .rb files inside the "actions" and "helper" directory
|
6
|
+
def self.all_classes
|
7
|
+
Dir[File.expand_path('**/{actions}/*.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::Privatexcframeworkpackaging.all_classes.each do |current|
|
15
|
+
require current
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fastlane-plugin-privatexcframeworkpackaging
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Masami Yamate
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-12-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: fastlane
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.217.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.217.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
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: rake
|
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: rspec
|
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: rspec_junit_formatter
|
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: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.50.2
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.50.2
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-performance
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop-require_tools
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: simplecov
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description:
|
154
|
+
email: yamate.inquiry@mail.yamatte.net
|
155
|
+
executables: []
|
156
|
+
extensions: []
|
157
|
+
extra_rdoc_files: []
|
158
|
+
files:
|
159
|
+
- LICENSE
|
160
|
+
- README.md
|
161
|
+
- lib/fastlane/plugin/privatexcframeworkpackaging.rb
|
162
|
+
- lib/fastlane/plugin/privatexcframeworkpackaging/actions/privatexcframeworkpackaging_action.rb
|
163
|
+
- lib/fastlane/plugin/privatexcframeworkpackaging/template/package_base_template.txt
|
164
|
+
- lib/fastlane/plugin/privatexcframeworkpackaging/template/package_binary_target_template.txt
|
165
|
+
- lib/fastlane/plugin/privatexcframeworkpackaging/template/package_library_item_template.txt
|
166
|
+
- lib/fastlane/plugin/privatexcframeworkpackaging/version.rb
|
167
|
+
homepage: https://github.com/MasamiYamate/fastlane-plugin-privatexcframeworkpackaging
|
168
|
+
licenses:
|
169
|
+
- MIT
|
170
|
+
metadata:
|
171
|
+
rubygems_mfa_required: 'true'
|
172
|
+
post_install_message:
|
173
|
+
rdoc_options: []
|
174
|
+
require_paths:
|
175
|
+
- lib
|
176
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '2.6'
|
181
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
requirements: []
|
187
|
+
rubygems_version: 3.2.33
|
188
|
+
signing_key:
|
189
|
+
specification_version: 4
|
190
|
+
summary: Generate a Swift package using the XCFramework uploaded to the Release assets
|
191
|
+
of a private repository.
|
192
|
+
test_files: []
|