From 75f9bbf79907678208c6ffdf7a50c82ac9bc4ad1 Mon Sep 17 00:00:00 2001 From: Ian Link Date: Tue, 9 Jul 2024 13:44:13 -0400 Subject: [PATCH] Remove external facing examples --- examples/azure-actions/skeleton/fileA.txt | 1 - examples/azure-actions/template.yaml | 71 ---- .../skeleton/.env | 4 - .../skeleton/.github/workflows/merge.yaml | 35 -- .../.github/workflows/pull-request.yaml | 25 -- .../skeleton/.gitignore | 29 -- .../skeleton/README.md | 45 --- .../skeleton/catalog-info.yaml | 12 - .../skeleton/mkdocs.yml | 8 - .../skeleton/package.json | 24 -- .../skeleton/src/lambda.ts | 11 - .../skeleton/sst.json | 5 - .../skeleton/stacks/MyStack.ts | 19 - .../skeleton/stacks/index.ts | 13 - .../skeleton/test/MyStack.test.ts | 11 - .../skeleton/tsconfig.json | 23 -- .../template.yaml | 75 ---- .../skeleton/.github/workflows/merge.yaml | 37 -- .../.github/workflows/pull-request.yaml | 25 -- .../skeleton/.gitignore | 20 -- .../skeleton/README.md | 45 --- .../skeleton/catalog-info.yaml | 12 - .../skeleton/frontend/.env | 1 - .../skeleton/frontend/.gitignore | 23 -- .../skeleton/frontend/README.md | 70 ---- .../skeleton/frontend/package.json | 41 --- .../skeleton/frontend/public/favicon.ico | Bin 3870 -> 0 bytes .../skeleton/frontend/public/index.html | 43 --- .../skeleton/frontend/public/logo192.png | Bin 5347 -> 0 bytes .../skeleton/frontend/public/logo512.png | Bin 9664 -> 0 bytes .../skeleton/frontend/public/manifest.json | 25 -- .../skeleton/frontend/public/robots.txt | 3 - .../skeleton/frontend/src/App.css | 18 - .../skeleton/frontend/src/App.js | 21 -- .../skeleton/frontend/src/App.test.js | 8 - .../skeleton/frontend/src/index.css | 13 - .../skeleton/frontend/src/index.js | 17 - .../skeleton/frontend/src/logo.svg | 1 - .../skeleton/frontend/src/reportWebVitals.js | 13 - .../skeleton/frontend/src/setupTests.js | 5 - .../skeleton/mkdocs.yml | 8 - .../skeleton/package.json | 22 -- .../skeleton/src/lambda.js | 38 -- .../skeleton/sst.json | 5 - .../skeleton/stacks/MyStack.js | 45 --- .../skeleton/stacks/index.js | 12 - .../skeleton/test/MyStack.test.js | 11 - .../template.yaml | 75 ---- .../create-rfc/skeleton/template.md.njk | 25 -- scaffolder-templates/create-rfc/template.yaml | 67 ---- .../debug-template/skeleton/template.md.njk | 25 -- .../debug-template/template.yaml | 46 --- .../skeleton/Dockerfile | 20 -- .../skeleton/README.md | 25 -- .../skeleton/config/accept.json | 15 - .../skeleton/package.json | 16 - .../src/helloWorldScaffolderActionHandler.js | 11 - .../skeleton/src/index.js | 16 - .../template.yaml | 54 --- .../roadie-plugin/skeleton/.eslintrc.js | 1 - .../roadie-plugin/skeleton/.gitignore | 1 - .../roadie-plugin/skeleton/.npmrc | 1 - .../roadie-plugin/skeleton/README.md | 59 ---- .../roadie-plugin/skeleton/package.json | 28 -- .../skeleton/plugins/my-plugin/.eslintrc.js | 1 - .../skeleton/plugins/my-plugin/README.md | 50 --- .../plugins/my-plugin/app-config.yaml | 4 - .../skeleton/plugins/my-plugin/dev/index.tsx | 26 -- .../skeleton/plugins/my-plugin/package.json | 54 --- .../EntityContentComponent.tsx | 29 -- .../EntityComponentExample/index.ts | 1 - .../ExampleComponent.test.tsx | 27 -- .../ExampleComponent/ExampleComponent.tsx | 38 -- .../src/components/ExampleComponent/index.ts | 1 - .../ExampleFetchComponent.test.tsx | 19 - .../ExampleFetchComponent.tsx | 325 ------------------ .../components/ExampleFetchComponent/index.ts | 1 - .../skeleton/plugins/my-plugin/src/index.ts | 6 - .../plugins/my-plugin/src/plugin.test.ts | 7 - .../skeleton/plugins/my-plugin/src/plugin.ts | 51 --- .../skeleton/plugins/my-plugin/src/routes.ts | 5 - .../plugins/my-plugin/src/setupTests.ts | 1 - .../skeleton/plugins/my-plugin/tsconfig.json | 12 - .../roadie-plugin/template.yaml | 70 ---- 84 files changed, 2206 deletions(-) delete mode 100644 examples/azure-actions/skeleton/fileA.txt delete mode 100644 examples/azure-actions/template.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/.env delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/merge.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/pull-request.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/.gitignore delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/README.md delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/catalog-info.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/mkdocs.yml delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/package.json delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/src/lambda.ts delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/sst.json delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/MyStack.ts delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/index.ts delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/test/MyStack.test.ts delete mode 100644 scaffolder-templates/create-aws-serverless-backend/skeleton/tsconfig.json delete mode 100644 scaffolder-templates/create-aws-serverless-backend/template.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/merge.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/pull-request.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.gitignore delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/README.md delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/catalog-info.yaml delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.env delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.gitignore delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/README.md delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/package.json delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/favicon.ico delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/index.html delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/logo192.png delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/logo512.png delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/manifest.json delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/robots.txt delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.css delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.test.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.css delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/logo.svg delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/reportWebVitals.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/setupTests.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/mkdocs.yml delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/package.json delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/src/lambda.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/sst.json delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/MyStack.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/index.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/test/MyStack.test.js delete mode 100644 scaffolder-templates/create-aws-serverless-frontend-and-backend/template.yaml delete mode 100644 scaffolder-templates/create-rfc/skeleton/template.md.njk delete mode 100644 scaffolder-templates/create-rfc/template.yaml delete mode 100644 scaffolder-templates/debug-template/skeleton/template.md.njk delete mode 100644 scaffolder-templates/debug-template/template.yaml delete mode 100644 scaffolder-templates/roadie-agent-scaffolder-action/skeleton/Dockerfile delete mode 100644 scaffolder-templates/roadie-agent-scaffolder-action/skeleton/README.md delete mode 100644 scaffolder-templates/roadie-agent-scaffolder-action/skeleton/config/accept.json delete mode 100644 scaffolder-templates/roadie-agent-scaffolder-action/skeleton/package.json delete mode 100644 scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/helloWorldScaffolderActionHandler.js delete mode 100644 scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/index.js delete mode 100644 scaffolder-templates/roadie-agent-scaffolder-action/template.yaml delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/.eslintrc.js delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/.gitignore delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/.npmrc delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/README.md delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/package.json delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/.eslintrc.js delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/README.md delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/app-config.yaml delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/dev/index.tsx delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/package.json delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/EntityContentComponent.tsx delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/index.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.tsx delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/index.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/index.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/index.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.test.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/routes.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/setupTests.ts delete mode 100644 scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/tsconfig.json delete mode 100644 scaffolder-templates/roadie-plugin/template.yaml diff --git a/examples/azure-actions/skeleton/fileA.txt b/examples/azure-actions/skeleton/fileA.txt deleted file mode 100644 index 6598156..0000000 --- a/examples/azure-actions/skeleton/fileA.txt +++ /dev/null @@ -1 +0,0 @@ -name: ${{ values.name }} diff --git a/examples/azure-actions/template.yaml b/examples/azure-actions/template.yaml deleted file mode 100644 index a228eaa..0000000 --- a/examples/azure-actions/template.yaml +++ /dev/null @@ -1,71 +0,0 @@ -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: azure-repo-demo - title: Azure Repository Test - description: Clone and push to an Azure repository example. -spec: - owner: roadie - type: service - - parameters: - - title: Fill in some steps - required: - - name - properties: - name: - title: Project name - type: string - description: Choose a unique project name. - ui:field: EntityNamePicker - ui:autofocus: true - sourceBranch: - title: Source Branch - type: string - default: master - remoteBranch: - title: Remote Branch - type: string - default: scaffolder - steps: - - id: cloneAzureRepo - name: Clone Azure Repo - action: azure:repo:clone - input: - remoteUrl: "https://roadie-demo@dev.azure.com/roadie-demo/Sample-Services/_git/sample-service" - branch: ${{ parameters.sourceBranch }} - targetPath: ./sub-directory - - - id: fetch - name: Template Skeleton - action: fetch:template - input: - url: ./skeleton - targetPath: ./sub-directory - values: - name: ${{ parameters.name }} - - - id: pushAzureRepo - name: Push to Remote Azure Repo - action: azure:repo:push - input: - branch: ${{ parameters.remoteBranch }} - sourcePath: ./sub-directory - gitCommitMessage: Add ${{ parameters.name }} project files - - - id: pullRequestAzureRepo - name: Create a Pull Request to Azure Repo - action: azure:repo:pr - input: - sourceBranch: ${{ parameters.remoteBranch }} - targetBranch: "master" - repoId: sample-service - title: ${{ parameters.name }} - project: Sample-Services - organization: roadie-demo - supportsIterations: false - - output: - links: - - title: Pull Request - url: "https://dev.azure.com/roadie-demo/Sample-Services/_git/sample-service/pullrequest/${{ outputs.pullRequestAzureRepo.pullRequestId}}" diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/.env b/scaffolder-templates/create-aws-serverless-backend/skeleton/.env deleted file mode 100644 index 44efb1b..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/.env +++ /dev/null @@ -1,4 +0,0 @@ -# These variables are only available in your SST code. -# To apply them to your Lambda functions, checkout this doc - https://docs.serverless-stack.com/environment-variables#environment-variables-in-lambda-functions - -MY_ENV_VAR=i-am-an-environment-variable diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/merge.yaml b/scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/merge.yaml deleted file mode 100644 index 0c277ce..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/merge.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: Deploy - -on: - push: - branches: - - main - workflow_dispatch: {} - -jobs: - deploy-dev: - strategy: - matrix: - node-version: [14.x] - - env: - AWS_PROFILE: default - - runs-on: ubuntu-latest - name: Deploy - steps: - - uses: Fooji/create-aws-profile-action@v1 - with: - profile: default - key: ${{ secrets.AWS_ACCESS_KEY_ID }} - secret: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - region: eu-west-1 - - - uses: actions/checkout@v2 - - name: Use Node.js 14.x - uses: actions/setup-node@v1 - with: - node-version: 14.x - - run: yarn install - - run: yarn deploy --stage prod \ No newline at end of file diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/pull-request.yaml b/scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/pull-request.yaml deleted file mode 100644 index 21fed56..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/.github/workflows/pull-request.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: Pre Merge Tests - -on: - pull_request: - branches: - - main - -jobs: - tests: - strategy: - matrix: - node-version: [12.x] - - runs-on: ubuntu-latest - name: Run Tests - steps: - - uses: actions/checkout@v2 - - name: Use Node.js 14.x - uses: actions/setup-node@v1 - with: - node-version: 12.x - - run: yarn install - - run: yarn prettier:check - - run: yarn test diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/.gitignore b/scaffolder-templates/create-aws-serverless-backend/skeleton/.gitignore deleted file mode 100644 index 9140b60..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules - -# testing -/coverage - -# production -/build - -# typescript -*.js -*.d.ts - -# misc -.DS_Store - -# sst build output -.build -.sst - -# environments -.env*.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/README.md b/scaffolder-templates/create-aws-serverless-backend/skeleton/README.md deleted file mode 100644 index 9a2981e..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Getting Started with Serverless Stack (SST) - -This project was bootstrapped with [Create Serverless Stack](https://docs.serverless-stack.com/packages/create-serverless-stack). - -Start by installing the dependencies. - -```bash -$ npm install -``` - -## Commands - -### `npm run start` - -Starts the local Lambda development environment. - -### `npm run build` - -Build your app and synthesize your stacks. - -Generates a `.build/` directory with the compiled files and a `.build/cdk.out/` directory with the synthesized CloudFormation stacks. - -### `npm run deploy [stack]` - -Deploy all your stacks to AWS. Or optionally deploy a specific stack. - -### `npm run remove [stack]` - -Remove all your stacks and all of their resources from AWS. Or optionally remove a specific stack. - -### `npm run test` - -Runs your tests using Jest. Takes all the [Jest CLI options](https://jestjs.io/docs/en/cli). - -## Documentation - -Learn more about the Serverless Stack. - -- [Docs](https://docs.serverless-stack.com) -- [@serverless-stack/cli](https://docs.serverless-stack.com/packages/cli) -- [@serverless-stack/resources](https://docs.serverless-stack.com/packages/resources) - -## Community - -[Follow us on Twitter](https://twitter.com/ServerlessStack) or [post on our forums](https://discourse.serverless-stack.com). diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/catalog-info.yaml b/scaffolder-templates/create-aws-serverless-backend/skeleton/catalog-info.yaml deleted file mode 100644 index 7f3010c..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/catalog-info.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: ${{values.component_id | dump}} - description: ${{values.description | dump}} - annotations: - github.com/project-slug: ${{values.destination.owner + "/" + values.destination.repo}} - backstage.io/techdocs-ref: dir:. -spec: - type: website - lifecycle: experimental - owner: ${{values.owner | dump}} diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/mkdocs.yml b/scaffolder-templates/create-aws-serverless-backend/skeleton/mkdocs.yml deleted file mode 100644 index 43d5f4f..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/mkdocs.yml +++ /dev/null @@ -1,8 +0,0 @@ -site_name: ${{values.component_id | dump}} -site_description: ${{values.description | dump}} - -nav: - - Introduction: index.md - -plugins: - - techdocs-core diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/package.json b/scaffolder-templates/create-aws-serverless-backend/skeleton/package.json deleted file mode 100644 index c5aae9b..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "${{values.component_id}}", - "version": "0.1.0", - "private": true, - "scripts": { - "test": "sst test", - "start": "sst start", - "build": "sst build", - "deploy": "sst deploy", - "remove": "sst remove" - }, - "eslintConfig": { - "extends": ["serverless-stack"] - }, - "devDependencies": { - "@aws-cdk/assert": "1.126.0", - "@types/aws-lambda": "^8.10.70" - }, - "dependencies": { - "@serverless-stack/cli": "0.49.0", - "@serverless-stack/resources": "0.49.0", - "@aws-cdk/core": "1.126.0" - } -} diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/src/lambda.ts b/scaffolder-templates/create-aws-serverless-backend/skeleton/src/lambda.ts deleted file mode 100644 index 34ef87d..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/src/lambda.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { APIGatewayProxyEventV2, APIGatewayProxyHandlerV2 } from "aws-lambda"; - -export const handler: APIGatewayProxyHandlerV2 = async ( - event: APIGatewayProxyEventV2 -) => { - return { - statusCode: 200, - headers: { "Content-Type": "text/plain" }, - body: `Hello, World! Your request was received at ${event.requestContext.time}.`, - }; -}; diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/sst.json b/scaffolder-templates/create-aws-serverless-backend/skeleton/sst.json deleted file mode 100644 index 405fb44..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/sst.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "${{values.component_id}}", - "region": "us-east-1", - "main": "stacks/index.ts" -} diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/MyStack.ts b/scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/MyStack.ts deleted file mode 100644 index 0fadaef..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/MyStack.ts +++ /dev/null @@ -1,19 +0,0 @@ -import * as sst from "@serverless-stack/resources"; - -export default class MyStack extends sst.Stack { - constructor(scope: sst.App, id: string, props?: sst.StackProps) { - super(scope, id, props); - - // Create a HTTP API - const api = new sst.Api(this, "Api", { - routes: { - "GET /": "src/lambda.handler", - }, - }); - - // Show the endpoint in the output - this.addOutputs({ - "ApiEndpoint": api.url, - }); - } -} diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/index.ts b/scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/index.ts deleted file mode 100644 index 056cc98..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/stacks/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import MyStack from "./MyStack"; -import * as sst from "@serverless-stack/resources"; - -export default function main(app: sst.App): void { - // Set default runtime for all functions - app.setDefaultFunctionProps({ - runtime: "nodejs12.x" - }); - - new MyStack(app, "my-stack"); - - // Add more stacks -} diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/test/MyStack.test.ts b/scaffolder-templates/create-aws-serverless-backend/skeleton/test/MyStack.test.ts deleted file mode 100644 index fa748c0..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/test/MyStack.test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { expect, haveResource } from "@aws-cdk/assert"; -import * as sst from "@serverless-stack/resources"; -import MyStack from "../stacks/MyStack"; - -test("Test Stack", () => { - const app = new sst.App(); - // WHEN - const stack = new MyStack(app, "test-stack"); - // THEN - expect(stack).to(haveResource("AWS::Lambda::Function")); -}); diff --git a/scaffolder-templates/create-aws-serverless-backend/skeleton/tsconfig.json b/scaffolder-templates/create-aws-serverless-backend/skeleton/tsconfig.json deleted file mode 100644 index bf7c685..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/skeleton/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2018", - "module": "commonjs", - "lib": ["es2018"], - "declaration": true, - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, - "inlineSourceMap": true, - "inlineSources": true, - "experimentalDecorators": true, - "strictPropertyInitialization": false, - "typeRoots": ["./node_modules/@types"] - }, - "include": ["stacks", "src"] -} \ No newline at end of file diff --git a/scaffolder-templates/create-aws-serverless-backend/template.yaml b/scaffolder-templates/create-aws-serverless-backend/template.yaml deleted file mode 100644 index bd4929d..0000000 --- a/scaffolder-templates/create-aws-serverless-backend/template.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: backstage.io/v1beta2 -kind: Template -metadata: - name: create-aws-serverless-backend - title: Create AWS Serverless Backend - description: Create AWS Serverless Backend - tags: - - aws - -spec: - owner: info@roadie.io - type: api - parameters: - - title: Provide some simple information - required: - - component_id - - owner - - region - properties: - component_id: - title: Name - type: string - description: Unique name of the component - region: - title: Region - type: string - description: AWS region to deploy this Serverless stack - description: - title: Description - type: string - description: Help others understand what this website is for. - owner: - title: Owner - type: string - description: Owner of the component - ui:field: OwnerPicker - ui:options: - allowedKinds: - - Group - - title: Choose a location - required: - - repoUrl - properties: - repoUrl: - title: Repository Location - type: string - ui:field: RepoUrlPicker - ui:options: - allowedHosts: - - github.com - steps: - - id: template - name: Fetch Skeleton + Template - action: fetch:template - input: - url: ./skeleton - copyWithoutRender: - - .github/workflows/* - values: - component_id: '{{ parameters.component_id }}' - description: '{{ parameters.description }}' - destination: '{{ parseRepoUrl parameters.repoUrl }}' - owner: '{{ parameters.owner }}' - - - id: publish - name: Publish - action: publish:github - input: - allowedHosts: ['github.com'] - description: 'This is {{ parameters.component_id }}' - repoUrl: '{{ parameters.repoUrl }}' - defaultBranch: main - - output: - remoteUrl: '{{ steps.publish.output.remoteUrl }}' \ No newline at end of file diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/merge.yaml b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/merge.yaml deleted file mode 100644 index 4304fc2..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/merge.yaml +++ /dev/null @@ -1,37 +0,0 @@ ---- -name: Deploy - -on: - push: - branches: - - main - workflow_dispatch: {} - -jobs: - deploy-dev: - strategy: - matrix: - node-version: [14.x] - - env: - AWS_PROFILE: default - - runs-on: ubuntu-latest - name: Deploy - steps: - - uses: Fooji/create-aws-profile-action@v1 - with: - profile: default - key: ${{ secrets.AWS_ACCESS_KEY_ID }} - secret: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - region: eu-west-1 - - - uses: actions/checkout@v2 - - name: Use Node.js 14.x - uses: actions/setup-node@v1 - with: - node-version: 14.x - - run: yarn install - - run: cd frontend && yarn install && cd .. - - run: yarn build --stage prod - - run: yarn deploy --stage prod \ No newline at end of file diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/pull-request.yaml b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/pull-request.yaml deleted file mode 100644 index 21fed56..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.github/workflows/pull-request.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: Pre Merge Tests - -on: - pull_request: - branches: - - main - -jobs: - tests: - strategy: - matrix: - node-version: [12.x] - - runs-on: ubuntu-latest - name: Run Tests - steps: - - uses: actions/checkout@v2 - - name: Use Node.js 14.x - uses: actions/setup-node@v1 - with: - node-version: 12.x - - run: yarn install - - run: yarn prettier:check - - run: yarn test diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.gitignore b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.gitignore deleted file mode 100644 index 204ea56..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules - -# testing -/coverage - -# production -/build - -# misc -.DS_Store - -# sst build output -.build - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/README.md b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/README.md deleted file mode 100644 index b5208b9..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# How to create a React.js app - -An example full-stack serverless React.js app created with SST. - -## Getting Started - -[**Read the tutorial**](https://serverless-stack.com/examples/how-to-create-a-reactjs-app-with-serverless.html) - -Install the example. - -```bash -$ npm init serverless-stack --example react-app -# Or with Yarn -$ yarn create serverless-stack --example react-app -``` - -## Commands - -### `npm run start` - -Starts the Live Lambda Development environment. - -### `npm run build` - -Build your app and synthesize your stacks. - -### `npm run deploy [stack]` - -Deploy all your stacks to AWS. Or optionally deploy, a specific stack. - -### `npm run remove [stack]` - -Remove all your stacks and all of their resources from AWS. Or optionally removes, a specific stack. - -### `npm run test` - -Runs your tests using Jest. Takes all the [Jest CLI options](https://jestjs.io/docs/en/cli). - -## Documentation - -Learn more about the SST. - -- [Docs](https://docs.serverless-stack.com/) -- [@serverless-stack/cli](https://docs.serverless-stack.com/packages/cli) -- [@serverless-stack/resources](https://docs.serverless-stack.com/packages/resources) diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/catalog-info.yaml b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/catalog-info.yaml deleted file mode 100644 index 7f3010c..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/catalog-info.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: ${{values.component_id | dump}} - description: ${{values.description | dump}} - annotations: - github.com/project-slug: ${{values.destination.owner + "/" + values.destination.repo}} - backstage.io/techdocs-ref: dir:. -spec: - type: website - lifecycle: experimental - owner: ${{values.owner | dump}} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.env b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.env deleted file mode 100644 index 6f809cc..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.env +++ /dev/null @@ -1 +0,0 @@ -SKIP_PREFLIGHT_CHECK=true diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.gitignore b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.gitignore deleted file mode 100644 index 4d29575..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/README.md b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/README.md deleted file mode 100644 index 02aac3f..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# Getting Started with Create React App - -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `yarn start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -### `yarn test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `yarn build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `yarn eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) - -### Analyzing the Bundle Size - -This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) - -### Making a Progressive Web App - -This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) - -### Advanced Configuration - -This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) - -### Deployment - -This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) - -### `yarn build` fails to minify - -This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/package.json b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/package.json deleted file mode 100644 index f3c0c75..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "frontend", - "version": "0.1.0", - "private": true, - "dependencies": { - "@testing-library/jest-dom": "^5.11.4", - "@testing-library/react": "^11.1.0", - "@testing-library/user-event": "^12.1.10", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-scripts": "4.0.3", - "web-vitals": "^1.0.1" - }, - "scripts": { - "start": "sst-env -- react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@serverless-stack/static-site-env": "^0.33.0" - } -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/favicon.ico b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/index.html b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/index.html deleted file mode 100644 index aa069f2..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - React App - - - -
- - - diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/logo192.png b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/manifest.json b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/robots.txt b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.css b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.css deleted file mode 100644 index decd703..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.css +++ /dev/null @@ -1,18 +0,0 @@ -body, -html { - height: 100%; - display: grid; -} -#root { - margin: auto; -} -.App { - text-align: center; -} -p { - margin-top: 0; - font-size: 20px; -} -button { - font-size: 48px; -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.js deleted file mode 100644 index b213c9a..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.js +++ /dev/null @@ -1,21 +0,0 @@ -import { useState } from "react"; -import "./App.css"; - -export default function App() { - const [count, setCount] = useState(null); - - function onClick() { - fetch(process.env.REACT_APP_API_URL, { - method: "POST", - }) - .then((response) => response.text()) - .then(setCount); - } - - return ( -
- {count &&

You clicked me {count} times.

} - -
- ); -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.test.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.test.js deleted file mode 100644 index 9382b9a..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from "@testing-library/react"; -import App from "./App"; - -test("renders learn react link", () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.css b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.css deleted file mode 100644 index 4a1df4d..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", - monospace; -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.js deleted file mode 100644 index ad9cbbb..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom"; -import "./index.css"; -import App from "./App"; -import reportWebVitals from "./reportWebVitals"; - -ReactDOM.render( - - - , - document.getElementById("root") -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/logo.svg b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/logo.svg deleted file mode 100644 index 9dfc1c0..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/reportWebVitals.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/reportWebVitals.js deleted file mode 100644 index 9ecd33f..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = (onPerfEntry) => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/setupTests.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/setupTests.js deleted file mode 100644 index 1dd407a..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/frontend/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import "@testing-library/jest-dom"; diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/mkdocs.yml b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/mkdocs.yml deleted file mode 100644 index 43d5f4f..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/mkdocs.yml +++ /dev/null @@ -1,8 +0,0 @@ -site_name: ${{values.component_id | dump}} -site_description: ${{values.description | dump}} - -nav: - - Introduction: index.md - -plugins: - - techdocs-core diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/package.json b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/package.json deleted file mode 100644 index 2dfb05b..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "${{values.component_id}}", - "version": "0.1.0", - "private": true, - "scripts": { - "test": "sst test", - "start": "sst start", - "build": "sst build", - "deploy": "sst deploy", - "remove": "sst remove" - }, - "eslintConfig": { - "extends": [ - "serverless-stack" - ] - }, - "dependencies": { - "@serverless-stack/cli": "0.48.0", - "@serverless-stack/resources": "0.48.0", - "aws-sdk": "^2.931.0" - } -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/src/lambda.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/src/lambda.js deleted file mode 100644 index 5fa5c5b..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/src/lambda.js +++ /dev/null @@ -1,38 +0,0 @@ -import AWS from "aws-sdk"; - -const dynamoDb = new AWS.DynamoDB.DocumentClient(); - -export async function main() { - const getParams = { - // Get the table name from the environment variable - TableName: process.env.tableName, - // Get the row where the counter is called "clicks" - Key: { - counter: "clicks", - }, - }; - const results = await dynamoDb.get(getParams).promise(); - - // If there is a row, then get the value of the - // column called "tally" - let count = results.Item ? results.Item.tally : 0; - - const putParams = { - TableName: process.env.tableName, - Key: { - counter: "clicks", - }, - // Update the "tally" column - UpdateExpression: "SET tally = :count", - ExpressionAttributeValues: { - // Increase the count - ":count": ++count, - }, - }; - await dynamoDb.update(putParams).promise(); - - return { - statusCode: 200, - body: count, - }; -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/sst.json b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/sst.json deleted file mode 100644 index 189565f..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/sst.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "${{values.component_id}}", - "region": "us-east-1", - "main": "stacks/index.js" -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/MyStack.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/MyStack.js deleted file mode 100644 index 5c22383..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/MyStack.js +++ /dev/null @@ -1,45 +0,0 @@ -import * as sst from "@serverless-stack/resources"; - -export default class MyStack extends sst.Stack { - constructor(scope, id, props) { - super(scope, id, props); - - // Create the table - const table = new sst.Table(this, "Counter", { - fields: { - counter: sst.TableFieldType.STRING, - }, - primaryIndex: { partitionKey: "counter" }, - }); - - // Create the HTTP API - const api = new sst.Api(this, "Api", { - defaultFunctionProps: { - // Pass in the table name to our API - environment: { - tableName: table.dynamodbTable.tableName, - }, - }, - routes: { - "POST /": "src/lambda.main", - }, - }); - - // Allow the API to access the table - api.attachPermissions([table]); - - // Deploy our React app - const site = new sst.ReactStaticSite(this, "ReactSite", { - path: "frontend", - environment: { - REACT_APP_API_URL: api.url, - }, - }); - - // Show the URLs in the output - this.addOutputs({ - SiteUrl: site.url, - ApiEndpoint: api.url, - }); - } -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/index.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/index.js deleted file mode 100644 index 5f2a002..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/stacks/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import MyStack from "./MyStack"; - -export default function main(app) { - // Set default runtime for all functions - app.setDefaultFunctionProps({ - runtime: "nodejs12.x", - }); - - new MyStack(app, "my-stack"); - - // Add more stacks -} diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/test/MyStack.test.js b/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/test/MyStack.test.js deleted file mode 100644 index fa748c0..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/skeleton/test/MyStack.test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { expect, haveResource } from "@aws-cdk/assert"; -import * as sst from "@serverless-stack/resources"; -import MyStack from "../stacks/MyStack"; - -test("Test Stack", () => { - const app = new sst.App(); - // WHEN - const stack = new MyStack(app, "test-stack"); - // THEN - expect(stack).to(haveResource("AWS::Lambda::Function")); -}); diff --git a/scaffolder-templates/create-aws-serverless-frontend-and-backend/template.yaml b/scaffolder-templates/create-aws-serverless-frontend-and-backend/template.yaml deleted file mode 100644 index ad39aef..0000000 --- a/scaffolder-templates/create-aws-serverless-frontend-and-backend/template.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: backstage.io/v1beta2 -kind: Template -metadata: - name: create-aws-serverless-frontend-and-backend - title: Create AWS Serverless Frontend and Backend - description: Create AWS Serverless Frontend and Backend - tags: - - aws - -spec: - owner: info@roadie.io - type: service - parameters: - - title: Provide some simple information - required: - - component_id - - owner - - region - properties: - component_id: - title: Name - type: string - description: Unique name of the component - region: - title: Region - type: string - description: AWS region to deploy this Serverless stack - description: - title: Description - type: string - description: Help others understand what this website is for. - owner: - title: Owner - type: string - description: Owner of the component - ui:field: OwnerPicker - ui:options: - allowedKinds: - - Group - - title: Choose a location - required: - - repoUrl - properties: - repoUrl: - title: Repository Location - type: string - ui:field: RepoUrlPicker - ui:options: - allowedHosts: - - github.com - steps: - - id: template - name: Fetch Skeleton + Template - action: fetch:template - input: - url: ./skeleton - copyWithoutRender: - - .github/workflows/* - values: - component_id: '{{ parameters.component_id }}' - description: '{{ parameters.description }}' - destination: '{{ parseRepoUrl parameters.repoUrl }}' - owner: '{{ parameters.owner }}' - - - id: publish - name: Publish - action: publish:github - input: - allowedHosts: ['github.com'] - description: 'This is {{ parameters.component_id }}' - repoUrl: '{{ parameters.repoUrl }}' - defaultBranch: main - - output: - remoteUrl: '{{ steps.publish.output.remoteUrl }}' diff --git a/scaffolder-templates/create-rfc/skeleton/template.md.njk b/scaffolder-templates/create-rfc/skeleton/template.md.njk deleted file mode 100644 index 82af9e2..0000000 --- a/scaffolder-templates/create-rfc/skeleton/template.md.njk +++ /dev/null @@ -1,25 +0,0 @@ -# RFC-${{ values.rfcNumber }} - ${{ values.rfcTitle }} - -*Author(s)*: -*Squad*: -*Requested Reviewers*: -*Status*: DRAFT - -## Abstract -${{ values.abstract }} - -## Background - -## Non-Goals - -## Key Terms - -## Problem - -## Proposal - -## Technical Limitations - -## Open Questions - -## Outcomes and Forward References \ No newline at end of file diff --git a/scaffolder-templates/create-rfc/template.yaml b/scaffolder-templates/create-rfc/template.yaml deleted file mode 100644 index b7fc919..0000000 --- a/scaffolder-templates/create-rfc/template.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: create-rfc-template - title: Create a new RFC flavored markdown document - description: Create a new RFC flavored markdown document -spec: - owner: group:default/engineering - type: service - - parameters: - - title: Document front content - properties: - rfcNumber: - title: rfcNumber - type: string - rfcTitle: - title: RFC Title - type: string - abstract: - title: Document Abstract (optional draft version) - type: string - ui:widget: textarea - - title: Repository to place document - properties: - repoUrl: - content: - type: string - description: Name of repository - ui:field: RepoUrlPicker - ui:options: - allowedHosts: - - github.com - - steps: - - id: log-message - name: Log Message - action: debug:log - input: - message: Creating ${{ parameters.rfcNumber }}/index.md - - - id: fetch-template - action: fetch:template - input: - url: https://github.com/RoadieHQ/software-templates/tree/main/scaffolder-templates/create-rfc/skeleton - templateFileExtension: true - targetPath: docs/rfcs/${{ parameters.rfcNumber }} - values: - rfcNumber: ${{ parameters.rfcNumber }} - rfcTitle: ${{ parameters.rfcTitle }} - abstract: ${{ parameters.abstract }} - - - id: move-rfc - action: fs:rename - input: - files: - - from: docs/rfcs/${{ parameters.rfcNumber }}/template.md - to: docs/rfcs/${{ parameters.rfcNumber }}/index.md - - - id: create-pull-request - name: create-pull-request - action: publish:github:pull-request - input: - repoUrl: ${{ parameters.repoUrl }} - branchName: RFC-${{ parameters.rfcNumber }}_${{ parameters.rfcTitle | replace(" ", "-") | replace("\"", "") | replace ("'", "") | lower }} - title: RFC-${{ parameters.rfcNumber }} - ${{ parameters.rfcTitle }} - description: ${{ parameters.abstract }} \ No newline at end of file diff --git a/scaffolder-templates/debug-template/skeleton/template.md.njk b/scaffolder-templates/debug-template/skeleton/template.md.njk deleted file mode 100644 index 82af9e2..0000000 --- a/scaffolder-templates/debug-template/skeleton/template.md.njk +++ /dev/null @@ -1,25 +0,0 @@ -# RFC-${{ values.rfcNumber }} - ${{ values.rfcTitle }} - -*Author(s)*: -*Squad*: -*Requested Reviewers*: -*Status*: DRAFT - -## Abstract -${{ values.abstract }} - -## Background - -## Non-Goals - -## Key Terms - -## Problem - -## Proposal - -## Technical Limitations - -## Open Questions - -## Outcomes and Forward References \ No newline at end of file diff --git a/scaffolder-templates/debug-template/template.yaml b/scaffolder-templates/debug-template/template.yaml deleted file mode 100644 index 2f57239..0000000 --- a/scaffolder-templates/debug-template/template.yaml +++ /dev/null @@ -1,46 +0,0 @@ -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: debug-template - title: Template to debug skeleton templates - description: Basic template to trigger a github worklfow - -spec: - owner: group:default/engineering - type: service - parameters: - - title: Document front content - properties: - rfcNumber: - title: rfcNumber - type: string - rfcTitle: - title: RFC Title - type: string - abstract: - title: Document Abstract (optional draft version) - type: string - ui:widget: textarea - - steps: - - id: fetch-template - action: fetch:template - input: - url: https://github.com/RoadieHQ/software-templates/tree/main/scaffolder-templates/debug-template/skeleton - templateFileExtension: true - values: - rfcNumber: ${{ parameters.rfcNumber }} - rfcTitle: ${{ parameters.rfcTitle }} - abstract: ${{ parameters.abstract }} - - - id: read-file - name: Read File - action: fs:read - input: - path: ./template.md - - - id: log-message - name: Log Message - action: debug:log - input: - message: ${{ steps['read-file'].output.content }} diff --git a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/Dockerfile b/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/Dockerfile deleted file mode 100644 index 032fae6..0000000 --- a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM node:18-alpine - -ARG TOKEN=${{ values.agent_name }} - -ENV BROKER_TOKEN $TOKEN - -WORKDIR /app - -COPY yarn.lock package.json ./ -COPY src ./src -COPY config ./config - -RUN apk add --no-cache tini - -RUN cd /app - -RUN yarn install --frozen-lockfile - -ENTRYPOINT ["/sbin/tini", "--"] -CMD ["node", "src/index"] diff --git a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/README.md b/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/README.md deleted file mode 100644 index 06d711f..0000000 --- a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Roadie Agent Scaffolder Action - -See Roadie Agent documentation in https://github.com/RoadieHQ/roadie-agent. - -## Usage - -Configure your Roadie instance to allow traffic from the IP address this Agent service is running. -Enable and register a Roadie Agent `scaffolder-action` connection type in Roadie. The token used by this agent service should be configured as environment variable `BROKER_TOKEN`, the name of the Agent action is `${{ values.agent_name }}`. - -Modify the example scaffolder action handler in `src/myScaffolderActionHandler.js` to run the custom scaffolder code. - -## Running - -Locally: -* `yarn` -* `yarn start` - -## As a container - -Build the container: -`docker build . --tag my-agent` - -Run the container: -`docker run --env BROKER_TOKEN=my-broker-token my-agent ` - diff --git a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/config/accept.json b/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/config/accept.json deleted file mode 100644 index 08d8679..0000000 --- a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/config/accept.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "private": [ - { - "method": "POST", - "path": "/scaffolder-action/*", - "origin": "http://localhost:7044" - } - ], - "public": [ - { - "method": "any", - "path": "/*" - } - ] -} diff --git a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/package.json b/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/package.json deleted file mode 100644 index 91c2e1d..0000000 --- a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "roadie-agent-scaffolder-action", - "version": "1.0.0", - "description": "A Roadie Agent Scaffolder Action.", - "main": "index.js", - "repository": "https://github.com/${{ values.repo_owner }}/${{ values.repo_name }}", - "author": "${{ values.repo_owner }}", - "license": "UNLICENSED", - "type": "module", - "scripts": { - "start": "node src/index.js" - }, - "dependencies": { - "@roadiehq/roadie-agent": "^1.1.3" - } -} diff --git a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/helloWorldScaffolderActionHandler.js b/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/helloWorldScaffolderActionHandler.js deleted file mode 100644 index 34ca82d..0000000 --- a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/helloWorldScaffolderActionHandler.js +++ /dev/null @@ -1,11 +0,0 @@ -import { writeFileSync } from "fs"; - -export const helloWorldScaffolderActionHandler = async (context) => { - try { - const greeting = `Hello, ${context.payload.body.name || 'world!'}` - await context.log(greeting); - writeFileSync(`${context.workspacePath}/greeting.txt`, greeting); - } catch (e) { - console.log('An error occurred'); - } -} diff --git a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/index.js b/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/index.js deleted file mode 100644 index 89e13c4..0000000 --- a/scaffolder-templates/roadie-agent-scaffolder-action/skeleton/src/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import { RoadieAgent, createRoadieAgentScaffolderAction } from '@roadiehq/roadie-agent'; -import { helloWorldScaffolderActionHandler } from './helloWorldScaffolderActionHandler.js'; - -RoadieAgent.fromConfig({ - server: 'https://${{ values.tenant }}.broker.roadie.so', - accept: `${process.cwd()}/config/accept.json`, - identifier: process.env.BROKER_TOKEN - }) - .addScaffolderAction(createRoadieAgentScaffolderAction({ - name: 'hello-world', - handler: helloWorldScaffolderActionHandler - })) - .start(); - - - diff --git a/scaffolder-templates/roadie-agent-scaffolder-action/template.yaml b/scaffolder-templates/roadie-agent-scaffolder-action/template.yaml deleted file mode 100644 index 8a5ad53..0000000 --- a/scaffolder-templates/roadie-agent-scaffolder-action/template.yaml +++ /dev/null @@ -1,54 +0,0 @@ -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: create-roadie-agent-scaffolder-action-mono-repo - title: Create Roadie Agent Scaffolder Action Repository - description: Create a Roadie Agent service repository to execute a scaffolder action from your infrastructure. You can run this once to create the repo, and then add multiple scaffolder actions in the created repo. - -spec: - owner: info@roadie.io - type: service - parameters: - - title: Provide some simple information - required: - - agent_name - properties: - agent_name: - title: Name - type: string - description: Unique name of the Roadie Agent Scaffolder Action repository. - - - title: Choose a Source Control Management tool to store your Roadie Agent Service in. - required: - - repoUrl - properties: - repoUrl: - title: Repository Location - type: string - ui:field: RepoUrlPicker - ui:options: - allowedHosts: - - github.com - steps: - - id: template - name: Fetch Skeleton + Template - action: fetch:template - input: - url: ./skeleton - values: - repo_name: ${{ (parameters.repoUrl | parseRepoUrl)["repo"] }} - repo_owner: ${{ (parameters.repoUrl | parseRepoUrl)["owner"] }} - tenant: ${{ roadie.tenantName }} - agent_name: ${{ parameters.agent_name }} - - - id: publish - name: Publish - action: publish:github - input: - allowedHosts: ['github.com'] - description: 'This is ${{ parameters.agent_name }}' - repoUrl: ${{ parameters.repoUrl }} - defaultBranch: main - - output: - remoteUrl: ${{ steps.publish.output.remoteUrl }} diff --git a/scaffolder-templates/roadie-plugin/skeleton/.eslintrc.js b/scaffolder-templates/roadie-plugin/skeleton/.eslintrc.js deleted file mode 100644 index e2a53a6..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/scaffolder-templates/roadie-plugin/skeleton/.gitignore b/scaffolder-templates/roadie-plugin/skeleton/.gitignore deleted file mode 100644 index 40b878d..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file diff --git a/scaffolder-templates/roadie-plugin/skeleton/.npmrc b/scaffolder-templates/roadie-plugin/skeleton/.npmrc deleted file mode 100644 index 521a9f7..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/.npmrc +++ /dev/null @@ -1 +0,0 @@ -legacy-peer-deps=true diff --git a/scaffolder-templates/roadie-plugin/skeleton/README.md b/scaffolder-templates/roadie-plugin/skeleton/README.md deleted file mode 100644 index 124147c..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# Roadie Plugins monorepo - -Welcome to Roadie plugins monorepo! - -_This plugin was created through a scaffolder template_ - -## Getting started - -This is a TypeScript monorepo repository containing a place to hold and develop Roadie plugins. - -### Repository structure - -The root level contains configuration files to hold the structure of the monorepo and a top level package.json file. - -The folder `packages` hosts the actual plugins and code files related to them in individual folders. Each plugin has their own `package.json` configuration pre-filled with some useful scripts to develop, build and deploy Roadie plugins. - -### Installing - -This repository needs `node.js` (> 18.x) and `NPM` installed. - -To install needed dependencies, run: -`npm i -f` or `npm install --force` - -### Running and developing plugins - -Plugins within the repository can all be run from within the root folder. - -Example commands, if your plugin is named `${{ values.plugin_name }}` - -#### Run in development mode - -This will build the plugin code and start a webserver to host the generated Roadie compatible plugin assets. - -`npm run develop --workspace=${{ values.plugin_name }}` - -#### Run in development mode, with a file watcher - -This will build the plugin code and start a webserver while listening to file changes within the plugin folder. Each change to a file restarts the webserver, allowing for a faster development workflow - -`npm run develop:watch --workspace=${{ values.plugin_name }}` - - -#### Bundling a production build of a plugin - -This will build your wanted plugin and output the generated Roadie compatible assets to the defined folder, so they can be uploaded to a static hosting site. - -` npm run build --workspace=${{ values.plugin_name }} --host https://my-static-hosting.com/${{ values.plugin_name }}` - - -#### Bundling a production build of a plugin and uploading it to AWS S3 - -This will build your wanted plugin and output the generated Roadie compatible assets to the defined folder, and uploads the generated Roadie compatible assets to AWS S3. The command uses environment variables `S3_BUCKET_NAME` & `S3_BUCKET_PREFIX` to determine the S3 bucket and path. Normal AWS credential chain is used to determine AWS credentials. - -` npm run build:upload:awsS3 --workspace=${{ values.plugin_name }} --host https://static-assets.roadie.so/` - - - - -> For more information, take a look at the package.json within the plugin folder and Roadie CLI documentation in https://www.npmjs.com/package/@roadiehq/roadie-cli diff --git a/scaffolder-templates/roadie-plugin/skeleton/package.json b/scaffolder-templates/roadie-plugin/skeleton/package.json deleted file mode 100644 index f79a616..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "roadie-plugins", - "version": "1.0.0", - "description": "Roadie Plugins monorepo", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "help": "roadie" - }, - "workspaces": ["plugins/*"], - "author": "", - "license": "ISC", - "dependencies": { - "@backstage/cli": "^0.22.8", - "@backstage/core-components": "^0.13.2", - "@backstage/plugin-catalog-react": "^1.7.0", - "@material-ui/core": "^4.12.2", - "@roadiehq/roadie-cli": "^1.1.1", - "react": "^17.0.2", - "react-dom": "^17.0.2" - }, - "devDependencies": { - "@aoberoi/chokidar-cli": "^2.0.0", - "@spotify/prettier-config": "^14.0.0", - "prettier": "^2.3.2", - "ts-node": "^10.9.1" - } -} diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/.eslintrc.js b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/.eslintrc.js deleted file mode 100644 index e2a53a6..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/README.md b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/README.md deleted file mode 100644 index 305ca03..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# my-plugin - -Welcome to the ${{ values.plugin_name }} plugin! - -_This plugin was created through the Backstage CLI_ - -## Getting started - -To install needed dependencies, run: -`npm i` or `npm install` - -### Standalone development - -You can serve the plugin in isolation by running `npm start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](dev) directory. - -### Developing against Roadie instances - -Each command defined below will provide instructions on how to install the plugin to Roadie application. - -#### Run in development mode - -This will build the plugin code and start a webserver to host the generated Roadie compatible plugin assets. - -`npm run develop` - -#### Run in development mode, with a file watcher - -This will build the plugin code and start a webserver while listening to file changes within the plugin folder. Each change to a file restarts the webserver, allowing for a faster development workflow - -`npm run develop:watch` - - -#### Bundling a production build of a plugin - -This will build your wanted plugin and output the generated Roadie compatible assets to the defined folder, so they can be uploaded to a static hosting site. - -` npm run build --host https://my-static-hosting.com/${{ values.plugin_name }}` - - -#### Bundling a production build of a plugin and uploading it to AWS S3 - -This will build your wanted plugin and output the generated Roadie compatible assets to the defined folder, and uploads the generated Roadie compatible assets to AWS S3. The command uses environment variables `S3_BUCKET_NAME` & `S3_BUCKET_PREFIX` to determine the S3 bucket and path. Normal AWS credential chain is used to determine AWS credentials. - -` npm run build:upload:s3 --host https://my-static-hosting.com/${{ values.plugin_name }}` - - - -> For more information, take a look at the package.json within the plugin folder and Roadie CLI documentation in https://www.npmjs.com/package/@roadiehq/roadie-cli diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/app-config.yaml b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/app-config.yaml deleted file mode 100644 index c289c3c..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/app-config.yaml +++ /dev/null @@ -1,4 +0,0 @@ -app: - baseUrl: http://localhost:3333 -backend: - baseUrl: http://localhost:7777 diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/dev/index.tsx b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/dev/index.tsx deleted file mode 100644 index c96449d..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/dev/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from "react"; -import { createDevApp } from "@backstage/dev-utils"; -import { myPluginPlugin, MyPluginPage } from "../src/plugin"; -import { EntityProvider } from "@backstage/plugin-catalog-react"; -import { Entity } from "@backstage/catalog-model"; - -const entity = { - apiVersion: "backstage.io/v1alpha1", - kind: "Component", - metadata: { - name: 'awesome-test-entity-1', - }, - } as Entity; - -createDevApp() - .registerPlugin(myPluginPlugin) - .addPage({ - element: ( - - - - ), - title: "Root Page", - path: "/my-plugin", - }) - .render(); \ No newline at end of file diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/package.json b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/package.json deleted file mode 100644 index ed86274..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "${{ values.plugin_name }}", - "version": "0.1.0", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "private": true, - "publishConfig": { - "access": "public", - "main": "dist/index.esm.js", - "types": "dist/index.d.ts" - }, - "backstage": { - "role": "frontend-plugin" - }, - "scripts": { - "develop": "roadie plugin:dev -l $PWD/ --output $PWD/out --port 7046", - "develop:watch": "chokidar \"./src/**\" -c \"npm run develop\" -d 1000 --initial", - "build": "roadie plugin:build -l $PWD/ --output $PWD/out --host", - "build:upload:awsS3": "roadie plugin:build --withUpload -l $PWD/ --output $PWD/out --host", - "start": "backstage-cli package start", - "lint": "backstage-cli package lint", - "test": "backstage-cli package test" - }, - "dependencies": { - "@backstage/core-components": "^0.13.2", - "@backstage/core-plugin-api": "^1.5.2", - "@backstage/theme": "^0.4.0", - "@material-ui/core": "^4.12.2", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "4.0.0-alpha.61", - "react-use": "~17.2.4" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - }, - "devDependencies": { - "@aoberoi/chokidar-cli": "^2.0.0", - "@backstage/cli": "^0.22.8", - "@backstage/core-app-api": "^1.8.1", - "@backstage/dev-utils": "^1.0.16", - "@backstage/test-utils": "^1.4.0", - "@roadiehq/roadie-cli": "^1.1.1", - "@testing-library/jest-dom": "^5.10.1", - "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^14.0.0", - "@types/node": "^16.11.26", - "msw": "^1.0.0", - "ts-node": "^10.9.1" - }, - "files": [ - "dist" - ] -} diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/EntityContentComponent.tsx b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/EntityContentComponent.tsx deleted file mode 100644 index 6e5aa21..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/EntityContentComponent.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from "react"; -import { useEntity } from "@backstage/plugin-catalog-react"; -import { Grid } from "@material-ui/core"; -import { - Page, - Content, - ContentHeader, - SupportButton, -} from "@backstage/core-components"; -import { ExampleFetchComponent } from "../ExampleFetchComponent"; - -export const EntityContentComponent = () => { - const { entity } = useEntity(); - console.info(`Displaying data for ${JSON.stringify(entity)}`); - return ( - - - - My Custom Roadie Plugin - - - - - - - - - ); -}; diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/index.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/index.ts deleted file mode 100644 index a73b5d8..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/EntityComponentExample/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { EntityContentComponent } from "./EntityContentComponent"; diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx deleted file mode 100644 index e320ba3..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import { ExampleComponent } from './ExampleComponent'; -import { rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { screen } from '@testing-library/react'; -import { - setupRequestMockHandlers, - renderInTestApp, -} from "@backstage/test-utils"; - -describe('ExampleComponent', () => { - const server = setupServer(); - // Enable sane handlers for network requests - setupRequestMockHandlers(server); - - // setup mock response - beforeEach(() => { - server.use( - rest.get('/*', (_, res, ctx) => res(ctx.status(200), ctx.json({}))), - ); - }); - - it('should render', async () => { - await renderInTestApp(); - expect(screen.getByText('Welcome to my-plugin!')).toBeInTheDocument(); - }); -}); diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.tsx b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.tsx deleted file mode 100644 index 220e5cf..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/ExampleComponent.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; -import { Typography, Grid } from "@material-ui/core"; -import { - InfoCard, - Header, - Page, - Content, - ContentHeader, - HeaderLabel, - SupportButton, -} from "@backstage/core-components"; -import { ExampleFetchComponent } from "../ExampleFetchComponent"; - -export const ExampleComponent = () => ( - -
- - -
- - - A description of your plugin goes here. - - - - - - All content should be wrapped in a card like this. - - - - - - - - -
-); diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/index.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/index.ts deleted file mode 100644 index 35fddaa..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleComponent/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { ExampleComponent } from "./ExampleComponent"; diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx deleted file mode 100644 index c1035a8..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { render, screen } from '@testing-library/react'; -import { ExampleFetchComponent } from './ExampleFetchComponent'; - -describe('ExampleFetchComponent', () => { - it('renders the user table', async () => { - render(); - - // Wait for the table to render - const table = await screen.findByRole('table'); - const nationality = screen.getAllByText("GB") - // Assert that the table contains the expected user data - expect(table).toBeInTheDocument(); - expect(screen.getByAltText('Carolyn')).toBeInTheDocument(); - expect(screen.getByText('Carolyn Moore')).toBeInTheDocument(); - expect(screen.getByText('carolyn.moore@example.com')).toBeInTheDocument(); - expect(nationality[0]).toBeInTheDocument(); - }); -}); \ No newline at end of file diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx deleted file mode 100644 index 8edbb6f..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx +++ /dev/null @@ -1,325 +0,0 @@ -import React, { useEffect } from "react"; -import { makeStyles } from "@material-ui/core/styles"; -import { - Table, - TableColumn, - Progress, - ResponseErrorPanel, -} from "@backstage/core-components"; -import useAsync from "react-use/lib/useAsync"; -import { analyticsApiRef, useApi } from "@backstage/core-plugin-api"; - -export const exampleUsers = { - results: [ - { - gender: "female", - name: { - title: "Miss", - first: "Carolyn", - last: "Moore", - }, - email: "carolyn.moore@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Carolyn", - nat: "GB", - }, - { - gender: "female", - name: { - title: "Ms", - first: "Esma", - last: "Berberoğlu", - }, - email: "esma.berberoglu@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Esma", - nat: "TR", - }, - { - gender: "female", - name: { - title: "Ms", - first: "Isabella", - last: "Rhodes", - }, - email: "isabella.rhodes@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Isabella", - nat: "GB", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Derrick", - last: "Carter", - }, - email: "derrick.carter@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Derrick", - nat: "IE", - }, - { - gender: "female", - name: { - title: "Miss", - first: "Mattie", - last: "Lambert", - }, - email: "mattie.lambert@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Mattie", - nat: "AU", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Mijat", - last: "Rakić", - }, - email: "mijat.rakic@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Mijat", - nat: "RS", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Javier", - last: "Reid", - }, - email: "javier.reid@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Javier", - nat: "US", - }, - { - gender: "female", - name: { - title: "Ms", - first: "Isabella", - last: "Li", - }, - email: "isabella.li@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Isabella", - nat: "CA", - }, - { - gender: "female", - name: { - title: "Mrs", - first: "Stephanie", - last: "Garrett", - }, - email: "stephanie.garrett@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Stephanie", - nat: "AU", - }, - { - gender: "female", - name: { - title: "Ms", - first: "Antonia", - last: "Núñez", - }, - email: "antonia.nunez@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Antonia", - nat: "ES", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Donald", - last: "Young", - }, - email: "donald.young@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Donald", - nat: "US", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Iegor", - last: "Holodovskiy", - }, - email: "iegor.holodovskiy@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Iegor", - nat: "UA", - }, - { - gender: "female", - name: { - title: "Madame", - first: "Jessica", - last: "David", - }, - email: "jessica.david@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Jessica", - nat: "CH", - }, - { - gender: "female", - name: { - title: "Ms", - first: "Eve", - last: "Martinez", - }, - email: "eve.martinez@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Eve", - nat: "FR", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Caleb", - last: "Silva", - }, - email: "caleb.silva@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Caleb", - nat: "US", - }, - { - gender: "female", - name: { - title: "Miss", - first: "Marcia", - last: "Jenkins", - }, - email: "marcia.jenkins@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Marcia", - nat: "US", - }, - { - gender: "female", - name: { - title: "Mrs", - first: "Mackenzie", - last: "Jones", - }, - email: "mackenzie.jones@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Mackenzie", - nat: "NZ", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Jeremiah", - last: "Gutierrez", - }, - email: "jeremiah.gutierrez@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Jeremiah", - nat: "AU", - }, - { - gender: "female", - name: { - title: "Ms", - first: "Luciara", - last: "Souza", - }, - email: "luciara.souza@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Luciara", - nat: "BR", - }, - { - gender: "male", - name: { - title: "Mr", - first: "Valgi", - last: "da Cunha", - }, - email: "valgi.dacunha@example.com", - picture: "https://api.dicebear.com/6.x/open-peeps/svg?seed=Valgi", - nat: "BR", - }, - ], -}; - -const useStyles = makeStyles({ - avatar: { - height: 32, - width: 32, - borderRadius: "50%", - }, -}); - -type User = { - gender: string; // "male" - name: { - title: string; // "Mr", - first: string; // "Duane", - last: string; // "Reed" - }; - email: string; // "duane.reed@example.com" - picture: string; // "https://api.dicebear.com/6.x/open-peeps/svg?seed=Duane" - nat: string; // "AU" -}; - -type DenseTableProps = { - users: User[]; -}; - -export const DenseTable = ({ users }: DenseTableProps) => { - const classes = useStyles(); - - const columns: TableColumn[] = [ - { title: "Avatar", field: "avatar" }, - { title: "Name", field: "name" }, - { title: "Email", field: "email" }, - { title: "Nationality", field: "nationality" }, - ]; - - const data = users.map((user) => { - return { - avatar: ( - {user.name.first} - ), - name: `${user.name.first} ${user.name.last}`, - email: user.email, - nationality: user.nat, - }; - }); - - return ( - - ); -}; - -export const ExampleFetchComponent = () => { - const analyticsApi = useApi(analyticsApiRef); - - useEffect(() => { - analyticsApi.captureEvent({ - attributes: { component: "ExampleFetchComponent" }, - subject: "test-subject", - value: 1, - action: "component-load", - context: { - extension: "my-custom-plugin", - pluginId: "my-custom-plugin", - routeRef: "myPluginRouteRef", - }, - }); - }, [analyticsApi]); - - const { value, loading, error } = useAsync(async (): Promise => { - // Would use fetch in a real world example - return exampleUsers.results; - }, []); - - if (loading) { - return ; - } else if (error) { - return ; - } - - return ; -}; diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/index.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/index.ts deleted file mode 100644 index 41a43e8..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/components/ExampleFetchComponent/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { ExampleFetchComponent } from './ExampleFetchComponent'; diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/index.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/index.ts deleted file mode 100644 index d677d14..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { - myPluginPlugin, - MyPluginPage, - MyPluginEntityComponentContent, - MyPluginCard, -} from "./plugin"; diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.test.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.test.ts deleted file mode 100644 index abba6f3..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { myPluginPlugin } from './plugin'; - -describe('my-plugin', () => { - it('should export plugin', () => { - expect(myPluginPlugin).toBeDefined(); - }); -}); diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.ts deleted file mode 100644 index 232b060..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/plugin.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { - createComponentExtension, - createPlugin, - createRoutableExtension, - createRouteRef, -} from "@backstage/core-plugin-api"; - -import { rootRouteRef } from "./routes"; - -export const myPluginPlugin = createPlugin({ - id: "my-plugin", - routes: { - root: rootRouteRef, - }, -}); - -export const myPluginRouteRef = createRouteRef({ - id: "my-catalog-plugin", -}); - -export const MyPluginPage = myPluginPlugin.provide( - createRoutableExtension({ - name: "MyPluginPage", - component: () => - import("./components/ExampleComponent").then((m) => m.ExampleComponent), - mountPoint: rootRouteRef, - }) -); - -export const MyPluginCard = myPluginPlugin.provide( - createComponentExtension({ - name: "MyPluginContent", - component: { - lazy: () => - import("./components/ExampleFetchComponent").then( - (m) => m.ExampleFetchComponent - ), - }, - }) -); - -export const MyPluginEntityComponentContent = myPluginPlugin.provide( - createRoutableExtension({ - name: "MyPluginContent", - component: () => - import("./components/EntityComponentExample").then( - (m) => m.EntityContentComponent - ), - mountPoint: myPluginRouteRef, - }) -); diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/routes.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/routes.ts deleted file mode 100644 index 28d6acb..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/routes.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createRouteRef } from '@backstage/core-plugin-api'; - -export const rootRouteRef = createRouteRef({ - id: 'my-plugin', -}); diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/setupTests.ts b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/setupTests.ts deleted file mode 100644 index 7b0828b..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/src/setupTests.ts +++ /dev/null @@ -1 +0,0 @@ -import '@testing-library/jest-dom'; diff --git a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/tsconfig.json b/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/tsconfig.json deleted file mode 100644 index b61e496..0000000 --- a/scaffolder-templates/roadie-plugin/skeleton/plugins/my-plugin/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": [ - "src", - "dev" - ], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "dist-types", - "rootDir": "." - } -} diff --git a/scaffolder-templates/roadie-plugin/template.yaml b/scaffolder-templates/roadie-plugin/template.yaml deleted file mode 100644 index f5dbcef..0000000 --- a/scaffolder-templates/roadie-plugin/template.yaml +++ /dev/null @@ -1,70 +0,0 @@ -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: create-roadie-plugins-monorepo - title: Create Roadie Plugins Monorepo - description: Creates a Roadie plugins monorepo with example TypeScript code and example plugin with sample commands to develop, build and deploy Roadie plugins. - -spec: - owner: info@roadie.io - type: service - parameters: - - title: Provide some simple information - required: - - plugin_name - properties: - plugin_name: - title: Plugin name - type: string - description: Unique name of the first plugin in the repository. - ui:placeholder: docs-plugin - - - title: Create a GitHub repo to store your custom plugins in - required: - - repoUrl - properties: - repoUrl: - title: Repository Location - type: string - ui:field: RepoUrlPicker - ui:options: - allowedHosts: - - github.com - steps: - - id: template - name: Fetch Skeleton + Template - action: fetch:template - input: - url: ./skeleton - values: - repo_name: ${{ (parameters.repoUrl | parseRepoUrl)["repo"] }} - repo_owner: ${{ (parameters.repoUrl | parseRepoUrl)["owner"] }} - tenant: ${{ parameters.repository }} - plugin_name: ${{ parameters.plugin_name }} - - - id: fs:rename - name: Fill in names and descriptions - action: fs:rename - input: - files: - - from: ./plugins/my-plugin - to: ./plugins/${{ parameters.plugin_name }} - - - id: publish - name: Publish - action: publish:github - input: - allowedHosts: ['github.com'] - description: 'This is ${{ parameters.plugin_name }}' - repoUrl: ${{ parameters.repoUrl }} - defaultBranch: main - - - output: - links: - - title: Repository - icon: github - url: ${{ steps['publish'].output.remoteUrl }} - - title: Roadie CLI documentation - icon: help - url: https://www.npmjs.com/package/@roadiehq/roadie-cli