【Swift】LicensePlistをSwiftPMで管理する

# はじめに
https://qiita.com/SNQ-2001/items/c56658193d54c040c1fb

https://qiita.com/SNQ-2001/items/e202893e37898bb0c721

SwiftFormatとSwiftLintに続いてLicensePlistをSwiftPMで管理してみました。

「swiftpm-licenseplist」というプロジェクトを作成しました。
![スクリーンショット 2023-01-15 20.34.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5f327ba1-c05e-d547-b48a-b0282696c699.png)

# やりかた
### 各種ファイルを設定
swiftpm-licenseplistに移動します。
```:ターミナル
cd /Users/miyamototaishin/Desktop/swiftpm-licenseplist
```
![スクリーンショット 2023-01-15 20.35.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1a499c8e-0852-5814-d0c0-e2ca7003c7ba.png)

BuildToolsというフォルダを作成します。
```:ターミナル
mkdir BuildTools
```
![スクリーンショット 2023-01-15 20.36.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d70f2e83-dca7-0243-7207-0c1e354a359b.png)

BuildToolsに移動します。
```:ターミナル
cd BuildTools
```
![スクリーンショット 2023-01-15 20.37.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/94441ed6-90b1-23d0-354e-e6a0e2444e4a.png)

`Package.swift`を作成します。
```:ターミナル
touch Package.swift
```
![スクリーンショット 2023-01-15 20.38.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c4091445-bcfa-fb4d-dcd5-8ae49db6b673.png)

`Empty.swift`を作成します。
```:ターミナル
touch Empty.swift
```
![スクリーンショット 2023-01-15 20.39.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/eae32ba6-aad7-f8fa-18bb-98ce1bf257eb.png)

`Package.swift`を開きます。
```:ターミナル
open Package.swift
```
![スクリーンショット 2023-01-15 20.40.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/dd04c4fe-513f-a61d-33fa-fb4d89e864ca.png)

`Package.swift`に以下をコピペします。
```swift:Package
// swift-tools-version: 5.6
import PackageDescription

let package = Package(
    name: "BuildTools",
    dependencies: [
        .package(url: "https://github.com/mono0926/LicensePlist", from: "3.23.4")
    ],
    targets: [.target(name: "BuildTools", path: "")]
)
```

### Settings.Bundleを作成
プロジェクト直下のフォルダを選択します
![スクリーンショット 2023-01-15 20.49.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e9b46196-f7bc-bd13-0692-f00817ae0558.png)

選択した状態で`⌘`+`N`を同時に押します。
① `Settings`と検索します
② 「Settings Bundle」を選択します
③ 「Next」を選択します
![スクリーンショット 2023-01-15 20.51.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/271c0089-a646-03b4-e1bf-1ddef817f280.png)

④ 名前は`Settings`のままにします
⑤ 「Create」を選択します
![スクリーンショット 2023-01-15 20.54.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a19d5540-d41e-0a10-120e-00c543f6cbd5.png)

⑥ `en.lproj`を右クリックします
⑦ 「Delete」を選択します
![スクリーンショット 2023-01-15 20.56.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7722b4f1-2236-f4d8-24a0-865c3bc1a2a4.png)

⑧ 「Move to Trash」を選択します
![スクリーンショット 2023-01-15 20.57.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/bc80d756-fca8-5f8d-544a-0dfc457b006d.png)

⑨ 「Settings.bundle」を右クリックします
⑩ 「パッケージの内容を表示」を選択します
![スクリーンショット 2023-01-15 20.59.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/19460841-e0d8-460e-7230-abff61543c00.png)

⑪ 「Root.plist」を右クリックします
⑫ 「このアプリケーションで開く」を選択します
13 Xcode以外のエディターで開きます
![スクリーンショット 2023-01-15 21.01.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9db082a6-42c4-6e1c-e7c5-aa2fe1629f74.png)

開いたら以下をコピペします。
```Root.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>StringsTable</key>
 <string>Root</string>
 <key>PreferenceSpecifiers</key>
 <array>
        <dict>
            <key>Type</key>
            <string>PSChildPaneSpecifier</string>
            <key>Title</key>
            <string>Licenses</string>
            <key>File</key>
            <string>com.mono0926.LicensePlist</string>
        </dict>
 </array>
</dict>
</plist>
```

### Run Scriptを作成
プロジェクトをダブルタップで開きます。
![スクリーンショット 2023-01-15 20.42.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/603cf5ec-e9b0-1bff-f9cd-33131e7939e6.png)

① プロジェクトを選択します
② ターゲットを選択します
③ 「Build Phases」を選択します
④ 「+」を選択します
![スクリーンショット 2023-01-15 20.44.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1c80a60d-a76d-244e-1f7b-d666786f857e.png)

⑤ 「New Run Script Phase」を選択します
![スクリーンショット 2023-01-15 20.45.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1ca53546-e707-dd23-4fed-61dfdece07e9.png)

追加された「Run Script」に以下のスクリプトをコピペします。
```sh
cd BuildTools

xcrun --sdk macosx swift build -c release
```
![スクリーンショット 2023-01-15 20.47.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1c06f195-e643-c73b-79d5-b3acd3f5ef23.png)

先ほどと同じ手順でRun Scriptを作成します。
作成したRun Scriptに以下のスクリプトをコピペします。
```sh
cd BuildTools

xcrun --sdk macosx swift build -c release \
--package-path .build/checkouts/LicensePlist \
--product license-plist

.build/checkouts/LicensePlist/.build/release/license-plist --xcodeproj-path $PROJECT_FILE_PATH --package-path Package.swift --output-path $SRCROOT/$TARGET_NAME/Settings.bundle
```
![スクリーンショット 2023-01-16 20.21.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/03930804-fdea-8291-dd09-4b6d429be846.png)

### ビルド
ビルドします。
![スクリーンショット 2023-01-15 21.08.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/352ab7bd-5b2f-ca21-1fb1-38ef6b7477f6.png)

Settings.bundle内に色々生成されたら成功です！！
![スクリーンショット 2023-01-15 21.09.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9125c626-b8d5-2f63-5036-4425c8f6fdea.png)

# おわり
できてよかったです！！