mirror of
https://github.com/unraid/api.git
synced 2026-05-21 08:28:36 -05:00
753f1588b8
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit • New Features - Enhanced the login experience with improved session management and two-factor authentication. - Introduced a comprehensive README for the Unraid Plugin Builder, detailing development workflows and commands. • Chores - Streamlined build, packaging, and deployment processes with updated dependency and environment configurations. - Updated Docker configurations to support pnpm as the package manager. - Added new environment variables for better configuration management. - Introduced new scripts for improved build and packaging processes. • Tests - Removed outdated test cases and simplified test setups. • Refactor - Modernized internal code structure and asynchronous handling for improved overall performance. - Transitioned imports from lodash to lodash-es for better module handling. - Updated environment variable management and configuration settings. - Enhanced the build script for improved deployment processes. - Updated the notification handling structure to improve efficiency. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
68 lines
2.1 KiB
TypeScript
Executable File
68 lines
2.1 KiB
TypeScript
Executable File
#!/usr/bin/env zx
|
|
import { mkdir, readFile, rm, writeFile } from 'fs/promises';
|
|
import { exit } from 'process';
|
|
|
|
import { $, cd } from 'zx';
|
|
|
|
import { getDeploymentVersion } from './get-deployment-version.js';
|
|
|
|
try {
|
|
// Create release and pack directories
|
|
// Clean existing deploy folder
|
|
await rm('./deploy', { recursive: true }).catch(() => {});
|
|
await mkdir('./deploy/release', { recursive: true });
|
|
await mkdir('./deploy/pack', { recursive: true });
|
|
|
|
// Build Generated Types
|
|
await $`pnpm run codegen`;
|
|
|
|
await $`pnpm run build`;
|
|
// Copy app files to plugin directory
|
|
|
|
// Get package details
|
|
const packageJson = await readFile('./package.json', 'utf-8');
|
|
const parsedPackageJson = JSON.parse(packageJson);
|
|
|
|
const deploymentVersion = await getDeploymentVersion(process.env, parsedPackageJson.version);
|
|
|
|
// Update the package.json version to the deployment version
|
|
parsedPackageJson.version = deploymentVersion;
|
|
|
|
// Create a temporary directory for packaging
|
|
await mkdir('./deploy/pack/', { recursive: true });
|
|
|
|
await writeFile('./deploy/pack/package.json', JSON.stringify(parsedPackageJson, null, 4));
|
|
// Copy necessary files to the pack directory
|
|
await $`cp -r dist README.md .env.* ecosystem.config.json ./deploy/pack/`;
|
|
|
|
// Change to the pack directory and install dependencies
|
|
cd('./deploy/pack');
|
|
|
|
console.log('Installing production dependencies...');
|
|
$.verbose = true;
|
|
await $`pnpm install --prod`;
|
|
|
|
// chmod the cli
|
|
await $`chmod +x ./dist/cli.js`;
|
|
await $`chmod +x ./dist/main.js`;
|
|
|
|
// Create the tarball
|
|
await $`tar -czf ../release/unraid-api.tgz ./`;
|
|
|
|
// Clean up
|
|
cd('..');
|
|
|
|
} catch (error) {
|
|
// Error with a command
|
|
if (Object.keys(error).includes('stderr')) {
|
|
console.log(`Failed building package. Exit code: ${error.exitCode}`);
|
|
console.log(`Error: ${error.stderr}`);
|
|
} else {
|
|
// Normal js error
|
|
console.log('Failed building package.');
|
|
console.log(`Error: ${error.message}`);
|
|
}
|
|
|
|
exit(error.exitCode);
|
|
}
|