@atomist/automation-client
Version:
Atomist API for software low-level client
91 lines • 3.66 kB
TypeScript
import { Grammar } from "@atomist/microgrammar";
import { PatternMatch } from "@atomist/microgrammar/lib/PatternMatch";
import { File } from "../File";
import { ProjectAsync } from "../Project";
import { GlobOptions } from "./projectUtils";
export declare type Match<M> = M & PatternMatch;
/**
* Matches within a particular file
*/
export interface FileWithMatches<M> {
file: File;
content: string;
matches: Array<Match<M>>;
/**
* Make matches updatable
*/
makeUpdatable(): void;
}
/**
* Options for microgrammar matching
*/
export interface Opts {
/**
* Should we make the results updatable?
*/
makeUpdatable?: boolean;
/**
* If specified, transforms content of each file matched
* by the glob before running the microgrammar.
* Used to remove comments etc.
* @param {string} content
* @return {string}
*/
contentTransformer?: (content: string) => string;
}
export declare const DefaultOpts: Opts;
/**
* Integrate microgrammars with project operations to find all matches
* @param p project
* @param globPatterns file glob patterns
* @param microgrammar microgrammar to run against each eligible file
* @param opts options
*/
export declare function findMatches<M>(p: ProjectAsync, globPatterns: GlobOptions, microgrammar: Grammar<M>, opts?: Opts): Promise<Array<Match<M>>>;
/**
* Integrate microgrammars with project operations to find all matches
* @param p project
* @param globPatterns file glob patterns
* @param microgrammar microgrammar to run against each eligible file
* @param opts options
*/
export declare function findFileMatches<M>(p: ProjectAsync, globPatterns: GlobOptions, microgrammar: Grammar<M>, opts?: Opts): Promise<Array<FileWithMatches<M>>>;
/**
* Manipulate each file match containing an actual match. Will automatically match if necessary.
* @param p project
* @param {string} globPatterns
* @param {Grammar<M>} microgrammar
* @param {(fh: FileWithMatches<M>) => void} action
* @param opts options
*/
export declare function doWithFileMatches<M, P extends ProjectAsync = ProjectAsync>(p: P, globPatterns: GlobOptions, microgrammar: Grammar<M>, action: (fh: FileWithMatches<M>) => void, opts?: Opts): Promise<P>;
/**
* Convenience function to operate on matches in the project.
* Works regardless of the number of matches
* @param p project
* @param {string} globPatterns
* @param {Grammar<M>} microgrammar
* @param {(m: M) => void} action
* @param {{makeUpdatable: boolean}} opts
*/
export declare function doWithMatches<M, P extends ProjectAsync = ProjectAsync>(p: P, globPatterns: GlobOptions, microgrammar: Grammar<M>, action: (m: M) => void, opts?: Opts): Promise<P>;
/**
* Convenience function to operate on the sole match in the project.
* Fail if zero or more than one.
* @param p project
* @param {string} globPatterns
* @param {Grammar<M>} microgrammar
* @param {(m: M) => void} action
* @param {{makeUpdatable: boolean}} opts
*/
export declare function doWithUniqueMatch<M, P extends ProjectAsync = ProjectAsync>(p: P, globPatterns: GlobOptions, microgrammar: Grammar<M>, action: (m: M) => void, opts?: Opts): Promise<P>;
/**
* Similar to doWithUniqueMatch, but accepts zero matches without error
* @param p project
* @param {string} globPatterns
* @param {Grammar<M>} microgrammar
* @param {(m: M) => void} action
* @param {{makeUpdatable: boolean}} opts
*/
export declare function doWithAtMostOneMatch<M, P extends ProjectAsync = ProjectAsync>(p: P, globPatterns: GlobOptions, microgrammar: Grammar<M>, action: (m: M) => void, opts?: Opts): Promise<P>;
//# sourceMappingURL=parseUtils.d.ts.map