@aws/pdk
Version:
All documentation is located at: https://aws.github.io/aws-pdk
460 lines (459 loc) • 15.9 kB
TypeScript
import type { awscdk, github, GitOptions, IgnoreFileOptions, java, LoggerOptions, Project, ProjectType, ProjenrcJsonOptions, RenovatebotOptions, SampleReadmeProps } from 'projen';
/**
* AwsCdkJavaAppOptions
*/
export interface AwsCdkJavaAppOptions {
/**
* Minimum version of the `constructs` library to depend on.
* @default - for CDK 1.x the default is "3.2.27", for CDK 2.x the default is
"10.0.5".
* @stability experimental
*/
readonly constructsVersion?: string;
/**
* Use pinned version instead of caret version for CDK.
* You can use this to prevent mixed versions for your CDK dependencies and to prevent auto-updates.
* If you use experimental features this will let you define the moment you include breaking changes.
* @stability experimental
*/
readonly cdkVersionPinning?: boolean;
/**
* AWS CDK modules required for testing.
* @deprecated For CDK 2.x use 'devDeps' (in node.js projects) or 'testDeps' (in java projects) instead
* @stability deprecated
*/
readonly cdkTestDependencies?: Array<string>;
/**
* If this is enabled (default), all modules declared in `cdkDependencies` will be also added as normal `dependencies` (as well as `peerDependencies`).
* This is to ensure that downstream consumers actually have your CDK dependencies installed
* when using npm < 7 or yarn, where peer dependencies are not automatically installed.
* If this is disabled, `cdkDependencies` will be added to `devDependencies` to ensure
* they are present during development.
*
* Note: this setting only applies to construct library projects
* @default true
* @deprecated Not supported in CDK v2.
* @stability deprecated
*/
readonly cdkDependenciesAsDeps?: boolean;
/**
* Which AWS CDKv1 modules this project requires.
* @deprecated For CDK 2.x use "deps" instead. (or "peerDeps" if you're building a library)
* @stability deprecated
*/
readonly cdkDependencies?: Array<string>;
/**
* Install the assertions library?
* Only needed for CDK 1.x. If using CDK 2.x then
* assertions is already included in 'aws-cdk-lib'
* @default - will be included by default for AWS CDK >= 1.111.0 < 2.0.0
* @stability experimental
*/
readonly cdkAssertions?: boolean;
/**
* Warning: NodeJS only.
* Install the
* @default - will be included by default for AWS CDK >= 1.0.0 < 2.0.0
* @deprecated The
* @stability deprecated
* @aws-cdk /assertions (in V1) and included in `aws-cdk-lib` for V2.
*/
readonly cdkAssert?: boolean;
/**
* Minimum version of the AWS CDK to depend on.
* @default "2.1.0"
* @stability experimental
*/
readonly cdkVersion?: string;
/**
* Glob patterns to include in `cdk watch`.
* @default []
* @stability experimental
*/
readonly watchIncludes?: Array<string>;
/**
* Glob patterns to exclude from `cdk watch`.
* @default []
* @stability experimental
*/
readonly watchExcludes?: Array<string>;
/**
* To protect you against unintended changes that affect your security posture, the AWS CDK Toolkit prompts you to approve security-related changes before deploying them.
* @default ApprovalLevel.BROADENING
* @stability experimental
*/
readonly requireApproval?: awscdk.ApprovalLevel;
/**
* Include all feature flags in cdk.json.
* @default true
* @stability experimental
*/
readonly featureFlags?: boolean;
/**
* Additional context to include in `cdk.json`.
* @default - no additional context
* @stability experimental
*/
readonly context?: Record<string, any>;
/**
* cdk.out directory.
* @default "cdk.out"
* @stability experimental
*/
readonly cdkout?: string;
/**
* A command to execute before synthesis.
* This command will be called when
* running `cdk synth` or when `cdk watch` identifies a change in your source
* code before redeployment.
* @default - no build command
* @stability experimental
*/
readonly buildCommand?: string;
/**
* The java package to use for the code sample.
* @default "org.acme"
* @stability experimental
*/
readonly sampleJavaPackage?: string;
/**
* Include sample code and test if the relevant directories don't exist.
* @default true
* @stability experimental
*/
readonly sample?: boolean;
/**
* List of test dependencies for this project.
* Dependencies use the format: `<groupId>/<artifactId>@<semver>`
*
* Additional dependencies can be added via `project.addTestDependency()`.
* @default []
* @stability experimental
* @featured true
*/
readonly testDeps?: Array<string>;
/**
* Options related to projenrc in java.
* @default - default options
* @stability experimental
*/
readonly projenrcJavaOptions?: java.ProjenrcOptions;
/**
* Use projenrc in java.
* This will install `projen` as a java dependency and will add a `synth` task which
* will compile & execute `main()` from `src/main/java/projenrc.java`.
* @default true
* @stability experimental
*/
readonly projenrcJava?: boolean;
/**
* Packaging options.
* @default - defaults
* @stability experimental
*/
readonly packagingOptions?: java.MavenPackagingOptions;
/**
* junit options.
* @default - defaults
* @stability experimental
*/
readonly junitOptions?: java.JunitOptions;
/**
* Include junit tests.
* @default true
* @stability experimental
*/
readonly junit?: boolean;
/**
* Final artifact output directory.
* @default "dist/java"
* @stability experimental
*/
readonly distdir?: string;
/**
* List of runtime dependencies for this project.
* Dependencies use the format: `<groupId>/<artifactId>@<semver>`
*
* Additional dependencies can be added via `project.addDependency()`.
* @default []
* @stability experimental
* @featured true
*/
readonly deps?: Array<string>;
/**
* Compile options.
* @default - defaults
* @stability experimental
*/
readonly compileOptions?: java.MavenCompileOptions;
/**
* The URL, like the name, is not required.
* This is a nice gesture for
* projects users, however, so that they know where the project lives.
* @default undefined
* @stability experimental
* @featured true
*/
readonly url?: string;
/**
* A Parent Pom can be used to have a child project inherit properties/plugins/ect in order to reduce duplication and keep standards across a large amount of repos.
* @default undefined
* @stability experimental
* @featured true
*/
readonly parentPom?: java.ParentPom;
/**
* Project packaging format.
* @default "jar"
* @stability experimental
*/
readonly packaging?: string;
/**
* Description of a project is always good.
* Although this should not replace
* formal documentation, a quick comment to any readers of the POM is always
* helpful.
* @default undefined
* @stability experimental
* @featured true
*/
readonly description?: string;
/**
* This is the last piece of the naming puzzle.
* groupId:artifactId denotes a
* single project but they cannot delineate which incarnation of that project
* we are talking about. Do we want the junit:junit of 2018 (version 4.12), or
* of 2007 (version 3.8.2)? In short: code changes, those changes should be
* versioned, and this element keeps those versions in line. It is also used
* within an artifact's repository to separate versions from each other.
* my-project version 1.0 files live in the directory structure
* $M2_REPO/org/codehaus/mojo/my-project/1.0.
* @default "0.1.0"
* @stability experimental
* @featured true
*/
readonly version?: string;
/**
* This is generally unique amongst an organization or a project.
* For example,
* all core Maven artifacts do (well, should) live under the groupId
* org.apache.maven. Group ID's do not necessarily use the dot notation, for
* example, the junit project. Note that the dot-notated groupId does not have
* to correspond to the package structure that the project contains. It is,
* however, a good practice to follow. When stored within a repository, the
* group acts much like the Java packaging structure does in an operating
* system. The dots are replaced by OS specific directory separators (such as
* '/' in Unix) which becomes a relative directory structure from the base
* repository. In the example given, the org.codehaus.mojo group lives within
* the directory $M2_REPO/org/codehaus/mojo.
* @default "org.acme"
* @stability experimental
* @featured true
*/
readonly groupId?: string;
/**
* The artifactId is generally the name that the project is known by.
* Although
* the groupId is important, people within the group will rarely mention the
* groupId in discussion (they are often all be the same ID, such as the
* MojoHaus project groupId: org.codehaus.mojo). It, along with the groupId,
* creates a key that separates this project from every other project in the
* world (at least, it should :) ). Along with the groupId, the artifactId
* fully defines the artifact's living quarters within the repository. In the
* case of the above project, my-project lives in
* $M2_REPO/org/codehaus/mojo/my-project.
* @default "my-app"
* @stability experimental
* @featured true
*/
readonly artifactId?: string;
/**
* Enable VSCode integration.
* Enabled by default for root projects. Disabled for non-root projects.
* @default true
* @stability experimental
*/
readonly vscode?: boolean;
/**
* Auto-close stale issues and pull requests.
* To disable set `stale` to `false`.
* @default - see defaults in `StaleOptions`
* @stability experimental
*/
readonly staleOptions?: github.StaleOptions;
/**
* Auto-close of stale issues and pull request.
* See `staleOptions` for options.
* @default false
* @stability experimental
*/
readonly stale?: boolean;
/**
* The README setup.
* @default - { filename: 'README.md', contents: '# replace this' }
* @stability experimental
*/
readonly readme?: SampleReadmeProps;
/**
* The name of a secret which includes a GitHub Personal Access Token to be used by projen workflows.
* This token needs to have the `repo`, `workflows`
* and `packages` scope.
* @default "PROJEN_GITHUB_TOKEN"
* @deprecated use `projenCredentials`
* @stability deprecated
*/
readonly projenTokenSecret?: string;
/**
* Choose a method of providing GitHub API access for projen workflows.
* @default - use a personal access token named PROJEN_GITHUB_TOKEN
* @stability experimental
*/
readonly projenCredentials?: github.GithubCredentials;
/**
* Which type of project this is (library/app).
* @default ProjectType.UNKNOWN
* @deprecated no longer supported at the base project level
* @stability deprecated
*/
readonly projectType?: ProjectType;
/**
* Options for mergify.
* @default - default options
* @deprecated use `githubOptions.mergifyOptions` instead
* @stability deprecated
*/
readonly mergifyOptions?: github.MergifyOptions;
/**
* Whether mergify should be enabled on this repository or not.
* @default true
* @deprecated use `githubOptions.mergify` instead
* @stability deprecated
*/
readonly mergify?: boolean;
/**
* Add a Gitpod development environment.
* @default false
* @stability experimental
*/
readonly gitpod?: boolean;
/**
* Options for GitHub integration.
* @default - see GitHubOptions
* @stability experimental
*/
readonly githubOptions?: github.GitHubOptions;
/**
* Enable GitHub integration.
* Enabled by default for root projects. Disabled for non-root projects.
* @default true
* @stability experimental
*/
readonly github?: boolean;
/**
* Add a VSCode development environment (used for GitHub Codespaces).
* @default false
* @stability experimental
*/
readonly devContainer?: boolean;
/**
* Add a `clobber` task which resets the repo to origin.
* @default - true, but false for subprojects
* @stability experimental
*/
readonly clobber?: boolean;
/**
* Configure options for automatic merging on GitHub.
* Has no effect if
* `github.mergify` or `autoMerge` is set to false.
* @default - see defaults in `AutoMergeOptions`
* @stability experimental
*/
readonly autoMergeOptions?: github.AutoMergeOptions;
/**
* Enable automatic merging on GitHub.
* Has no effect if `github.mergify`
* is set to false.
* @default true
* @stability experimental
*/
readonly autoMerge?: boolean;
/**
* Enable and configure the 'auto approve' workflow.
* @default - auto approve is disabled
* @stability experimental
*/
readonly autoApproveOptions?: github.AutoApproveOptions;
/**
* Options for renovatebot.
* @default - default options
* @stability experimental
*/
readonly renovatebotOptions?: RenovatebotOptions;
/**
* Use renovatebot to handle dependency upgrades.
* @default false
* @stability experimental
*/
readonly renovatebot?: boolean;
/**
* Options for .projenrc.json.
* @default - default options
* @stability experimental
*/
readonly projenrcJsonOptions?: ProjenrcJsonOptions;
/**
* Generate (once) .projenrc.json (in JSON). Set to `false` in order to disable .projenrc.json generation.
* @default false
* @stability experimental
*/
readonly projenrcJson?: boolean;
/**
* The shell command to use in order to run the projen CLI.
* Can be used to customize in special environments.
* @default "npx projen"
* @stability experimental
*/
readonly projenCommand?: string;
/**
* The parent project, if this project is part of a bigger project.
* @stability experimental
*/
readonly parent?: Project;
/**
* The root directory of the project.
* Relative to this directory, all files are synthesized.
*
* If this project has a parent, this directory is relative to the parent
* directory and it cannot be the same as the parent or any of it's other
* subprojects.
* @default "."
* @stability experimental
*/
readonly outdir?: string;
/**
* Configure logging options such as verbosity.
* @default {}
* @stability experimental
*/
readonly logging?: LoggerOptions;
/**
* Configuration options for git.
* @stability experimental
*/
readonly gitOptions?: GitOptions;
/**
* Configuration options for .gitignore file.
* @stability experimental
*/
readonly gitIgnoreOptions?: IgnoreFileOptions;
/**
* Whether to commit the managed files by default.
* @default true
* @stability experimental
*/
readonly commitGenerated?: boolean;
/**
* @default $BASEDIR
*/
readonly name: string;
}