{"_id":"@audibene/plugin-scaffolder-backend-module-cookiecutter","name":"@audibene/plugin-scaffolder-backend-module-cookiecutter","dist-tags":{"latest":"0.2.14-next.3"},"versions":{"0.2.14-next.3":{"name":"@audibene/plugin-scaffolder-backend-module-cookiecutter","description":"A module for the scaffolder backend that lets you template projects using cookiecutter","version":"0.2.14-next.3","main":"src/index.ts","types":"src/index.ts","license":"Apache-2.0","publishConfig":{"access":"public","main":"dist/index.cjs.js","types":"dist/index.d.ts"},"backstage":{"role":"backend-plugin-module"},"scripts":{"start":"backstage-cli package start","build":"backstage-cli package build","lint":"backstage-cli package lint","test":"backstage-cli package test","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack","clean":"backstage-cli package clean"},"dependencies":{"@backstage/backend-common":"workspace:^","@backstage/config":"workspace:^","@backstage/errors":"workspace:^","@backstage/integration":"workspace:^","@backstage/plugin-scaffolder-backend":"workspace:^","@backstage/types":"workspace:^","command-exists":"^1.2.9","fs-extra":"10.1.0","winston":"^3.2.1","yn":"^4.0.0"},"devDependencies":{"@backstage/cli":"workspace:^","@types/command-exists":"^1.2.0","@types/fs-extra":"^9.0.1","@types/mock-fs":"^4.13.0","mock-fs":"^5.1.0","msw":"^0.49.0"},"gitHead":"5c351b3104b8eb34811fa829b9bcaec4dfcf3f1d","_id":"@audibene/plugin-scaffolder-backend-module-cookiecutter@0.2.14-next.3","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-beGxPV/dVmSGMN7W9LnUqpED8Eb9X2wHqokumyVZxpbHJ8De+qZ2gQxX8FURgK13d0jEM6XJD11wp131J9YqOw==","shasum":"59f4d7936417b69a830fad1180aff695be64940b","tarball":"https://registry.npmjs.org/@audibene/plugin-scaffolder-backend-module-cookiecutter/-/plugin-scaffolder-backend-module-cookiecutter-0.2.14-next.3.tgz","fileCount":5,"unpackedSize":26757,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKrict5sacfrji7UwsaZNIjSat3ASWPn7anV+e7QEoVgIgY5eAbrNfmlgKUtft91JqfkXAtwJ1su5HkLEJucLPiYs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjpdnsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIFg//Y0lptpunuhFR88N0bYqhCBiSnALjaZBT/xnyAjgrBXy8pNMA\r\n0K9m4MvYGhfl+b3fpWTNwrNWSC0zZqufWDBpZGki5pDszyH0O1xZHPPzyzy9\r\nEHA15t6ys17hfUqHcyHlOtUTTb2sNcxDHquOBHf7VlpMA5F55K0Q5GnY+63Z\r\n5TLLyx0TqgDwZ9OxKkWQ230SVTiMyCigURybm+JvUnKJhCTZ8Bw+z2MbE8By\r\n1yXYqibJER2KR5DwN0nFJW56ld2OBoVLbFbRtVHEjVLneoV1Gvbtp1yjNAAg\r\nHJl5UmZhRtcJo5sswflz3syL8+c7kafOVxno5q9eV6As43KIHKW0sWVrXKsj\r\nq62nRXEAaHv0h+FR84+6goapFkVFNWOjwzwaUjXGpS+R0s7b1zxcbo3XLhzZ\r\n7IOYUzC17HEGfP2Co2VkZxQmx474ZzSedUtzFCy8YsJDXBNX53esXeWng4Tp\r\nn9MlIoXHcx3nP7e0sREbHOWBjHjOpR5gU8S5IphcxuPfBP1watsIVp1HRmhY\r\nEP1eLjhxF0KJWwOlrTwkIApkI1S3q8sDKXSLzSHbMDNc1zcD3+H3F57qVRB9\r\nIVZNnujkQ0S+o0w9Ujda58f+rUbjSJRzYshMMlq8Np5jvjfCn16RdZKZf6CH\r\n5RLjg55nGq0+cMcXk3xlZPzrP1ykVfIxHxI=\r\n=cAt8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"audibene-platform","email":"platform@audibene.de"},"directories":{},"maintainers":[{"name":"blessan.mathew","email":"blessan.mathew@audibene.de"},{"name":"flejz","email":"jaimelopesflores@gmail.com"},{"name":"audibene-platform","email":"platform@audibene.de"},{"name":"clovisdasilvaneto","email":"cloves13@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-scaffolder-backend-module-cookiecutter_0.2.14-next.3_1671813611834_0.020556178873691433"},"_hasShrinkwrap":false}},"time":{"created":"2022-12-23T16:40:11.776Z","0.2.14-next.3":"2022-12-23T16:40:12.038Z","modified":"2022-12-23T16:40:12.238Z"},"maintainers":[{"name":"blessan.mathew","email":"blessan.mathew@audibene.de"},{"name":"flejz","email":"jaimelopesflores@gmail.com"},{"name":"audibene-platform","email":"platform@audibene.de"},{"name":"clovisdasilvaneto","email":"cloves13@hotmail.com"}],"description":"A module for the scaffolder backend that lets you template projects using cookiecutter","license":"Apache-2.0","readme":"# scaffolder-backend-module-cookiecutter\n\nWelcome to the `fetch:cookiecutter` action for the `scaffolder-backend`.\n\n## Getting started\n\nYou need to configure the action in your backend:\n\n## From your Backstage root directory\n\n```bash\n# From your Backstage root directory\nyarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-cookiecutter\n```\n\nConfigure the action:\n(you can check the [docs](https://backstage.io/docs/features/software-templates/writing-custom-actions#registering-custom-actions) to see all options):\n\n```typescript\n// packages/backend/src/plugins/scaffolder.ts\n\nconst actions = [\n  createFetchCookiecutterAction({\n    integrations,\n    reader: env.reader,\n    containerRunner,\n  }),\n  ...createBuiltInActions({\n    ...\n  })\n];\n\nreturn await createRouter({\n  containerRunner,\n  catalogClient,\n  actions,\n  logger: env.logger,\n  config: env.config,\n  database: env.database,\n  reader: env.reader,\n});\n```\n\nAfter that you can use the action in your template:\n\n```yaml\napiVersion: scaffolder.backstage.io/v1beta3\nkind: Template\nmetadata:\n  name: cookiecutter-demo\n  title: Cookiecutter Test\n  description: Cookiecutter example\nspec:\n  owner: backstage/techdocs-core\n  type: service\n\n  parameters:\n    - title: Fill in some steps\n      required:\n        - name\n        - owner\n      properties:\n        name:\n          title: Name\n          type: string\n          description: Unique name of the component\n          ui:autofocus: true\n          ui:options:\n            rows: 5\n        owner:\n          title: Owner\n          type: string\n          description: Owner of the component\n          ui:field: OwnerPicker\n          ui:options:\n            allowedKinds:\n              - Group\n        system:\n          title: System\n          type: string\n          description: System of the component\n          ui:field: EntityPicker\n          ui:options:\n            allowedKinds:\n              - System\n            defaultKind: System\n\n    - title: Choose a location\n      required:\n        - repoUrl\n        - dryRun\n      properties:\n        repoUrl:\n          title: Repository Location\n          type: string\n          ui:field: RepoUrlPicker\n          ui:options:\n            allowedHosts:\n              - github.com\n        dryRun:\n          title: Only perform a dry run, don't publish anything\n          type: boolean\n          default: false\n\n  steps:\n    - id: fetch-base\n      name: Fetch Base\n      action: fetch:cookiecutter\n      input:\n        url: ./template\n        values:\n          name: ${{ parameters.name }}\n          owner: ${{ parameters.owner }}\n          system: ${{ parameters.system }}\n          destination: ${{ parameters.repoUrl | parseRepoUrl }}\n\n    - id: publish\n      if: ${{ parameters.dryRun !== true }}\n      name: Publish\n      action: publish:github\n      input:\n        allowedHosts:\n          - github.com\n        description: This is ${{ parameters.name }}\n        repoUrl: ${{ parameters.repoUrl }}\n\n    - id: register\n      if: ${{ parameters.dryRun !== true }}\n      name: Register\n      action: catalog:register\n      input:\n        repoContentsUrl: ${{ steps['publish'].output.repoContentsUrl }}\n        catalogInfoPath: '/catalog-info.yaml'\n\n    - name: Results\n      if: ${{ parameters.dryRun }}\n      action: debug:log\n      input:\n        listWorkspace: true\n\n  output:\n    links:\n      - title: Repository\n        url: ${{ steps['publish'].output.remoteUrl }}\n      - title: Open in catalog\n        icon: catalog\n        entityRef: ${{ steps['register'].output.entityRef }}\n```\n\nYou can also visit the `/create/actions` route in your Backstage application to find out more about the parameters this action accepts when it's installed to configure how you like.\n\n### Environment setup\n\nThe environment needs to have either `cookiecutter` installed and be available in the `PATH` or access to a `docker` daemon so it can spin up a docker container with `cookiecutter` available.\n\nIf you are running Backstage from a Docker container and you want to avoid calling a container inside a container, you can set up `cookiecutter` in your own image, this will use the local installation instead.\n\nYou can do so by including the following lines in the last step of your Dockerfile:\n\n```dockerfile\nRUN apt-get update && apt-get install -y python3 python3-pip\nRUN pip3 install cookiecutter\n```\n","readmeFilename":"README.md"}