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
Configuration file discovery and resolution system with support for multiple file formats and directory traversal.
function detectConfigurationFile(
fileSystem: IFileSystem,
configFileOrFolderUri: string | null,
logger?: AutorestLogger,
walkUpFolders?: boolean
): Promise<string | undefined>;Detects and returns the path to a single configuration file in the specified location.
Parameters:
fileSystem: IFileSystem - File system interface for file operationsconfigFileOrFolderUri: string | null - URI or folder path to search inlogger?: AutorestLogger - Optional logger for diagnostic messageswalkUpFolders?: boolean - Whether to recursively check parent folders (default: false)Returns:
Promise<string | undefined> - Path to the detected configuration file, or undefined if none foundResolution Priority:
readme.md)Example:
import { detectConfigurationFile } from "@autorest/configuration";
import { RealFileSystem } from "@azure-tools/datastore";
const fileSystem = new RealFileSystem();
const configFile = await detectConfigurationFile(
fileSystem,
"./config",
logger,
true // Walk up parent folders
);
if (configFile) {
console.log(`Found configuration: ${configFile}`);
}function detectConfigurationFiles(
fileSystem: IFileSystem,
configFileOrFolderUri: string | null,
logger?: AutorestLogger,
walkUpFolders?: boolean
): Promise<Array<string>>;Detects and returns paths to all configuration files in the specified location.
Parameters:
fileSystem: IFileSystem - File system interface for file operationsconfigFileOrFolderUri: string | null - URI or folder path to search inlogger?: AutorestLogger - Optional logger for diagnostic messageswalkUpFolders?: boolean - Whether to recursively check parent folders (default: false)Returns:
Promise<Array<string>> - Array of paths to all detected configuration filesExample:
import { detectConfigurationFiles } from "@autorest/configuration";
import { RealFileSystem } from "@azure-tools/datastore";
const fileSystem = new RealFileSystem();
const configFiles = await detectConfigurationFiles(
fileSystem,
"./",
logger
);
console.log(`Found ${configFiles.length} configuration files:`);
configFiles.forEach(file => console.log(` ${file}`));const DefaultConfiguration: string;The default configuration file name that AutoRest looks for (typically readme.md).
const MagicString: string;Magic string used to identify AutoRest configuration files.
The file resolution system supports multiple configuration file formats:
.md).yaml, .yml).json)When given a directory path, the resolver:
walkUpFolders is trueThe resolver identifies configuration files by:
.md, .yaml, .yml, .json)When configFileOrFolderUri is null:
detectConfigurationFilesundefined for detectConfigurationFileimport { detectConfigurationFile } from "@autorest/configuration";
import { RealFileSystem } from "@azure-tools/datastore";
const fileSystem = new RealFileSystem();
// Detect configuration in current directory
const configFile = await detectConfigurationFile(fileSystem, ".");
// Detect configuration in specific folder
const configFile2 = await detectConfigurationFile(fileSystem, "./config");
// Detect configuration with parent folder search
const configFile3 = await detectConfigurationFile(fileSystem, ".", logger, true);import { detectConfigurationFiles } from "@autorest/configuration";
// Find all configuration files in a directory
const allConfigs = await detectConfigurationFiles(fileSystem, "./configs");
// Process each configuration file
for (const configFile of allConfigs) {
const content = await fileSystem.readFile(configFile);
// Process configuration content
}import {
detectConfigurationFile,
ConfigurationManager
} from "@autorest/configuration";
const configFile = await detectConfigurationFile(fileSystem, configPath);
if (configFile) {
const configManager = new ConfigurationManager(configFile, fileSystem);
// Use detected configuration file
}function isConfigurationDocument(content: string): Promise<boolean>;Checks whether a document is a literate configuration document by looking for the AutoRest magic string.
Parameters:
content: string - Document content to check for configuration markersReturns:
Promise<boolean> - True if the document contains AutoRest configuration, false otherwiseUsage:
import { isConfigurationDocument } from "@autorest/configuration";
const content = await fileSystem.readFile("readme.md");
const isConfig = await isConfigurationDocument(content);
if (isConfig) {
console.log("File contains AutoRest configuration");
}The file resolution functions handle various error conditions:
The functions are designed to be robust and continue operation even when some file system operations fail.