or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

core-resolution.mddotnet-requirements.mdgeneric-resolution.mdindex.mdjava-requirements.mdpython-requirements.md
tile.json

tessl/npm-autorest--system-requirements

System requirement validation and resolution for autorest.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@autorest/system-requirements@1.1.x

To install, run

npx @tessl/cli install tessl/npm-autorest--system-requirements@1.1.0

index.mddocs/

AutoRest System Requirements

AutoRest 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.

Package Information

  • Package Name: @autorest/system-requirements
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install @autorest/system-requirements

Core Imports

import {
  validateExtensionSystemRequirements,
  resolveSystemRequirements,
  resolveSystemRequirement,
  type SystemRequirementResolution,
  type SystemRequirementError,
  type ExtensionSystemRequirements
} from "@autorest/system-requirements";

For CommonJS:

const {
  validateExtensionSystemRequirements,
  resolveSystemRequirements,
  resolveSystemRequirement
} = require("@autorest/system-requirements");

Basic Usage

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");
}

Architecture

AutoRest System Requirements is built around several key components:

  • Core Resolution Engine: Central system for validating and resolving system requirements
  • Language-Specific Resolvers: Specialized handlers for Python, Java, and .NET that understand version parsing and command detection
  • Generic Resolver: Fallback system for checking arbitrary command availability
  • Version Validation: Semantic versioning support with flexible requirement specifications
  • Error Reporting: Comprehensive error messages with resolution suggestions

Capabilities

Core System Requirements

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>;

Core Resolution

Python Requirements

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[]>;

Python Requirements

Java Requirements

Java runtime detection and version validation for AutoRest Java-based extensions.

function resolveJavaRequirement(
  requirement: SystemRequirement
): Promise<SystemRequirementResolution | SystemRequirementError>;

Java Requirements

.NET Requirements

.NET runtime detection and version validation for AutoRest .NET-based extensions.

function resolveDotnetRequirement(
  requirement: SystemRequirement
): Promise<SystemRequirementResolution | SystemRequirementError>;

.NET Requirements

Generic Command Resolution

Generic command availability checking for any executable in the system PATH.

function resolveGenericSystemRequirement(
  name: string
): Promise<SystemRequirementResolution | SystemRequirementError>;

Generic Resolution

Core Types

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;
};