@interopio/desktop-cli
Version:
CLI tool for setting up, building and packaging io.Connect Desktop projects
86 lines • 3.2 kB
TypeScript
import { ComponentsStore } from './store';
import { Component } from '../component';
/**
* Local Components Store implementation
*
* This store reads components from a local directory following the same structure as the S3 store.
* Expected directory structure:
*
* componentsDirectory/
* ├── component1/
* │ ├── v1.0.0/
* │ │ ├── component1-v1.0.0-win32.zip
* │ │ ├── component1-v1.0.0-darwin.dmg
* │ │ └── component1-v1.0.0-darwin-arm64.dmg
* │ └── v1.1.0/
* │ ├── component1-v1.1.0-win32.zip
* │ └── component1-v1.1.0-darwin.dmg
* └── component2/
* └── v2.0.0/
* └── component2-v2.0.0-win32.zip
*
* Legacy support is maintained for flat file structures in the root directory.
*/
export declare class LocalComponentsStore implements ComponentsStore {
private logger;
private componentsDirectory;
constructor(componentsDirectory: string);
getInfo(): string;
getAll(): Promise<Component[]>;
download(name: string, version: string): Promise<{
name: string;
data: any;
filename: string;
}>;
/**
* Validate that the components directory exists and is accessible
*/
private validateDirectory;
/**
* Check if a file is a supported package format
*/
private isSupportedPackageFile; /**
* Create a Component object from a single package file (legacy support)
*/
private createComponentFromFile;
/**
* Create a Component object from structured directory layout
* Expected filename format: componentName-vVersion-platform.ext
* Following S3 store structure: componentName/vVersion/componentName-vVersion-platform.ext
*/
private createStructuredComponent; /**
* Scan component directory for version subdirectories
* Expected structure: componentName/vX.Y.Z/componentName-vX.Y.Z-platform.ext
*/
private scanComponentVersions;
/**
* Scan version directory for component package files
* Expected structure: vX.Y.Z/componentName-vX.Y.Z-platform.ext
*/
private scanVersionDirectory;
/**
* Parse component name and version from filename
* Supports the format: <component>-v<version>-<platform>.<ext>
* e.g. iocd-v10.0.0-darwin-arm64.dmg
*/
private parseFilename; /**
* Detect platform based on filename format and content
* Primary: Extract from <component>-v<version>-<platform>.<ext> format
* Fallback: Use file extension and naming conventions
*/
private detectPlatform;
/**
* Detect platform for structured filenames following S3 store convention
* Expected format: componentName-vVersion-platform.ext
*/
private detectPlatformFromStructuredFilename; /**
* Get the latest version from a list of components with the same name
* Simple string comparison - for proper semver, you'd want to use a semver library
*/
private getLatestVersion;
/**
* Get current platform string compatible with component naming
*/
private getCurrentPlatform;
}
//# sourceMappingURL=local.store.d.ts.map