mirror of
https://github.com/unraid/api.git
synced 2026-01-01 22:20:05 -06:00
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added detailed versioning for plugin packages incorporating architecture and build identifiers. - Simplified and improved install/uninstall scripts with backup and dynamic package detection. - Introduced comprehensive setup, verification, patching, and cleanup scripts for the Unraid API environment. - Enhanced service control with explicit start, stop, restart, and status commands. - Added robust dependency management scripts for restoring and archiving Node.js modules. - Implemented vendor archive metadata storage and dynamic handling during build and runtime. - Added new CLI options and environment schemas for consistent build configuration. - Introduced new shutdown scripts to gracefully stop flash-backup and unraid-api services. - Added utility scripts for API version detection and vendor archive configuration. - Added a new package description file detailing Unraid API features and homepage link. - **Bug Fixes** - Improved validation and error reporting for missing manifests, dependencies, and configuration files. - Enhanced fallback logic for locating and creating vendor archives. - Fixed iframe compatibility in UI by updating HTML and Firefox preference files. - **Chores** - Updated .gitignore with generated file patterns for Node.js binaries and archives. - Removed obsolete internal documentation and legacy cleanup scripts. - Refined Docker Compose and CI workflows to pass precise API versioning and manage build artifacts. - Centralized common environment validation and CLI option definitions across build tools. - Cleaned up plugin manifest by removing Node.js and PNPM-related entities and legacy logic. - Improved logging and error handling in build and installation scripts. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { join } from "path";
|
|
import { z } from "zod";
|
|
import { Command } from "commander";
|
|
import { startingDir } from "../utils/consts";
|
|
import { deployDir } from "../utils/paths";
|
|
import { baseEnvSchema, addCommonOptions } from "./common-environment";
|
|
|
|
const txzEnvSchema = baseEnvSchema.extend({
|
|
skipValidation: z
|
|
.string()
|
|
.optional()
|
|
.default("false")
|
|
.refine((v) => v === "true" || v === "false", "Must be true or false"),
|
|
compress: z.string().optional().default("1"),
|
|
txzOutputDir: z.string().optional().default(join(startingDir, deployDir)),
|
|
});
|
|
|
|
export type TxzEnv = z.infer<typeof txzEnvSchema>;
|
|
|
|
export const validateTxzEnv = async (
|
|
envArgs: Record<string, any>
|
|
): Promise<TxzEnv> => {
|
|
const validatedEnv = txzEnvSchema.parse(envArgs);
|
|
|
|
if ("skipValidation" in validatedEnv) {
|
|
console.warn("skipValidation is true, skipping validation");
|
|
}
|
|
|
|
return validatedEnv;
|
|
};
|
|
|
|
export const setupTxzEnv = async (argv: string[]): Promise<TxzEnv> => {
|
|
// CLI setup for TXZ environment
|
|
const program = new Command();
|
|
|
|
// Add common options first
|
|
addCommonOptions(program);
|
|
|
|
// Add TXZ-specific options
|
|
program
|
|
.option("--skip-validation", "Skip validation", "false")
|
|
.option("--compress, -z", "Compress level", "1")
|
|
.parse(argv);
|
|
|
|
const options = program.opts();
|
|
|
|
const env = await validateTxzEnv(options);
|
|
console.log("TXZ environment setup successfully:", env);
|
|
return env;
|
|
};
|