import { awscdk, javascript } from 'projen';
import { ReleaseTrigger } from 'projen/lib/release';

const project = new awscdk.AwsCdkConstructLibrary({
  author: 'superluminar',
  authorAddress: 'https://superluminar.io',
  cdkVersion: '2.20.0',
  defaultReleaseBranch: 'main',
  projenrcTs: true,
  name: '@superluminar-io/super-eks',
  description: 'super-eks is a CDK construct that provides a preconfigured EKS installation with batteries included.',
  repositoryUrl: 'https://github.com/superluminar-io/super-eks.git',
  projenVersion: '^0.54.32',

  cdkVersionPinning: false /* Use pinned version instead of caret version for CDK. */,
  /* ConstructLibraryOptions */
  // catalog: undefined,                                                       /* Libraries will be picked up by the construct catalog when they are published to npm as jsii modules and will be published under:. */

  /* JsiiProjectOptions */
  // compat: false,                                                            /* Automatically run API compatibility test against the latest version published to npm after compilation. */
  // compatIgnore: '.compatignore',                                            /* Name of the ignore file for API compatibility tests. */
  // docgen: true,                                                             /* Automatically generate API.md from jsii. */
  // eslint: true,                                                             /* Install eslint. */
  // eslintOptions: undefined,                                                 /* Eslint options. */
  // publishToGo: undefined,                                                   /* Publish Go bindings to a git repository. */
  // publishToMaven: undefined,                                                /* Publish to maven. */
  // publishToNuget: undefined,                                                /* Publish to NuGet. */
  publishToPypi: {
    distName: 'superluminar-io.super-eks',
    module: 'superluminar_io.super_eks',
  } /* Publish to pypi. */,
  // rootdir: '.',                                                             /* undefined */

  /* NodePackageOptions */
  // allowLibraryDependencies: true,                                           /* Allow the project to include `peerDependencies` and `bundledDependencies`. */
  // authorEmail: undefined,                                                   /* Author's e-mail. */
  // authorName: undefined,                                                    /* Author's name. */
  authorOrganization: true /* Author's Organization. */,
  authorUrl: 'https://superluminar.io' /* Author's URL / Website. */,
  // autoDetectBin: true,                                                      /* Automatically add all executables under the `bin` directory to your `package.json` file under the `bin` section. */
  // bin: undefined,                                                           /* Binary programs vended with your module. */
  // bundledDeps: undefined,                                                   /* List of dependencies to bundle into this module. */
  // deps: [],                                                                 /* Runtime dependencies of this module. */
  // description: undefined,                                                   /* The description is just a string that helps people understand the purpose of the package. */
  // devDeps: [ ] /* Build dependencies for this module. */,
  // entrypoint: 'lib/index.js',                                               /* Module entrypoint (`main` in `package.json`). */
  // homepage: undefined,                                                      /* Package's Homepage / Website. */
  keywords: ['k8s', 'eks', 'kubernetes', 'aws'] /* Keywords to include in `package.json`. */,
  license: 'Apache-2.0' /* License's SPDX identifier. */,
  licensed: true /* Indicates if a license should be added. */,
  // maxNodeVersion: undefined,                                                /* Minimum node.js version to require via `engines` (inclusive). */
  minNodeVersion: '14.0.0' /* Minimum Node.js version to require via package.json `engines` (inclusive). */,
  npmAccess: javascript.NpmAccess.PUBLIC /* Access level of the npm package. */,
  // npmDistTag: 'latest',                                                     /* Tags can be used to provide an alias instead of version numbers. */
  // npmRegistryUrl: 'https://registry.npmjs.org',                             /* The base URL of the npm package registry. */
  // npmTaskExecution: NpmTaskExecution.PROJEN,                                /* Determines how tasks are executed when invoked as npm scripts (yarn/npm run xyz). */
  // packageManager: NodePackageManager.NPM, /* The Node Package Manager used to execute scripts. */
  // packageName: undefined,                                                   /* The "name" in package.json. */
  // peerDependencyOptions: undefined,                                         /* Options for `peerDeps`. */
  // projenCommand: 'npx projen',                                              /* The shell command to use in order to run the projen CLI. */
  // repository: undefined,                                                    /* The repository is the location where the actual code for your package lives. */
  // repositoryDirectory: undefined,                                           /* If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives. */
  // scripts: {},                                                              /* npm scripts to include. */
  // stability: undefined,                                                     /* Package's Stability. */

  /* NodeProjectOptions */
  // antitamper: true,                                                         /* Checks that after build there are no modified files on git. */
  // artifactsDirectory: 'dist',                                               /* A directory which will contain artifacts to be published to npm. */
  // buildWorkflow: undefined,                                                 /* Define a GitHub workflow for building PRs. */
  // codeCov: false,                                                           /* Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v1 A secret is required for private repos. Configured with @codeCovTokenSecret. */
  // codeCovTokenSecret: undefined,                                            /* Define the secret name for a specified https://codecov.io/ token A secret is required to send coverage for private repositories. */
  // copyrightOwner: undefined,                                                /* License copyright owner. */
  // copyrightPeriod: undefined,                                               /* The copyright years to put in the LICENSE file. */
  dependabot: true /* Include dependabot configuration. */,
  // dependabotOptions: undefined,                                             /* Options for dependabot. */
  gitignore: ['cdk.out', '.idea/'] /* Additional entries to .gitignore. */,
  // jest: true,                                                               /* Setup jest unit tests. */
  // jestOptions: undefined,                                                   /* Jest options. */
  // jsiiReleaseVersion: 'latest',                                             /* Version requirement of `jsii-release` which is used to publish modules to npm. */
  mergify: true /* Adds mergify configuration. */,
  // mergifyOptions: undefined,                                                /* Options for mergify. */
  // npmignore: undefined,                                                     /* Additional entries to .npmignore. */
  // npmignoreEnabled: true,                                                   /* Defines an .npmignore file. Normally this is only needed for libraries that are packaged as tarballs. */
  // projenDevDependency: true,                                                /* Indicates of "projen" should be installed as a devDependency. */
  // projenUpgradeAutoMerge: undefined,                                        /* Automatically merge projen upgrade PRs when build passes. */
  // projenUpgradeSchedule: [ '0 6 * * *' ],                                   /* Customize the projenUpgrade schedule in cron expression. */
  // projenUpgradeSecret: undefined,                                           /* Periodically submits a pull request for projen upgrades (executes `yarn projen:upgrade`). */
  // projenVersion: Semver.latest(),                                           /* Version of projen to install. */
  // pullRequestTemplate: true,                                                /* Include a GitHub pull request template. */
  // pullRequestTemplateContents: undefined,                                   /* The contents of the pull request template. */
  // rebuildBot: undefined,                                                    /* Installs a GitHub workflow which is triggered when the comment "@projen rebuild" is added to a pull request. */
  // rebuildBotCommand: 'rebuild',                                             /* The pull request bot command to use in order to trigger a rebuild and commit of the contents of the branch. */
  // releaseBranches: [], /* Branches which trigger a release. */
  releaseTrigger: ReleaseTrigger.continuous(),
  releaseToNpm: true /* Automatically release to npm when new versions are introduced. */,
  // releaseWorkflow: undefined,                                               /* Define a GitHub workflow for releasing from "main" when new versions are bumped. */
  // workflowBootstrapSteps: 'yarn install --frozen-lockfile && yarn projen',  /* Workflow steps to use in order to bootstrap this repo. */
  // workflowContainerImage: undefined,                                        /* Container image to use for GitHub workflows. */
  workflowNodeVersion: '16.10.0' /* The node version to use in GitHub workflows. */,

  typescriptVersion: '^4.6.3',
  /* ProjectOptions */
  // clobber: true,                                                            /* Add a `clobber` task which resets the repo to origin. */
  // devContainer: false,                                                      /* Add a VSCode development environment (used for GitHub Codespaces). */
  // gitpod: false,                                                            /* Add a Gitpod development environment. */
  // logging: {},                                                              /* Configure logging options such as verbosity. */
  // outdir: '.',                                                              /* The root directory of the project. */
  // parent: undefined,                                                        /* The parent project, if this project is part of a bigger project. */
  // projectType: ProjectType.UNKNOWN,                                         /* Which type of project this is (library/app). */
  // readme: undefined,                                                        /* The README setup. */
  staleOptions: {
    issues: {
      daysBeforeStale: 14,
      daysBeforeClose: -1,
    },
    pullRequest: {
      daysBeforeStale: 14,
      daysBeforeClose: -1,
    },
  },
  tsconfig: {
    compilerOptions: {
      lib: ['es2018'],
      target: 'ES2018',
    },
  },
  githubOptions: {
    pullRequestLintOptions: {
      semanticTitleOptions: {
        types: ['feat', 'fix', 'chore', 'docs'],
      },
    },
  },
});

project.synth();