50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
export interface BuildOptions {
|
|
single: boolean;
|
|
skipInstall: boolean;
|
|
skipSdkBuild: boolean;
|
|
installNativeVariants: boolean;
|
|
}
|
|
|
|
export function parseBuildOptions(args: readonly string[]): BuildOptions {
|
|
return {
|
|
single: args.includes("--single"),
|
|
skipInstall: args.includes("--skip-install"),
|
|
skipSdkBuild: args.includes("--skip-sdk-build"),
|
|
installNativeVariants: args.includes("--install-native-variants"),
|
|
};
|
|
}
|
|
|
|
export function shouldInstallNativeVariants(input: {
|
|
options: BuildOptions;
|
|
opentuiVersion: string | undefined;
|
|
}): boolean {
|
|
return Boolean(
|
|
input.opentuiVersion &&
|
|
input.options.installNativeVariants &&
|
|
!input.options.skipInstall,
|
|
);
|
|
}
|
|
|
|
export function validateBuildOptions(input: {
|
|
options: BuildOptions;
|
|
opentuiVersion: string | undefined;
|
|
targetCount: number;
|
|
}): string | undefined {
|
|
if (input.targetCount === 0) {
|
|
return "No matching targets for this platform.";
|
|
}
|
|
if (
|
|
input.opentuiVersion &&
|
|
!input.options.single &&
|
|
!input.options.skipInstall &&
|
|
!input.options.installNativeVariants
|
|
) {
|
|
return [
|
|
"Cross-platform OpenTUI builds require native package variants.",
|
|
"Pass --install-native-variants to allow the build script to run bun install for all OpenTUI native packages.",
|
|
"Pass --skip-install only when those packages are already installed.",
|
|
].join("\n");
|
|
}
|
|
return undefined;
|
|
}
|