import { AnyOptions, Configuration } from "@atomist/automation-client/lib/configuration"; import { RepoFinder } from "@atomist/automation-client/lib/operations/common/repoFinder"; import { ProjectPersister } from "@atomist/automation-client/lib/operations/generate/generatorUtils"; import { Maker } from "@atomist/automation-client/lib/util/constructionUtils"; import { CredentialsResolver } from "../../spi/credentials/CredentialsResolver"; import { ProgressLogFactory } from "../../spi/log/ProgressLog"; import { ProjectLoader } from "../../spi/project/ProjectLoader"; import { RepoRefResolver } from "../../spi/repo-ref/RepoRefResolver"; import { AddressChannels } from "../context/addressChannels"; import { ParameterPromptFactory } from "../context/parameterPrompt"; import { PreferenceStoreFactory } from "../context/preferenceStore"; import { EnrichGoal } from "../goal/enrichGoal"; import { GoalScheduler } from "../goal/support/GoalScheduler"; import { TagGoalSet } from "../goal/tagGoalSet"; import { RepoTargets } from "./RepoTargets"; import { EventSigningConfiguration, GoalSigningConfiguration } from "./SigningKeys"; /** * Infrastructure options common to all SoftwareDeliveryMachines. * Can be used to control the behavior of an SDM, and * also to facilitate testing. */ export interface SoftwareDeliveryMachineOptions { /** * Object used to load projects */ projectLoader?: ProjectLoader; /** * Factory for loggers used to log specific activities * such as build and deployment. */ logFactory?: ProgressLogFactory; /** * Strategy for resolving Git repository references */ repoRefResolver?: RepoRefResolver; /** * Strategy for finding all repos to act on */ repoFinder?: RepoFinder; /** * Strategy for persisting new projects */ projectPersister?: ProjectPersister; /** * Strategy for resolving credentials from a handler invocation */ credentialsResolver?: CredentialsResolver; /** * Allow customization of editor targeting at per-SDM level. * If set, can still be overridden by individual editor registrations. */ targets?: Maker; /** * Optional strategy to create a new PreferenceStore implementation */ preferenceStoreFactory?: PreferenceStoreFactory; /** * Optional strategy to allow prompting for additional parameters */ parameterPromptFactory?: ParameterPromptFactory; /** * Optional strategy for launching goals in different infrastructure */ goalScheduler?: GoalScheduler | GoalScheduler[]; /** * Optional AddressChannels for communicating with system administrator * Defaults to logging a warning unless this is set. */ adminAddressChannels?: AddressChannels; /** * Callback to enrich goal metadata before it gets persisted and planned */ enrichGoal?: EnrichGoal; /** * Callback to add tags to created goal sets */ tagGoalSet?: TagGoalSet; /** * Optional set of keys to sign and verify goals that are produced and received * by this SDM. */ goalSigning?: GoalSigningConfiguration; /** * Optional set o of keys to sign and verify custom events. */ eventSigning?: EventSigningConfiguration; } /** * Configure a directory where files can be cached. * This directory is cleaned on SDM startup; files older than 2 hours are removed. */ export interface CacheConfiguration { cache?: { enabled?: boolean; /** * Directory defaults to /opt/data */ path?: string; }; } /** * Configuration that takes SoftwareDeliveryMachineOptions inside the sdm key. */ export interface SoftwareDeliveryMachineConfiguration extends Configuration { sdm: SoftwareDeliveryMachineOptions & AdditionalConfiguration & AnyOptions; } //# sourceMappingURL=SoftwareDeliveryMachineOptions.d.ts.map