Configuration management system for AutoRest's REST API client library generator
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Advanced configuration loading system with extension management, data store integration, and configuration merging from multiple sources.
interface AutorestConfigurationResult {
config: AutorestConfiguration;
extensions: ResolvedExtension[];
}Result of the configuration loading process containing the final merged configuration and resolved extensions.
Properties:
config: AutorestConfiguration - Final processed AutoRest configurationextensions: ResolvedExtension[] - Array of resolved and loaded extensionsinterface ConfigurationLoaderOptions {
fileSystem?: IFileSystem;
dataStore?: DataStore;
extensionManager?: ExtensionManager;
}Options for customizing the configuration loading process.
Properties:
fileSystem?: IFileSystem - Override the default file system implementationdataStore?: DataStore - Pass a custom data store for configuration dataextensionManager?: ExtensionManager - Extension manager for resolving extension configurationsinterface ExtensionDefinition {
name: string;
source: string;
fullyQualified: string;
}Defines an AutoRest extension with its identification and source information.
Properties:
name: string - Extension name (e.g., "csharp", "python")source: string - Extension source location or package namefullyQualified: string - Fully qualified extension identifierinterface ResolvedExtension {
definition: ExtensionDefinition;
extension: Extension;
}Represents a successfully resolved and loaded extension.
Properties:
definition: ExtensionDefinition - Extension definition informationextension: Extension - Loaded extension instanceThe configuration loader follows a comprehensive process:
import { ConfigurationLoader } from "@autorest/configuration";
import { RealFileSystem } from "@azure-tools/datastore";
import { ExtensionManager } from "@azure-tools/extension";
const options: ConfigurationLoaderOptions = {
fileSystem: new RealFileSystem(),
extensionManager: new ExtensionManager()
};
const loader = new ConfigurationLoader(options);
const result = await loader.loadConfiguration(configPath, cliOptions);
console.log("Loaded configuration:", result.config);
console.log("Resolved extensions:", result.extensions);import { CachingFileSystem } from "@azure-tools/datastore";
const options: ConfigurationLoaderOptions = {
fileSystem: new CachingFileSystem(new RealFileSystem())
};
const loader = new ConfigurationLoader(options);import { ExtensionManager } from "@azure-tools/extension";
const extensionManager = new ExtensionManager({
// Extension manager configuration
});
const options: ConfigurationLoaderOptions = {
extensionManager: extensionManager
};
const result = await loader.loadConfiguration(configPath, baseConfig);
// Access resolved extensions
for (const resolvedExt of result.extensions) {
console.log(`Loaded extension: ${resolvedExt.definition.name}`);
console.log(`Source: ${resolvedExt.definition.source}`);
}The configuration loader can work with custom data stores for advanced scenarios:
import { DataStore } from "@azure-tools/datastore";
const customDataStore = new DataStore();
const options: ConfigurationLoaderOptions = {
dataStore: customDataStore
};Configuration loading supports timeout settings to prevent hanging on network operations:
const CONFIGURATION_LOAD_TIMEOUT: number; // Timeout in millisecondsThe system supports caching of loaded configurations to improve performance:
The configuration loader provides comprehensive error handling: