mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-02-02 08:28:10 +00:00
105 lines
3.2 KiB
JavaScript
105 lines
3.2 KiB
JavaScript
const { withXcodeProject } = require("@expo/config-plugins");
|
|
|
|
const addSPMDependenciesToMainTarget = (config, options) =>
|
|
withXcodeProject(config, (config) => {
|
|
const { version, repositoryUrl, repoName, productName } = options;
|
|
const xcodeProject = config.modResults;
|
|
|
|
// update XCRemoteSwiftPackageReference
|
|
const spmReferences =
|
|
xcodeProject.hash.project.objects.XCRemoteSwiftPackageReference;
|
|
|
|
if (!spmReferences) {
|
|
xcodeProject.hash.project.objects.XCRemoteSwiftPackageReference = {};
|
|
}
|
|
|
|
const packageReferenceUUID = xcodeProject.generateUuid();
|
|
|
|
xcodeProject.hash.project.objects.XCRemoteSwiftPackageReference[
|
|
`${packageReferenceUUID} /* XCRemoteSwiftPackageReference "${repoName}" */`
|
|
] = {
|
|
isa: "XCRemoteSwiftPackageReference",
|
|
repositoryURL: repositoryUrl,
|
|
requirement: {
|
|
kind: "upToNextMajorVersion",
|
|
minimumVersion: version,
|
|
},
|
|
};
|
|
|
|
// update XCSwiftPackageProductDependency
|
|
const spmProducts =
|
|
xcodeProject.hash.project.objects.XCSwiftPackageProductDependency;
|
|
|
|
if (!spmProducts) {
|
|
xcodeProject.hash.project.objects.XCSwiftPackageProductDependency = {};
|
|
}
|
|
|
|
const packageUUID = xcodeProject.generateUuid();
|
|
|
|
xcodeProject.hash.project.objects.XCSwiftPackageProductDependency[
|
|
`${packageUUID} /* ${productName} */`
|
|
] = {
|
|
isa: "XCSwiftPackageProductDependency",
|
|
// from step before
|
|
package: `${packageReferenceUUID} /* XCRemoteSwiftPackageReference "${repoName}" */`,
|
|
productName: productName,
|
|
};
|
|
|
|
// update PBXProject
|
|
const projectId = Object.keys(
|
|
xcodeProject.hash.project.objects.PBXProject,
|
|
).at(0);
|
|
|
|
if (
|
|
!xcodeProject.hash.project.objects.PBXProject[projectId].packageReferences
|
|
) {
|
|
xcodeProject.hash.project.objects.PBXProject[
|
|
projectId
|
|
].packageReferences = [];
|
|
}
|
|
|
|
xcodeProject.hash.project.objects.PBXProject[projectId].packageReferences =
|
|
[
|
|
...xcodeProject.hash.project.objects.PBXProject[projectId]
|
|
.packageReferences,
|
|
`${packageReferenceUUID} /* XCRemoteSwiftPackageReference "${repoName}" */`,
|
|
];
|
|
|
|
// update PBXBuildFile
|
|
const frameworkUUID = xcodeProject.generateUuid();
|
|
|
|
xcodeProject.hash.project.objects.PBXBuildFile[`${frameworkUUID}_comment`] =
|
|
`${productName} in Frameworks`;
|
|
xcodeProject.hash.project.objects.PBXBuildFile[frameworkUUID] = {
|
|
isa: "PBXBuildFile",
|
|
productRef: packageUUID,
|
|
productRef_comment: productName,
|
|
};
|
|
|
|
// update PBXFrameworksBuildPhase
|
|
const buildPhaseId = Object.keys(
|
|
xcodeProject.hash.project.objects.PBXFrameworksBuildPhase,
|
|
).at(0);
|
|
|
|
if (
|
|
!xcodeProject.hash.project.objects.PBXFrameworksBuildPhase[buildPhaseId]
|
|
.files
|
|
) {
|
|
xcodeProject.hash.project.objects.PBXFrameworksBuildPhase[
|
|
buildPhaseId
|
|
].files = [];
|
|
}
|
|
|
|
xcodeProject.hash.project.objects.PBXFrameworksBuildPhase[
|
|
buildPhaseId
|
|
].files = [
|
|
...xcodeProject.hash.project.objects.PBXFrameworksBuildPhase[buildPhaseId]
|
|
.files,
|
|
`${frameworkUUID} /* ${productName} in Frameworks */`,
|
|
];
|
|
|
|
return config;
|
|
});
|
|
|
|
module.exports = addSPMDependenciesToMainTarget;
|