AckGen

简单的 Acknowledgements Generator,用于 SPM 包许可证信息。

概述

AckGen 自动生成一个 plist 文件,其中包含项目中使用的所有 Swift 包的标题和许可证信息。
这可以用于在您的应用中为 SwiftUI List 或 UITableView 数据源提供数据。

要求

安装

  1. 在 Xcode 中将 AckGen 添加为项目的依赖项。

警告 请勿勾选可执行文件的复选框

  1. 在 Xcode 中为您的目标添加以下运行脚本
DIR=$PROJECT_TEMP_DIR/../../../SourcePackages/checkouts/AckGen
if [ -d "$DIR" ]; then
  cd $DIR
  SDKROOT=(xcrun --sdk macosx --show-sdk-path)
  swift run ackgen
else
  echo "warning: AckGen not found. Please install the package via SPM (https://github.com/MartinP7r/AckGen#installation)"
fi

请确保在构建设置中将 ENABLE_USER_SCRIPT_SANDBOXING 设置为 NO,以便上述构建阶段可以写入目标位置。

如果您希望将 plist 文件保存到项目根目录($SRCROOT/Acknowledgements.plist)以外的位置,您可以将自定义路径作为第一个命令行参数提供给上面的 ackgen

  swift run ackgen $SRCROOT/PackageLicenses.plist
  1. 如果您尚未添加生成的 plist 文件到您的项目,请添加。
    请确保取消选中 如果需要则拷贝项目 的复选框

  2. 现在您可以随意使用 plist 文件,或者为了方便起见使用 Acknowledgement 模型

import AckGen
// ...
let acknowledgements: [Acknowledgement] = Acknowledgement.all()
acknowledgements.forEach { print($0.title, $0.license) }

UI

(可选)AckGenUI 模块中包含一个基本的 SwiftUI AcknowledgementsList 组件(请参阅上面的 gif),您可以使用它快速创建一个通用的致谢列表,并嵌入到 NavigationView 中。

import AckGenUI
import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            AcknowledgementsList()
        }
    }
}

Beta

在达到 1.0 版本之前,次要版本将是不兼容的。

贡献

这是我第一次尝试构建 Swift 包,主要目的是为了练习。
不过,我希望它对其他人也有用。

如果您遇到任何问题或有建议、补充或可能的改进要分享,非常欢迎您开启 PR 或 issue,我会在时间允许的情况下尽快回复您。

TODO