@atomist/rug
Version:
TypeScript model for Atomist Rugs, see http://docs.atomist.com/
102 lines (92 loc) • 2.65 kB
text/typescript
import { PathExpression, PathExpressionEngine } from "../tree/PathExpression";
/**
* Superinterface for all Rug operations, enabling cataloging.
*/
interface RugOperation {
readonly name: string;
readonly tags?: string[];
readonly description: string;
readonly parameters?: Parameter[];
}
/**
* Well-known patterns used in operation parameters.
*/
abstract class Pattern {
public static url: string = "@url";
public static any: string = "@any";
// tslint:disable-next-line:variable-name
public static group_id: string = "@group_id";
// tslint:disable-next-line:variable-name
public static artifact_id: string = "@artifact_id";
// tslint:disable-next-line:variable-name
public static java_class: string = "@java_class";
// tslint:disable-next-line:variable-name
public static java_identifier: string = "@java_identifier";
// tslint:disable-next-line:variable-name
public static java_package: string = "@java_package";
// tslint:disable-next-line:variable-name
public static project_name: string = "@project_name";
// tslint:disable-next-line:variable-name
public static port: string = "@port";
// tslint:disable-next-line:variable-name
public static ruby_class: string = "@ruby_class";
// tslint:disable-next-line:variable-name
public static ruby_identifier: string = "@ruby_identifier";
// tslint:disable-next-line:variable-name
public static semantic_version: string = "@semantic_version";
// tslint:disable-next-line:variable-name
public static version_range: string = "@version_range";
public static uuid: string = "@uuid";
}
interface BaseParameter {
readonly pattern: string;
readonly required?: boolean;
readonly description?: string;
readonly displayName?: string;
readonly validInput?: string;
readonly displayable?: boolean;
readonly maxLength?: number;
readonly minLength?: number;
}
interface Parameter extends BaseParameter {
readonly name: string;
readonly default?: string;
}
/**
* Status of an operation.
*/
enum Status {
Success,
NoChange,
Error,
}
/**
* Result of running an editor
*/
class Result {
constructor(
public status: Status,
public message: string = "") { }
}
/**
* Severity of a comment from a review
*/
enum Severity {
Fine,
Polish,
Major,
Broken,
}
/**
* A comment from a review
*/
class ReviewComment {
constructor(
public projectName: string,
public comment: string,
public severity: Severity,
public fileName?: string,
public line?: number,
public column?: number) { }
}
export { RugOperation, Parameter, Pattern, Result, Status, ReviewComment, Severity, BaseParameter };