@atomist/sdm-pack-fingerprints
Version:
an Atomist SDM Extension Pack for fingerprinting code
62 lines (61 loc) • 1.88 kB
TypeScript
import { Project } from "@atomist/automation-client";
/**
* Virtual project status of a repository
*/
export declare enum VirtualProjectStatus {
/**
* This is definitely not a project with virtual subprojects. We only care about the root.
*/
RootOnly = "RootOnly",
/**
* This is definitely a project with virtual subprojects whose path we've identified
*/
IdentifiedPaths = "IdentifiedPaths",
/**
* The virtual project status of this repo cannot be determined
*/
Unknown = "Unknown"
}
/**
* Virtual project we've found in a project
*/
export interface VirtualProject {
/**
* Path within the root
*/
path: string;
/**
* Reason for determining that this is a subproject
*/
reason: string;
}
export interface VirtualProjectsInfo {
readonly status: VirtualProjectStatus.IdentifiedPaths;
readonly virtualProjects: VirtualProject[];
}
export interface NoVirtualProjectsInfo {
readonly status: VirtualProjectStatus.RootOnly | VirtualProjectStatus.Unknown;
}
/**
* Constant for a project with no virtual projects:
* Only the root matters.
* @type {{status: VirtualProjectStatus.RootOnly}}
*/
export declare const RootIsOnlyProject: NoVirtualProjectsInfo;
export declare type VirtualProjectInfo = VirtualProjectsInfo | NoVirtualProjectsInfo;
/**
* Did we find multiple virtual projects?
*/
export declare function isVirtualProjectsInfo(vpi: VirtualProjectInfo): vpi is VirtualProjectsInfo;
/**
* Extended by types that can identify virtual projects under a base project
*/
export interface VirtualProjectFinder {
readonly name: string;
/**
* Determine virtual project information for this project
* @param {Project} project
* @return {Promise<VirtualProjectInfo>}
*/
findVirtualProjectInfo: (project: Project) => Promise<VirtualProjectInfo>;
}