From df77da00fe64a38c7d0fcba8a810d21a101d7662 Mon Sep 17 00:00:00 2001 From: Stanislaw Malinowski Date: Thu, 4 Jul 2024 10:44:11 +0100 Subject: [PATCH 1/3] add readme page from scratch --- backstage/packages/app/package.json | 3 ++- .../app/src/components/catalog/EntityPage.tsx | 6 +++++- backstage/packages/backend/package.json | 3 ++- backstage/packages/backend/src/index.ts | 3 +++ backstage/packages/backend/src/plugins/readme.ts | 15 +++++++++++++++ 5 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 backstage/packages/backend/src/plugins/readme.ts diff --git a/backstage/packages/app/package.json b/backstage/packages/app/package.json index 51d6914b..5ecb8882 100644 --- a/backstage/packages/app/package.json +++ b/backstage/packages/app/package.json @@ -18,6 +18,7 @@ "cy:run": "cypress run --browser chrome" }, "dependencies": { + "@axis-backstage/plugin-readme": "^0.7.1", "@backstage/app-defaults": "^1.4.5", "@backstage/catalog-model": "^1.4.3", "@backstage/cli": "^0.26.2", @@ -82,4 +83,4 @@ "files": [ "dist" ] -} +} \ No newline at end of file diff --git a/backstage/packages/app/src/components/catalog/EntityPage.tsx b/backstage/packages/app/src/components/catalog/EntityPage.tsx index 08692e57..9f2083ff 100644 --- a/backstage/packages/app/src/components/catalog/EntityPage.tsx +++ b/backstage/packages/app/src/components/catalog/EntityPage.tsx @@ -69,6 +69,7 @@ import { import { Button, Grid } from '@material-ui/core'; import React from 'react'; import { EntityAboutCard } from '../AboutCard/AboutCard'; +import { ReadmeCard } from '@axis-backstage/plugin-readme'; const TECHDOCS_ANNOTATION = 'backstage.io/techdocs-ref'; const ANNOTATIONS_DOCS_URL = @@ -147,9 +148,12 @@ const entityWarningContent = ( const overviewContent = ( {entityWarningContent} - + + + + diff --git a/backstage/packages/backend/package.json b/backstage/packages/backend/package.json index 0acbf110..bd315e7e 100644 --- a/backstage/packages/backend/package.json +++ b/backstage/packages/backend/package.json @@ -16,6 +16,7 @@ "build-image": "docker build ../.. -f Dockerfile --tag backstage" }, "dependencies": { + "@axis-backstage/plugin-readme-backend": "^0.6.0", "@backstage/backend-common": "^0.23.2", "@backstage/backend-tasks": "^0.5.12", "@backstage/catalog-client": "^1.4.6", @@ -56,4 +57,4 @@ "files": [ "dist" ] -} +} \ No newline at end of file diff --git a/backstage/packages/backend/src/index.ts b/backstage/packages/backend/src/index.ts index 376f2375..87785657 100644 --- a/backstage/packages/backend/src/index.ts +++ b/backstage/packages/backend/src/index.ts @@ -19,6 +19,7 @@ import auth from './plugins/auth'; import catalog from './plugins/catalog'; import gitlab from './plugins/gitlab'; import proxy from './plugins/proxy'; +import readme from './plugins/readme'; import scaffolder from './plugins/scaffolder'; import search from './plugins/search'; import techdocs from './plugins/techdocs'; @@ -74,6 +75,7 @@ async function main() { const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder')); const authEnv = useHotMemoize(module, () => createEnv('auth')); const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); + const readmeEnv = useHotMemoize(module, () => createEnv('readme')); const techdocsEnv = useHotMemoize(module, () => createEnv('techdocs')); const searchEnv = useHotMemoize(module, () => createEnv('search')); const gitlabEnv = useHotMemoize(module, () => createEnv('gitlab')); @@ -84,6 +86,7 @@ async function main() { apiRouter.use('/auth', await auth(authEnv)); apiRouter.use('/techdocs', await techdocs(techdocsEnv)); apiRouter.use('/proxy', await proxy(proxyEnv)); + apiRouter.use('/readme', await proxy(readmeEnv)); apiRouter.use('/search', await search(searchEnv)); apiRouter.use('/gitlab', await gitlab(gitlabEnv)); diff --git a/backstage/packages/backend/src/plugins/readme.ts b/backstage/packages/backend/src/plugins/readme.ts new file mode 100644 index 00000000..e9dbdf58 --- /dev/null +++ b/backstage/packages/backend/src/plugins/readme.ts @@ -0,0 +1,15 @@ +import { createRouter } from '@axis-backstage/plugin-readme-backend'; +import { Router } from 'express'; +import { PluginEnvironment } from '../types'; + +export default async function createPlugin( + env: PluginEnvironment, +): Promise { + return await createRouter({ + logger: env.logger, + config: env.config, + reader: env.reader, + discovery: env.discovery, + tokenManager: env.tokenManager, + }); +} From 932b00107acbd4813bb4e3af30a751424124b2e8 Mon Sep 17 00:00:00 2001 From: Stanislaw Malinowski Date: Thu, 4 Jul 2024 10:24:27 +0000 Subject: [PATCH 2/3] prettier --- backstage/packages/app/package.json | 2 +- backstage/packages/backend/package.json | 2 +- .../packages/backend/src/plugins/readme.ts | 16 +-- backstage/yarn.lock | 126 +++++++++++++++++- 4 files changed, 135 insertions(+), 11 deletions(-) diff --git a/backstage/packages/app/package.json b/backstage/packages/app/package.json index 5ecb8882..a518c5b6 100644 --- a/backstage/packages/app/package.json +++ b/backstage/packages/app/package.json @@ -83,4 +83,4 @@ "files": [ "dist" ] -} \ No newline at end of file +} diff --git a/backstage/packages/backend/package.json b/backstage/packages/backend/package.json index bd315e7e..f7cc9f41 100644 --- a/backstage/packages/backend/package.json +++ b/backstage/packages/backend/package.json @@ -57,4 +57,4 @@ "files": [ "dist" ] -} \ No newline at end of file +} diff --git a/backstage/packages/backend/src/plugins/readme.ts b/backstage/packages/backend/src/plugins/readme.ts index e9dbdf58..aafbd1bc 100644 --- a/backstage/packages/backend/src/plugins/readme.ts +++ b/backstage/packages/backend/src/plugins/readme.ts @@ -3,13 +3,13 @@ import { Router } from 'express'; import { PluginEnvironment } from '../types'; export default async function createPlugin( - env: PluginEnvironment, + env: PluginEnvironment, ): Promise { - return await createRouter({ - logger: env.logger, - config: env.config, - reader: env.reader, - discovery: env.discovery, - tokenManager: env.tokenManager, - }); + return await createRouter({ + logger: env.logger, + config: env.config, + reader: env.reader, + discovery: env.discovery, + tokenManager: env.tokenManager, + }); } diff --git a/backstage/yarn.lock b/backstage/yarn.lock index 46c07992..1cb5370a 100644 --- a/backstage/yarn.lock +++ b/backstage/yarn.lock @@ -1149,6 +1149,39 @@ "@smithy/types" "^2.10.1" tslib "^2.5.0" +"@axis-backstage/plugin-readme-backend@^0.6.0": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@axis-backstage/plugin-readme-backend/-/plugin-readme-backend-0.6.1.tgz#a7f532ddcd1988a01109c4b840e4f961bb2e657a" + integrity sha512-hfMhtTNSVi08JJuCAn6yvKuKlV6Acq1jC1tVefhqtNiTx9KwkI9SUNFGo6nKXPJJUEHPRdPCzdM5S8cM/dvNLQ== + dependencies: + "@backstage/backend-common" "^0.21.7" + "@backstage/backend-plugin-api" "^0.6.17" + "@backstage/catalog-client" "^1.6.4" + "@backstage/catalog-model" "^1.4.5" + "@backstage/config" "^1.2.0" + "@backstage/integration" "^1.10.0" + "@backstage/plugin-permission-common" "^0.7.13" + "@types/express" "*" + express "^4.17.1" + express-promise-router "^4.1.0" + node-fetch "^2.6.7" + winston "^3.2.1" + yn "^4.0.0" + +"@axis-backstage/plugin-readme@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@axis-backstage/plugin-readme/-/plugin-readme-0.7.1.tgz#166326eae9cc38cd2e2f114ecd8a352866aebb24" + integrity sha512-mRZDmCDbOYT0b01ZxO9R7G36jiGqJmgRqokaeDh9Ac54rs3BhfeBU95dUFeMnjePFKllqzqYAA2Bk28TWN7ubA== + dependencies: + "@backstage/catalog-model" "^1.4.5" + "@backstage/core-components" "^0.14.4" + "@backstage/core-plugin-api" "^1.9.2" + "@backstage/plugin-catalog-react" "^1.11.3" + "@backstage/theme" "^0.5.3" + "@mui/icons-material" "^5.15.7" + "@mui/material" "^5.15.7" + react-use "^17.2.4" + "@azure/abort-controller@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" @@ -2559,7 +2592,7 @@ winston "^3.2.1" winston-transport "^4.5.0" -"@backstage/backend-common@^0.21.2", "@backstage/backend-common@^0.21.6": +"@backstage/backend-common@^0.21.2", "@backstage/backend-common@^0.21.6", "@backstage/backend-common@^0.21.7": version "0.21.7" resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.21.7.tgz#5ae796d8adccebc484edeeb2326464c28e14849e" integrity sha512-wWpnjLYxEstFnAherkfwZIlAazdu1dfJ/5KjK1aSeMZYGyRWcelegs+Dz9MLZ53e/5qtSJ5+caltNfiItda86w== @@ -6763,11 +6796,36 @@ clsx "^2.1.0" prop-types "^15.8.1" +"@mui/base@5.0.0-beta.40": + version "5.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40.tgz#1f8a782f1fbf3f84a961e954c8176b187de3dae2" + integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== + dependencies: + "@babel/runtime" "^7.23.9" + "@floating-ui/react-dom" "^2.0.8" + "@mui/types" "^7.2.14" + "@mui/utils" "^5.15.14" + "@popperjs/core" "^2.11.8" + clsx "^2.1.0" + prop-types "^15.8.1" + "@mui/core-downloads-tracker@^5.15.12": version "5.15.12" resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.12.tgz#f3da6ff16c753ab8b2f8d401c1e1534ba8a8a9a9" integrity sha512-brRO+tMFLpGyjEYHrX97bzqeF6jZmKpqqe1rY0LyIHAwP6xRVzh++zSecOQorDOCaZJg4XkGT9xfD+RWOWxZBA== +"@mui/core-downloads-tracker@^5.15.21": + version "5.15.21" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.21.tgz#15ffc56cef7009479229b55126176f988afba96b" + integrity sha512-dp9lXBaJZzJYeJfQY3Ow4Rb49QaCEdkl2KKYscdQHQm6bMJ+l4XPY3Cd9PCeeJTsHPIDJ60lzXbeRgs6sx/rpw== + +"@mui/icons-material@^5.15.7": + version "5.15.21" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.21.tgz#1e29e1bdb90916be5b66c95c45951f441821f34a" + integrity sha512-yqkq1MbdkmX5ZHyvZTBuAaA6RkvoqkoAgwBSx9Oh0L0jAfj9T/Ih/NhMNjkl8PWVSonjfDUkKroBnjRyo/1M9Q== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/material@^5.12.2": version "5.15.12" resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.12.tgz#08d6582e4037f45df510f3bce51fa06b38a9a676" @@ -6786,6 +6844,24 @@ react-is "^18.2.0" react-transition-group "^4.4.5" +"@mui/material@^5.15.7": + version "5.15.21" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.21.tgz#b2c8d756af570a61cb4975acf0e71dafb110b001" + integrity sha512-nTyCcgduKwHqiuQ/B03EQUa+utSMzn2sQp0QAibsnYe4tvc3zkMbO0amKpl48vhABIY3IvT6w9615BFIgMt0YA== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/base" "5.0.0-beta.40" + "@mui/core-downloads-tracker" "^5.15.21" + "@mui/system" "^5.15.20" + "@mui/types" "^7.2.14" + "@mui/utils" "^5.15.20" + "@types/react-transition-group" "^4.4.10" + clsx "^2.1.0" + csstype "^3.1.3" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + "@mui/private-theming@^5.15.12": version "5.15.12" resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.12.tgz#e3ac99b3dbfa6ecc6e914009df33a2d400432f6e" @@ -6795,6 +6871,15 @@ "@mui/utils" "^5.15.12" prop-types "^15.8.1" +"@mui/private-theming@^5.15.20": + version "5.15.20" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.20.tgz#028c4e3c717a13691ac2c8c98e29aa819d89001a" + integrity sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/utils" "^5.15.20" + prop-types "^15.8.1" + "@mui/styled-engine@^5.15.11": version "5.15.11" resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.11.tgz#040181f31910e0f66d43a5c44fe89da06b34212b" @@ -6805,6 +6890,16 @@ csstype "^3.1.3" prop-types "^15.8.1" +"@mui/styled-engine@^5.15.14": + version "5.15.14" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.14.tgz#168b154c4327fa4ccc1933a498331d53f61c0de2" + integrity sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw== + dependencies: + "@babel/runtime" "^7.23.9" + "@emotion/cache" "^11.11.0" + csstype "^3.1.3" + prop-types "^15.8.1" + "@mui/system@^5.15.12": version "5.15.12" resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.12.tgz#852cf7c339eb61703196f56c36fc93206136eb20" @@ -6819,11 +6914,30 @@ csstype "^3.1.3" prop-types "^15.8.1" +"@mui/system@^5.15.20": + version "5.15.20" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.20.tgz#f1933aabc4c10f8580c7a951ca3b88542ef0f76b" + integrity sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/private-theming" "^5.15.20" + "@mui/styled-engine" "^5.15.14" + "@mui/types" "^7.2.14" + "@mui/utils" "^5.15.20" + clsx "^2.1.0" + csstype "^3.1.3" + prop-types "^15.8.1" + "@mui/types@^7.2.13": version "7.2.13" resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.13.tgz#d1584912942f9dc042441ecc2d1452be39c666b8" integrity sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g== +"@mui/types@^7.2.14": + version "7.2.14" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.14.tgz#8a02ac129b70f3d82f2f9b76ded2c8d48e3fc8c9" + integrity sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ== + "@mui/utils@^5.14.15", "@mui/utils@^5.15.12": version "5.15.12" resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.12.tgz#bd00b678c16b98c543d4c6c560f9c90e6792b2a7" @@ -6834,6 +6948,16 @@ prop-types "^15.8.1" react-is "^18.2.0" +"@mui/utils@^5.15.14", "@mui/utils@^5.15.20": + version "5.15.20" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.20.tgz#92778d749ce5ded1598639b4e684aaedb1146e08" + integrity sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A== + dependencies: + "@babel/runtime" "^7.23.9" + "@types/prop-types" "^15.7.11" + prop-types "^15.8.1" + react-is "^18.2.0" + "@mui/x-charts@^6.0.0-alpha.7": version "6.19.5" resolved "https://registry.yarnpkg.com/@mui/x-charts/-/x-charts-6.19.5.tgz#1c427961b87ba12ea3407ce1623e235a090828f4" From 129d720c9222feee53513119013a488840c69943 Mon Sep 17 00:00:00 2001 From: Stanislaw Malinowski Date: Thu, 4 Jul 2024 10:54:42 +0000 Subject: [PATCH 3/3] fix missing call --- backstage/packages/backend/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backstage/packages/backend/src/index.ts b/backstage/packages/backend/src/index.ts index 87785657..69de6734 100644 --- a/backstage/packages/backend/src/index.ts +++ b/backstage/packages/backend/src/index.ts @@ -86,7 +86,7 @@ async function main() { apiRouter.use('/auth', await auth(authEnv)); apiRouter.use('/techdocs', await techdocs(techdocsEnv)); apiRouter.use('/proxy', await proxy(proxyEnv)); - apiRouter.use('/readme', await proxy(readmeEnv)); + apiRouter.use('/readme', await readme(readmeEnv)); apiRouter.use('/search', await search(searchEnv)); apiRouter.use('/gitlab', await gitlab(gitlabEnv));