System requirement validation and resolution for autorest.
npx @tessl/cli install tessl/npm-autorest--system-requirements@1.1.0AutoRest System Requirements is a TypeScript library that validates and resolves system requirements for various programming language runtimes (Python, Java, .NET) and generic commands. It provides both comprehensive requirement validation for AutoRest extensions and standalone utilities for checking command availability and version compatibility.
npm install @autorest/system-requirementsimport {
validateExtensionSystemRequirements,
resolveSystemRequirements,
resolveSystemRequirement,
type SystemRequirementResolution,
type SystemRequirementError,
type ExtensionSystemRequirements
} from "@autorest/system-requirements";For CommonJS:
const {
validateExtensionSystemRequirements,
resolveSystemRequirements,
resolveSystemRequirement
} = require("@autorest/system-requirements");import { validateExtensionSystemRequirements } from "@autorest/system-requirements";
// Define requirements for an extension
const requirements = {
python: { version: ">=3.6" },
java: { version: ">=11" },
dotnet: { version: ">=5.0" }
};
// Validate all requirements
const errors = await validateExtensionSystemRequirements(requirements);
if (errors.length > 0) {
console.error("System requirements not met:", errors);
} else {
console.log("All system requirements satisfied");
}AutoRest System Requirements is built around several key components:
Primary API for validating multiple system requirements and handling extension requirements with custom error messages.
function validateExtensionSystemRequirements(
requirements: ExtensionSystemRequirements
): Promise<SystemRequirementError[]>;
function resolveSystemRequirements<T extends { [name: string]: SystemRequirement }>(
requirements: T
): Promise<SystemRequirementsResults<T>>;
function resolveSystemRequirement(
name: string,
requirement: SystemRequirement
): Promise<SystemRequirementResolution | SystemRequirementError>;Python interpreter detection and version validation with support for multiple Python executables and environment-specific configurations.
function resolvePythonRequirement(
requirement: SystemRequirement
): Promise<SystemRequirementResolution | SystemRequirementError>;
function patchPythonPath(
command: PythonCommandLine,
requirement: SystemRequirement
): Promise<string[]>;Java runtime detection and version validation for AutoRest Java-based extensions.
function resolveJavaRequirement(
requirement: SystemRequirement
): Promise<SystemRequirementResolution | SystemRequirementError>;.NET runtime detection and version validation for AutoRest .NET-based extensions.
function resolveDotnetRequirement(
requirement: SystemRequirement
): Promise<SystemRequirementResolution | SystemRequirementError>;Generic command availability checking for any executable in the system PATH.
function resolveGenericSystemRequirement(
name: string
): Promise<SystemRequirementResolution | SystemRequirementError>;interface SystemRequirement {
version?: string;
environmentVariable?: string;
}
interface ExtensionSystemRequirement extends SystemRequirement {
message?: string;
}
interface ExtensionSystemRequirements {
[name: string]: ExtensionSystemRequirement;
}
interface SystemRequirementResolution {
name: string;
command: string;
additionalArgs?: string[];
}
interface SystemRequirementError extends SystemRequirementResolution {
error: true;
message: string;
neededVersion?: string;
actualVersion?: string;
}
type SystemRequirementsResults<T> = {
[key in keyof T]: SystemRequirementResolution | SystemRequirementError;
};