mirror of
https://github.com/unraid/api.git
synced 2026-01-08 17:49:59 -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.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { getTxzName, LOCAL_BUILD_TAG, pluginNameWithExt, defaultArch, defaultBuild } from "./consts";
|
|
|
|
// Define a common interface for URL parameters
|
|
interface UrlParams {
|
|
baseUrl: string;
|
|
tag?: string;
|
|
}
|
|
|
|
interface TxzUrlParams extends UrlParams {
|
|
apiVersion: string;
|
|
}
|
|
|
|
/**
|
|
* Get the bucket path for the given tag
|
|
* ex. baseUrl = https://stable.dl.unraid.net/unraid-api
|
|
* ex. tag = PR123
|
|
* ex. returns = https://stable.dl.unraid.net/unraid-api/tag/PR123
|
|
*/
|
|
const getRootBucketPath = ({ baseUrl, tag }: UrlParams): URL => {
|
|
// Append tag to the baseUrl if tag is set, otherwise return the baseUrl
|
|
const url = new URL(baseUrl);
|
|
if (tag && tag !== LOCAL_BUILD_TAG) {
|
|
// Ensure the path ends with a trailing slash before adding the tag
|
|
url.pathname = url.pathname.replace(/\/?$/, "/") + "tag/" + tag;
|
|
}
|
|
return url;
|
|
};
|
|
|
|
/**
|
|
* Get the URL for an asset from the root bucket
|
|
* ex. returns = BASE_URL/TAG/dynamix.unraid.net.plg
|
|
*/
|
|
export const getAssetUrl = (params: UrlParams, assetName: string): string => {
|
|
const rootUrl = getRootBucketPath(params);
|
|
rootUrl.pathname = rootUrl.pathname.replace(/\/?$/, "/") + assetName;
|
|
return rootUrl.toString();
|
|
};
|
|
/**
|
|
* Get the URL for the plugin file
|
|
* ex. returns = BASE_URL/TAG/dynamix.unraid.net.plg
|
|
*/
|
|
export const getPluginUrl = (params: UrlParams): string =>
|
|
getAssetUrl(params, pluginNameWithExt);
|
|
|
|
/**
|
|
* Get the URL for the main TXZ file
|
|
* ex. returns = BASE_URL/TAG/dynamix.unraid.net-4.1.3-x86_64-1.txz
|
|
*/
|
|
export const getMainTxzUrl = (params: TxzUrlParams): string =>
|
|
getAssetUrl(params, getTxzName(params.apiVersion, defaultArch, defaultBuild));
|