@atomist/automation-client
Version:
Atomist API for software low-level client
74 lines • 2.65 kB
TypeScript
import { HandlerContext } from "../../HandlerContext";
import { Project } from "../../project/Project";
import { EditResult, ProjectEditor } from "./projectEditor";
/**
* Used to determine EditMode on a per project basis,
* for example if we want to use a different branch name on different repos
*/
export declare type EditModeFactory = (p: Project) => EditMode;
export declare function toEditModeFactory(em: EditMode | EditModeFactory): EditModeFactory;
/**
* Root interface for information on how to apply an edit:
* E.g via a PR or commit to a branch (including master)
*/
export interface EditMode {
message: string;
/**
* Optional method to perform any additional actions on the project after
* applying the edit to persistent store--for example, setting a GitHub status
* @param {Project} p
* @param ctx HandlerContext for the current edit operation
* @return {Promise<any>}
*/
afterPersist?(p: Project, ctx: HandlerContext): Promise<any>;
}
export declare function isEditMode(em: any): em is EditMode;
/**
* Merge method to use when auto merging the branches
*/
export declare enum AutoMergeMethod {
Merge = "[auto-merge-method:merge]",
Rebase = "[auto-merge-method:rebase]",
Squash = "[auto-merge-method:squash]"
}
/**
* Trigger for branch auto merge
*/
export declare enum AutoMergeMode {
ApprovedReview = "[auto-merge:on-approve]",
SuccessfulCheck = "[auto-merge:on-check-success]"
}
/**
* Represents a commit to a project on a branch
*/
export interface BranchCommit extends EditMode {
branch: string;
autoMerge?: {
mode: AutoMergeMode | string;
method?: AutoMergeMethod;
};
}
/**
* Return a commit to master branch with the given message. Use with care!
*/
export declare function commitToMaster(message: string): BranchCommit;
export declare function isBranchCommit(em: EditMode): em is BranchCommit;
/**
* Captures extra steps that must go into raising a PR
*/
export declare class PullRequest implements BranchCommit {
branch: string;
title: string;
body: string;
message: string;
constructor(branch: string, title: string, body?: string, message?: string);
}
export declare function isPullRequest(em: EditMode): em is PullRequest;
/**
* Use for edit modes that require custom persistence
*/
export interface CustomExecutionEditMode extends EditMode {
edit<P>(p: Project, action: ProjectEditor<P>, context: HandlerContext, parameters: P): Promise<EditResult>;
}
export declare function isCustomExecutionEditMode(ei: EditMode): ei is CustomExecutionEditMode;
//# sourceMappingURL=editModes.d.ts.map