-
Notifications
You must be signed in to change notification settings - Fork 4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: experimental cdk migrate command (#25859)
cdk migrate command. See readme for additional description of command. Default input path is a file named "template.txt" in the parent directory for now. Default output path is the current directory. If you have any issues with the actually generated code, please create an issue on https://github.com/iph/noctilucent Please refer to noctilucent or command help supported languages to see what languages are supported. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
- Loading branch information
Showing
36 changed files
with
214 additions
and
61 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#!/bin/bash | ||
set -euo pipefail | ||
|
||
commit=${CODEBUILD_RESOLVED_SOURCE_VERSION:-} | ||
# CODEBUILD_RESOLVED_SOURCE_VERSION is not defined (i.e. local build or CodePipeline build), | ||
# use the HEAD commit hash | ||
if [ -z "${commit}" ]; then | ||
commit="$(git rev-parse --verify HEAD)" | ||
fi | ||
|
||
cat > build-info.json <<HERE | ||
{ | ||
"comment": "Generated at $(date -u +"%Y-%m-%dT%H:%M:%SZ") by generate.sh", | ||
"commit": "${commit:0:7}" | ||
} | ||
HERE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
const baseConfig = require('@aws-cdk/cdk-build-tools/config/eslintrc'); | ||
baseConfig.ignorePatterns.push('lib/init-templates/**/typescript/**/*.ts'); | ||
baseConfig.ignorePatterns.push('test/integ/cli/sam_cdk_integ_app/**/*.ts'); | ||
baseConfig.ignorePatterns.push('vendor/noctilucent/**/*.ts'); | ||
baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; | ||
module.exports = baseConfig; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -39,3 +39,6 @@ test/integ/cli/*.d.ts | |
.DS_Store | ||
|
||
junit.xml | ||
|
||
# Exclude the noctilucent WASM package | ||
lib/vendor/noctilucent/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,3 +28,6 @@ tsconfig.json | |
# exclude cdk artifacts | ||
**/cdk.out | ||
junit.xml | ||
|
||
# exclude noctilucent source | ||
/vendor/noctilucent/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
import * as fs from 'fs'; | ||
import * as path from 'path'; | ||
import { initializeProject, availableInitTemplates } from '../../lib/init'; | ||
import { warning } from '../logging'; | ||
import * as nocti from '../vendor/noctilucent'; | ||
|
||
/** The list of languages supported by the built-in noctilucent binary. */ | ||
export const MIGRATE_SUPPORTED_LANGUAGES: readonly string[] = nocti.supported_languages(); | ||
|
||
export async function cliMigrate( | ||
inputpath: string = process.cwd() + '/../template.txt', | ||
language = MIGRATE_SUPPORTED_LANGUAGES[0], | ||
generateOnly = false, | ||
outputpath = process.cwd(), | ||
) { | ||
warning('This is an experimental feature. We make no guarantees about the outcome or stability of the functionality.'); | ||
const type = 'default'; // "default" is the default type (and maps to 'app') | ||
const template = (await availableInitTemplates()).find(t => t.hasName(type!)); | ||
if (!template) { | ||
throw new Error(`couldn't find template for ${type} app type, this should never happen`); | ||
} | ||
|
||
if (!MIGRATE_SUPPORTED_LANGUAGES.includes(language)) { | ||
throw new Error(`Unsupported language for cdk migrate: ${language}. Supported languages are: ${MIGRATE_SUPPORTED_LANGUAGES.join(', ')}`); | ||
} | ||
|
||
await initializeProject(template, language, true, generateOnly, outputpath); | ||
const template_file = fs.readFileSync(inputpath, 'utf8'); | ||
const generated_app = nocti.transmute(template_file, language); | ||
|
||
// clear out the init'd bin/lib files to replace with our own | ||
delete_files(outputpath + '/lib/'); | ||
|
||
// we hardcode everything to be called noctstack still so this works for now. | ||
// Will change this to be much smarter once we can change stack name in noct | ||
const bin_app = `#!/usr/bin/env node | ||
import 'source-map-support/register'; | ||
import * as cdk from 'aws-cdk-lib'; | ||
import { NoctStack } from '../lib/generated_stack'; | ||
const app = new cdk.App(); | ||
new NoctStack(app, 'NoctStack', { | ||
/* If you don't specify 'env', this stack will be environment-agnostic. | ||
* Account/Region-dependent features and context lookups will not work, | ||
* but a single synthesized template can be deployed anywhere. */ | ||
/* Uncomment the next line to specialize this stack for the AWS Account | ||
* and Region that are implied by the current CLI configuration. */ | ||
// env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }, | ||
/* Uncomment the next line if you know exactly what Account and Region you | ||
* want to deploy the stack to. */ | ||
// env: { account: '123456789012', region: 'us-east-1' }, | ||
/* For more information, see https://docs.aws.amazon.com/cdk/latest/guide/environments.html */ | ||
});`; | ||
const myname = path.basename(outputpath); | ||
fs.writeFileSync(outputpath + '/lib/' + 'generated_stack.ts', generated_app); | ||
fs.writeFileSync(outputpath + '/bin/' + `${myname}.ts`, bin_app); | ||
} | ||
|
||
function delete_files(filepath: string) { | ||
fs.readdir(filepath, (err, files) => { | ||
if (err) throw err; | ||
for (const file of files) { | ||
fs.unlink(filepath + file, (cause) => { | ||
if (cause) throw cause; | ||
}); | ||
} | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
## Vendored-in dependencies | ||
|
||
The dependencies in this directory are checked out using the `gen` script. | ||
This will fetch and clone the noctilucent crate and generate the wasm code if | ||
that has not been done already, ensuring the dependencies are adequately | ||
checked out. | ||
|
||
In order to update the notcilucent crate, run the ./generate.sh script. If you wish | ||
to update to a different noctilucent commit hash instead of the one provided, modify | ||
the hash in the generate.sh script and then rerun ./generate.sh | ||
|
||
The `THIRD_PARTY_LICENSES` file might need updating accordingly, which can be | ||
automatically done by running `yarn pkglint`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.