or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-operations.mdconfiguration.mdcore-management.mdindex.mdprogrammatic-api.md
tile.json

core-management.mddocs/

Core Management

Version management and bootstrapping functionality for managing AutoRest core installations and extensions.

Capabilities

Application Entry Point

Get the command-line application entry point for AutoRest core, with automatic bootstrapping.

/**
 * Returns the command-line application entrypoint for autorest-core
 * Bootstraps core if necessary. If initialize() was called, returns that version.
 * @param logger - Logger implementation  
 * @param requestedVersion - npm package reference (default: "latest-installed")
 * @param minimumVersion - semver minimum version string
 * @returns Promise resolving to entry point path or undefined if unavailable
 */
function getApplicationEntrypoint(
  logger: IAutorestLogger,
  requestedVersion?: string,
  minimumVersion?: string
): Promise<string | undefined>;

Usage Examples:

import { getApplicationEntrypoint } from "autorest";

// Get CLI entry point with default version
const entryPoint = await getApplicationEntrypoint(logger);
if (entryPoint) {
  console.log(`AutoRest CLI available at: ${entryPoint}`);
}

// Get specific version entry point
const specificEntry = await getApplicationEntrypoint(logger, "3.7.0");

// Get entry point with minimum version requirement
const compatibleEntry = await getApplicationEntrypoint(
  logger, 
  "latest", 
  "3.5.0"
);

Core Initialization

Bootstrap and initialize the AutoRest core module.

/**
 * Initializes the AutoRest-core module, bootstrapping from npm if required
 * @param logger - Logger implementation for output
 * @param requestedVersion - npm package reference for version (default: "latest-installed")
 * @param minimumVersion - semver string for minimum acceptable version
 * @returns Promise that resolves when initialization is complete
 */
function initialize(
  logger: IAutorestLogger,
  requestedVersion?: string,
  minimumVersion?: string
): Promise<void>;

Usage Examples:

import { initialize } from "autorest";

// Initialize with latest installed version
await initialize(logger);

// Initialize with specific version
await initialize(logger, "3.7.0");

// Initialize with version range and minimum requirement
await initialize(logger, "^3.0.0", "3.5.0");

// Initialize with npm tag
await initialize(logger, "beta");

AutoRest Instance Management

Core interface and management for AutoRest instances.

/**
 * AutoRest class promise - resolved after core is loaded
 * Use create() function instead of accessing this directly
 */
const AutoRest: Promise<IAutoRest>;

/**
 * Main AutoRest interface - actual implementation loaded dynamically from core
 * Use create() function to get instances of this interface
 */
interface AutoRest {
  /**
   * Add configuration to the AutoRest instance
   * @param config - Configuration object or settings
   */
  AddConfiguration(config: any): Promise<void>;
  
  /**
   * Process the configured specifications and generate code
   * @returns Promise resolving to generation results
   */
  Process(): Promise<GenerationResults>;
  
  // Additional methods available from dynamically loaded core
  // Exact interface depends on loaded @autorest/core version
}

Usage Examples:

import { AutoRest, create } from "autorest";

// Wait for AutoRest class to be available (not recommended - use create())
const AutoRestClass = await AutoRest;
const instance = new AutoRestClass(fileSystem, configUri);

// Recommended approach using create()
const autorest = await create(logger, fileSystem, configUri);
await autorest.AddConfiguration({ "csharp": true });
const results = await autorest.Process();

Environment Variables

Core management respects these environment variables:

  • AUTOREST_HOME: Override default AutoRest home directory (default: ~/.autorest)
  • autorest.home: Alternative to AUTOREST_HOME

Version Compatibility

AutoRest maintains compatibility ranges for core versions:

  • Current AutoRest (3.x): Requires @autorest/core ^3.0.0
  • Version selection: Uses semver patterns for compatibility checking
  • Minimum versions: Can specify minimum acceptable core versions

Error Handling

Common error scenarios in core management:

  • Initialization failures: Core module not found or incompatible version
  • Network failures: Registry unavailable during version lookups
  • Version conflicts: Requested version incompatible with current AutoRest
  • Home directory issues: Unable to create or access ~/.autorest folder

The core management functions use Promise-based error handling:

try {
  await initialize(logger, "3.7.0");
  const entryPoint = await getApplicationEntrypoint(logger);
  console.log("Core initialized successfully:", entryPoint);
} catch (error) {
  console.error("Core initialization failed:", error);
  // Handle initialization errors appropriately
}