From 887061ea592310de5937be8a27989fd8ce27fa81 Mon Sep 17 00:00:00 2001 From: Yi Cai Date: Thu, 18 Dec 2025 23:22:31 -0500 Subject: [PATCH 1/2] feat(i18n): added fr, it and ja support --- ...pload_gO1x9evesBS0qAX7AUPaY0_d6311838.json | 9 + .i18n.config.json | 17 + .../1.8/pMeeU5JfqcECe9DAqP8AA3 | 17 + argocd_clusterRole.yaml | 71 + .../plugins/adoption-insights.yaml | 65 + .../plugins/analytics-provider-segment.yaml | 115 ++ .../plugins/argocd-scaffolder-actions.yaml | 69 + .../plugins/azure-container-registry.yaml | 196 ++ .../marketplace/plugins/azure-devops.yaml | 65 + .../plugins/azure-repositories.yaml | 167 ++ .../plugins/azure-scaffolder-actions.yaml | 51 + .../backstage-community-plugin-quay.yaml | 66 + .../bitbucket-cloud-catalog-integration.yaml | 48 + .../bitbucket-cloud-scaffolder-actions.yaml | 52 + .../bitbucket-server-catalog-integration.yaml | 49 + .../bitbucket-server-scaffolder-actions.yaml | 51 + .../plugins/contrib-techdocs-addons.yaml | 66 + .../marketplace/plugins/datadog.yaml | 59 + .../plugins/dynatrace-community.yaml | 122 ++ .../marketplace/plugins/extensions.yaml | 62 + .../plugins/gerrit-scaffolder-actions.yaml | 53 + .../marketplace/plugins/github-actions.yaml | 63 + .../plugins/github-catalog-integration.yaml | 73 + .../marketplace/plugins/github-insights.yaml | 57 + .../marketplace/plugins/github-issues.yaml | 62 + .../github-org-catalog-integration.yaml | 61 + .../plugins/github-pull-requests.yaml | 69 + .../plugins/gitlab-catalog-cards.yaml | 67 + .../plugins/gitlab-catalog-integration.yaml | 58 + .../gitlab-org-catalog-integration.yaml | 57 + .../plugins/gitlab-scaffolder-actions.yaml | 65 + .../global-floating-action-button.yaml | 57 + .../marketplace/plugins/global-header.yaml | 59 + .../marketplace/plugins/home-page.yaml | 65 + .../http-request-scaffolder-action.yaml | 61 + .../marketplace/plugins/jenkins.yaml | 57 + .../plugins/jfrog-artifactory.yaml | 56 + .../marketplace/plugins/jira.yaml | 63 + .../plugins/keycloak-catalog-integration.yaml | 269 +++ .../plugins/ldap-catalog-integration.yaml | 59 + .../marketplace/plugins/lighthouse.yaml | 57 + .../microsoft-graph-catalog-integration.yaml | 58 + .../plugins/nexus-repository-manager.yaml | 81 + .../plugins/notifications-email.yaml | 59 + .../marketplace/plugins/notifications.yaml | 74 + .../plugins/openshift-cluster-manager.yaml | 70 + .../marketplace/plugins/pagerduty.yaml | 75 + .../marketplace/plugins/pingidentity.yaml | 53 + .../plugins/quay-scaffolder-actions.yaml | 107 + .../marketplace/plugins/quickstart.yaml | 50 + .../marketplace/plugins/rbac.yaml | 61 + .../marketplace/plugins/redhat-argocd.yaml | 113 ++ .../plugins/regex-scaffolder-actions.yaml | 74 + .../roadie-scaffolder-util-actions.yaml | 68 + ...elation-processor-catalog-integration.yaml | 56 + .../marketplace/plugins/scorecard.yaml | 67 + .../plugins/security-insights.yaml | 60 + .../servicenow-scaffolder-actions.yaml | 67 + .../marketplace/plugins/signals-backend.yaml | 60 + .../marketplace/plugins/signals.yaml | 60 + .../plugins/sonarqube-catalog-cards.yaml | 63 + .../plugins/sonarqube-scaffolder-actions.yaml | 66 + .../marketplace/plugins/tech-radar.yaml | 80 + .../marketplace/plugins/tekton.yaml | 124 ++ .../marketplace/plugins/topology.yaml | 64 + check_pairs_current_state.py | 54 + dynamic-plugins-root-test-ignore/.gitkeep | 0 .../.eslintignore | 2 + .../.eslintrc.js | 1 + .../package.json | 67 + .../src/index.ts | 2 + .../tsconfig.json | 9 + .../turbo.json | 10 + .../.eslintignore | 2 + .../.eslintrc.js | 1 + .../package.json | 64 + .../src/index.ts | 10 + .../tsconfig.json | 9 + .../turbo.json | 10 + .../.eslintignore | 2 + .../.eslintrc.js | 1 + .../package.json | 77 + .../src/index.ts | 9 + .../tsconfig.json | 9 + .../turbo.json | 10 + .../backstage-plugin-kubernetes/.eslintignore | 2 + .../backstage-plugin-kubernetes/.eslintrc.js | 1 + .../backstage-plugin-kubernetes/package.json | 65 + .../backstage-plugin-kubernetes/src/index.ts | 66 + .../backstage-plugin-kubernetes/tsconfig.json | 9 + .../backstage-plugin-kubernetes/turbo.json | 8 + .../backstage-plugin-signals/.eslintignore | 2 + .../backstage-plugin-signals/.eslintrc.js | 1 + .../backstage-plugin-signals/package.json | 65 + .../backstage-plugin-signals/src/index.ts | 9 + .../backstage-plugin-signals/tsconfig.json | 9 + .../backstage-plugin-signals/turbo.json | 8 + .../.eslintignore | 2 + .../.eslintrc.js | 12 + .../package.json | 68 + .../src/ShadowRootStylesProvider.tsx | 45 + .../src/addons.tsx | 59 + .../src/index.ts | 2 + .../tsconfig.json | 10 + .../turbo.json | 10 + .../backstage-plugin-techdocs/.eslintignore | 2 + .../backstage-plugin-techdocs/.eslintrc.js | 12 + .../backstage-plugin-techdocs/package.json | 72 + .../backstage-plugin-techdocs/src/index.ts | 7 + .../backstage-plugin-techdocs/src/types.ts | 13 + .../backstage-plugin-techdocs/src/utils.tsx | 14 + .../backstage-plugin-techdocs/src/wrapped.tsx | 64 + .../backstage-plugin-techdocs/tsconfig.json | 10 + .../backstage-plugin-techdocs/turbo.json | 8 + .../.eslintignore | 2 + .../.eslintrc.js | 1 + .../package.json | 66 + .../src/index.ts | 9 + .../tsconfig.json | 9 + .../turbo.json | 10 + .../.eslintignore | 2 + .../.eslintrc.js | 1 + .../package.json | 66 + .../src/index.ts | 9 + .../tsconfig.json | 9 + .../turbo.json | 10 + dynamic-plugins.yaml | 179 ++ .../package.json | 4 +- e2e-tests/package.json | 4 +- .../playwright/e2e/localization/locale.ts | 8 +- e2e-tests/playwright/utils/accessibility.ts | 2 +- i18n/reference.json | 134 ++ i18n/reference.json.backup | 133 ++ package.json | 3 +- packages/app/package.json | 1 + .../catalog/translations/catalog.ts | 3 + .../src/components/catalog/translations/fr.ts | 103 + .../src/components/catalog/translations/it.ts | 26 + .../src/components/catalog/translations/ja.ts | 26 + .../catalog-import/catalog-import.ts | 3 + .../app/src/translations/catalog-import/fr.ts | 91 + .../app/src/translations/catalog-import/it.ts | 27 + .../app/src/translations/catalog-import/ja.ts | 27 + .../core-components/core-components.ts | 3 + .../src/translations/core-components/fr.ts | 78 + .../src/translations/core-components/it.ts | 38 + .../src/translations/core-components/ja.ts | 38 + packages/app/src/translations/rhdh/fr.ts | 116 +- packages/app/src/translations/rhdh/index.ts | 1 + packages/app/src/translations/rhdh/it.ts | 106 +- packages/app/src/translations/rhdh/ja.ts | 110 ++ .../app/src/translations/scaffolder/fr.ts | 201 ++ .../app/src/translations/scaffolder/it.ts | 26 + .../app/src/translations/scaffolder/ja.ts | 26 + .../src/translations/scaffolder/scaffolder.ts | 3 + packages/app/src/translations/search/ja.ts | 26 + .../app/src/translations/search/search-fr.ts | 26 +- .../app/src/translations/search/search-it.ts | 22 +- .../app/src/translations/search/search.ts | 1 + .../app/src/translations/user-settings/ja.ts | 26 + .../user-settings/user-settings-fr.ts | 71 +- .../user-settings/user-settings-it.ts | 22 +- .../user-settings/user-settings.ts | 1 + pvc.yaml | 10 + rbac-policy.csv | 20 + start-backend-debug.sh | 50 + start-backend-with-env.sh | 27 + ...ty-plugins-reference-2025-12-05-fr-C.json} | 1007 ++++++---- ...ity-plugins-reference-2025-12-05-it-C.json | 740 +++++++ ...ity-plugins-reference-2025-12-05-ja-C.json | 740 +++++++ ...hdh-plugins-reference-2025-12-05-fr-C.json | 1013 ++++++++++ ...hdh-plugins-reference-2025-12-05-it-C.json | 1009 ++++++++++ ...hdh-plugins-reference-2025-12-05-ja-C.json | 1009 ++++++++++ .../rhdh-plugins__v1.8_s3281-fr-C.json | 197 -- ...on => rhdh-reference-2025-12-05-fr-C.json} | 693 ++++--- .../rhdh-reference-2025-12-05-it-C.json | 134 ++ .../rhdh-reference-2025-12-05-ja-C.json | 134 ++ translations/rhdh_v1.8_s3281-fr-C.json | 75 - ...ights__src__translations__ref-en-fr-C.json | 64 + yarn.lock | 1718 ++++++++++++++++- 180 files changed, 15023 insertions(+), 1145 deletions(-) create mode 100644 .i18n-cache/upload_gO1x9evesBS0qAX7AUPaY0_d6311838.json create mode 100644 .i18n.config.json create mode 100644 .ui-i18n-download-cache/1.8/pMeeU5JfqcECe9DAqP8AA3 create mode 100644 argocd_clusterRole.yaml create mode 100644 catalog-entities/marketplace/plugins/adoption-insights.yaml create mode 100644 catalog-entities/marketplace/plugins/analytics-provider-segment.yaml create mode 100644 catalog-entities/marketplace/plugins/argocd-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/azure-container-registry.yaml create mode 100644 catalog-entities/marketplace/plugins/azure-devops.yaml create mode 100644 catalog-entities/marketplace/plugins/azure-repositories.yaml create mode 100644 catalog-entities/marketplace/plugins/azure-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/backstage-community-plugin-quay.yaml create mode 100644 catalog-entities/marketplace/plugins/bitbucket-cloud-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/bitbucket-cloud-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/bitbucket-server-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/bitbucket-server-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/contrib-techdocs-addons.yaml create mode 100644 catalog-entities/marketplace/plugins/datadog.yaml create mode 100644 catalog-entities/marketplace/plugins/dynatrace-community.yaml create mode 100644 catalog-entities/marketplace/plugins/extensions.yaml create mode 100644 catalog-entities/marketplace/plugins/gerrit-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/github-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/github-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/github-insights.yaml create mode 100644 catalog-entities/marketplace/plugins/github-issues.yaml create mode 100644 catalog-entities/marketplace/plugins/github-org-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/github-pull-requests.yaml create mode 100644 catalog-entities/marketplace/plugins/gitlab-catalog-cards.yaml create mode 100644 catalog-entities/marketplace/plugins/gitlab-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/gitlab-org-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/gitlab-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/global-floating-action-button.yaml create mode 100644 catalog-entities/marketplace/plugins/global-header.yaml create mode 100644 catalog-entities/marketplace/plugins/home-page.yaml create mode 100644 catalog-entities/marketplace/plugins/http-request-scaffolder-action.yaml create mode 100644 catalog-entities/marketplace/plugins/jenkins.yaml create mode 100644 catalog-entities/marketplace/plugins/jfrog-artifactory.yaml create mode 100644 catalog-entities/marketplace/plugins/jira.yaml create mode 100644 catalog-entities/marketplace/plugins/keycloak-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/ldap-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/lighthouse.yaml create mode 100644 catalog-entities/marketplace/plugins/microsoft-graph-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/nexus-repository-manager.yaml create mode 100644 catalog-entities/marketplace/plugins/notifications-email.yaml create mode 100644 catalog-entities/marketplace/plugins/notifications.yaml create mode 100644 catalog-entities/marketplace/plugins/openshift-cluster-manager.yaml create mode 100644 catalog-entities/marketplace/plugins/pagerduty.yaml create mode 100644 catalog-entities/marketplace/plugins/pingidentity.yaml create mode 100644 catalog-entities/marketplace/plugins/quay-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/quickstart.yaml create mode 100644 catalog-entities/marketplace/plugins/rbac.yaml create mode 100644 catalog-entities/marketplace/plugins/redhat-argocd.yaml create mode 100644 catalog-entities/marketplace/plugins/regex-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/roadie-scaffolder-util-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/scaffolder-relation-processor-catalog-integration.yaml create mode 100644 catalog-entities/marketplace/plugins/scorecard.yaml create mode 100644 catalog-entities/marketplace/plugins/security-insights.yaml create mode 100644 catalog-entities/marketplace/plugins/servicenow-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/signals-backend.yaml create mode 100644 catalog-entities/marketplace/plugins/signals.yaml create mode 100644 catalog-entities/marketplace/plugins/sonarqube-catalog-cards.yaml create mode 100644 catalog-entities/marketplace/plugins/sonarqube-scaffolder-actions.yaml create mode 100644 catalog-entities/marketplace/plugins/tech-radar.yaml create mode 100644 catalog-entities/marketplace/plugins/tekton.yaml create mode 100644 catalog-entities/marketplace/plugins/topology.yaml create mode 100644 check_pairs_current_state.py create mode 100644 dynamic-plugins-root-test-ignore/.gitkeep create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/package.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/package.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/package.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/package.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-signals/package.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-signals/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-signals/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-signals/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/package.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/ShadowRootStylesProvider.tsx create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/addons.tsx create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/package.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/types.ts create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/utils.tsx create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/wrapped.tsx create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/package.json create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/turbo.json create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintignore create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintrc.js create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/package.json create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/src/index.ts create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/tsconfig.json create mode 100644 dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/turbo.json create mode 100644 dynamic-plugins.yaml create mode 100644 i18n/reference.json create mode 100644 i18n/reference.json.backup create mode 100644 packages/app/src/components/catalog/translations/fr.ts create mode 100644 packages/app/src/components/catalog/translations/it.ts create mode 100644 packages/app/src/components/catalog/translations/ja.ts create mode 100644 packages/app/src/translations/catalog-import/fr.ts create mode 100644 packages/app/src/translations/catalog-import/it.ts create mode 100644 packages/app/src/translations/catalog-import/ja.ts create mode 100644 packages/app/src/translations/core-components/fr.ts create mode 100644 packages/app/src/translations/core-components/it.ts create mode 100644 packages/app/src/translations/core-components/ja.ts create mode 100644 packages/app/src/translations/rhdh/ja.ts create mode 100644 packages/app/src/translations/scaffolder/fr.ts create mode 100644 packages/app/src/translations/scaffolder/it.ts create mode 100644 packages/app/src/translations/scaffolder/ja.ts create mode 100644 packages/app/src/translations/search/ja.ts create mode 100644 packages/app/src/translations/user-settings/ja.ts create mode 100644 pvc.yaml create mode 100644 rbac-policy.csv create mode 100755 start-backend-debug.sh create mode 100755 start-backend-with-env.sh rename translations/{community-plugins_v1.8_s3281-fr-C.json => community-plugins-reference-2025-12-05-fr-C.json} (77%) create mode 100644 translations/community-plugins-reference-2025-12-05-it-C.json create mode 100644 translations/community-plugins-reference-2025-12-05-ja-C.json create mode 100644 translations/rhdh-plugins-reference-2025-12-05-fr-C.json create mode 100644 translations/rhdh-plugins-reference-2025-12-05-it-C.json create mode 100644 translations/rhdh-plugins-reference-2025-12-05-ja-C.json delete mode 100644 translations/rhdh-plugins__v1.8_s3281-fr-C.json rename translations/{core-plugins_v1.8_s3281-fr-C.json => rhdh-reference-2025-12-05-fr-C.json} (90%) create mode 100644 translations/rhdh-reference-2025-12-05-it-C.json create mode 100644 translations/rhdh-reference-2025-12-05-ja-C.json delete mode 100644 translations/rhdh_v1.8_s3281-fr-C.json create mode 100644 ui-i18n-downloads/1.8/rhdh-plugins/adoption-insights/rhdh-plugins__workspaces__adoption-insights__plugins__adoption-insights__src__translations__ref-en-fr-C.json diff --git a/.i18n-cache/upload_gO1x9evesBS0qAX7AUPaY0_d6311838.json b/.i18n-cache/upload_gO1x9evesBS0qAX7AUPaY0_d6311838.json new file mode 100644 index 0000000000..5da4c1d3e0 --- /dev/null +++ b/.i18n-cache/upload_gO1x9evesBS0qAX7AUPaY0_d6311838.json @@ -0,0 +1,9 @@ +{ + "filePath": "i18n/reference.json", + "fileHash": "8fcdb306a19ad21dd3104f0663250a2563af1ffa3ec096f4e01fbc7eae8c6d10", + "projectId": "gO1x9evesBS0qAX7AUPaY0", + "tmsUrl": "https://cloud.memsource.com/web", + "uploadedAt": "2025-12-05T21:24:16.390Z", + "keyCount": 104, + "uploadFileName": "rhdh-reference-2025-12-05.json" +} diff --git a/.i18n.config.json b/.i18n.config.json new file mode 100644 index 0000000000..ffdcf56654 --- /dev/null +++ b/.i18n.config.json @@ -0,0 +1,17 @@ +{ + "tms": { + "url": "https://cloud.memsource.com/web", + "projectId": "gO1x9evesBS0qAX7AUPaY0" + }, + "directories": { + "sourceDir": "src", + "outputDir": "i18n", + "localesDir": "src/locales" + }, + "languages": ["it", "ja", "fr"], + "format": "json", + "patterns": { + "include": "**/*.{ts,tsx,js,jsx}", + "exclude": "**/node_modules/**,**/dist/**,**/build/**,**/*.test.ts,**/*.spec.ts" + } +} diff --git a/.ui-i18n-download-cache/1.8/pMeeU5JfqcECe9DAqP8AA3 b/.ui-i18n-download-cache/1.8/pMeeU5JfqcECe9DAqP8AA3 new file mode 100644 index 0000000000..e8f765a392 --- /dev/null +++ b/.ui-i18n-download-cache/1.8/pMeeU5JfqcECe9DAqP8AA3 @@ -0,0 +1,17 @@ +{ + "uid": "pMeeU5JfqcECe9DAqP8AA3", + "status": "COMPLETED", + "providers": [ + { + "type": "USER", + "id": "285168" + } + ], + "target_lang": "fr", + "workflow_step": null, + "filename": "rhdh-plugins__workspaces__adoption-insights__plugins__adoption-insights__src__translations__ref-en.json", + "date_due": "null", + "date_created": "2025-09-03 06:43:56+00:00", + "imported": true, + "continuous": false +} diff --git a/argocd_clusterRole.yaml b/argocd_clusterRole.yaml new file mode 100644 index 0000000000..3d391a44c7 --- /dev/null +++ b/argocd_clusterRole.yaml @@ -0,0 +1,71 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: redhat-argocd-plugin +rules: + # Base for Kubernetes plugin + - apiGroups: + - '' + resources: + - pods/log + - pods + - services + - configmaps + - limitranges + verbs: + - get + - watch + - list + - apiGroups: + - metrics.k8s.io + resources: + - pods + verbs: + - get + - watch + - list + - apiGroups: + - apps + resources: + - daemonsets + - deployments + - replicasets + - statefulsets + verbs: + - get + - watch + - list + - apiGroups: + - autoscaling + resources: + - horizontalpodautoscalers + verbs: + - get + - watch + - list + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - watch + - list + - apiGroups: + - batch + resources: + - jobs + - cronjobs + verbs: + - get + - watch + - list + # Additional permissions for the redhat-argocd-plugin + - apiGroups: + - argoproj.io + resources: + - rollouts + - analysisruns + verbs: + - get + - list \ No newline at end of file diff --git a/catalog-entities/marketplace/plugins/adoption-insights.yaml b/catalog-entities/marketplace/plugins/adoption-insights.yaml new file mode 100644 index 0000000000..6929a7e602 --- /dev/null +++ b/catalog-entities/marketplace/plugins/adoption-insights.yaml @@ -0,0 +1,65 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: adoption-insights + namespace: rhdh + title: Adoption Insights for Red Hat Developer Hub + description: | + The Adoption Insights plugin enables you to visualize and analyze adoption and engagement metrics such as active users, total users, top catalog entities by views, top templates, TechDocs and plugin usage, and portal search trends within your internal developer portal. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - analytics + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Issues + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub/1.6/html-single/adoption_insights_in_red_hat_developer_hub/index + - title: Source Code + url: https://github.com/redhat-developer/rhdh-plugins/tree/main/workspaces/adoption-insights/plugins/adoption-insights + +spec: + support: + provider: Red Hat + level: generally-available + lifecycle: active + author: Red Hat + publisher: Red Hat + + categories: + - Analytics + + highlights: + - Active users (new vs. returning) over time + - Total number of users (logged‑in vs. licensed) + - Top catalog entities by views + - Top templates, TechDocs, and plugins + - Portal search trends + + description: | + The Adoption Insights plugin visualizes key adoption and engagement metrics to help platform engineers make data‑driven decisions, pinpoint areas of improvement, highlight popular features, and track progress toward adoption goals. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + + # Images are base 64 encoded SVGs (below is a blank square from the mockup) + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - rhdh-backstage-plugin-adoption-insights-backend + - rhdh-backstage-plugin-adoption-insights + - rhdh-backstage-plugin-analytics-module-adoption-insights diff --git a/catalog-entities/marketplace/plugins/analytics-provider-segment.yaml b/catalog-entities/marketplace/plugins/analytics-provider-segment.yaml new file mode 100644 index 0000000000..4c0627755e --- /dev/null +++ b/catalog-entities/marketplace/plugins/analytics-provider-segment.yaml @@ -0,0 +1,115 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: analytics-provider-segment + namespace: rhdh + title: Segment Analytics Module + description: | + Segment Analytics Module for Backstage. This plugin ships as enabled by default in Red Hat Developer Hub. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/backstage-community-plugin-analytics-provider-segment + tags: + - analytics +spec: + categories: + - Analytics + author: Red Hat + publisher: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + description: | + This plugin ships as enabled by default in Red Hat Developer Hub. + + This plugin provides an implementation of the Backstage Analytics API for + Segment. Once installed and configured, analytics events will be sent to + Segment as your users navigate and use your Backstage instance. + + This plugin contains no other functionality. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + installation: | + ## Configuration + + 1. Wire up the API implementation to your App in `packages/app/src/apis.ts`: + + ```tsx title="packages/app/src/apis.ts" + /* highlight-add-start */ + import { SegmentAnalytics } from '@backstage-community/plugin-analytics-provider-segment'; + import { + analyticsApiRef, + configApiRef, + identityApiRef, + } from '@backstage/core-plugin-api'; + + /* highlight-add-end */ + + export const apis: AnyApiFactory[] = [ + // Other APIs... + // Instantiate and register the GA Analytics API Implementation. + /* highlight-add-start */ + createApiFactory({ + api: analyticsApiRef, + deps: { configApi: configApiRef, identityApi: identityApiRef }, + factory: ({ configApi, identityApi }) => + SegmentAnalytics.fromConfig(configApi, identityApi), + }), + /* highlight-add-end */ + ]; + ``` + + 2. Configure the plugin in your `app-config.yaml`: + + The following is the minimum configuration required to start sending analytics + events to Segment. All that's needed is your Segment Write Key + + ```yaml title="app-config.yaml" + app: + analytics: + segment: + # highlight-start + writeKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + maskIP: true # prevents IP addresses from being sent if true + testMode: false # prevents data from being sent if true + appVersion: ${RHDH_VERSION} # RHDH application version + backstageVersion: ${BACKSTAGE_VERSION} # Backstage version + # highlight-end + ``` + + ## Debugging and Testing + + In pre-production environments, you may wish to set additional configurations + to turn off reporting to Analytics. You can do so like this: + + ```yaml title="app-config.yaml" + app: + analytics: + segment: + # highlight-next-line + testMode: true # prevents data from being sent if true + ``` + + You might commonly set the above in an `app-config.local.yaml` file, which is + normally `gitignore`'d but loaded and merged in when Backstage is bootstrapped. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - backstage-community-plugin-analytics-provider-segment \ No newline at end of file diff --git a/catalog-entities/marketplace/plugins/argocd-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/argocd-scaffolder-actions.yaml new file mode 100644 index 0000000000..34d4e0c08d --- /dev/null +++ b/catalog-entities/marketplace/plugins/argocd-scaffolder-actions.yaml @@ -0,0 +1,69 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: roadiehq-scaffolder-backend-argocd + namespace: rhdh + title: Argo CD Software Template Actions + description: 'Adds argocd:create-resources action, that allows the task to call any of the Argo CD instance APIs available to the user that triggers it.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - argocd + - kubernetes + - cicd + - software-templates + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/RoadieHQ/roadie-backstage-plugins/tree/main/plugins/scaffolder-actions/scaffolder-backend-argocd +spec: + author: Roadie + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + categories: + - CI/CD + - Scaffolder + + highlights: + - Create Argo CD Resources + + description: | + The `argocd:create-resources` action allows the task to call any of the Argo CD instance APIs available to the user that triggers it. + + ## Example + + ```yaml + - id: create-argocd-resources + name: Create ArgoCD Resources + action: argocd:create-resources + input: + appName: ${{ parameters.name }}-nonprod + argoInstance: ${{ parameters.argoinstance }} + namespace: ${{ parameters.namespace }} + repoUrl: ${{ steps.publish.output.remoteUrl }} + labelValue: ${{ parameters.name }} + path: "kubernetes/nonprod" + ``` + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + packages: + - roadiehq-scaffolder-backend-argocd diff --git a/catalog-entities/marketplace/plugins/azure-container-registry.yaml b/catalog-entities/marketplace/plugins/azure-container-registry.yaml new file mode 100644 index 0000000000..eac4beddcd --- /dev/null +++ b/catalog-entities/marketplace/plugins/azure-container-registry.yaml @@ -0,0 +1,196 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: azure-container-registry + namespace: rhdh + title: Azure Container Registry + description: 'The Azure Container Registry (ACR) plugin displays information about your container images available in the Azure Container Registry.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/acr/plugins/acr + tags: + - azure + - container-registry +spec: + author: Red Hat + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - Container Image Registry + highlights: + - Display images from Azure Container Registry. + + description: | + The Azure Container Registry (ACR) plugin displays information about your container images available in the Azure Container Registry. + + ACR is a front-end plugin that enables you to view information about the container images from your Azure Container Registry in Backstage. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + + icon: data:image/svg+xml;base64, + PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9u + ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHhtbG5zOnhsaW5rPSJodHRw + Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMjZf + MTM1KSI+CiAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDFfMjZfMTM1KSI+CiAgICAgIDxjaXJj + bGUgY3g9IjQ4IiBjeT0iNDgiIHI9IjQ4IiBmaWxsPSIjMDA5NTk2IiAvPgogICAgPC9nPgogICAg + PHJlY3QgeD0iOSIgeT0iOSIgd2lkdGg9Ijc4IiBoZWlnaHQ9Ijc4IiBmaWxsPSJ1cmwoI3BhdHRl + cm4wKSIgLz4KICA8L2c+CiAgPGRlZnM+CiAgICA8cGF0dGVybiBpZD0icGF0dGVybjAiIHBhdHRl + cm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4K + ICAgICAgPHVzZSB4bGluazpocmVmPSIjaW1hZ2UwXzI2XzEzNSIgdHJhbnNmb3JtPSJzY2FsZSgw + LjAwMjc3Nzc4KSIgLz4KICAgIDwvcGF0dGVybj4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfMjZf + MTM1Ij4KICAgICAgPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiBmaWxsPSJ3aGl0ZSIgLz4K + ICAgIDwvY2xpcFBhdGg+CiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAxXzI2XzEzNSI+CiAgICAgIDxy + ZWN0IHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgZmlsbD0id2hpdGUiIC8+CiAgICA8L2NsaXBQYXRo + PgogICAgPGltYWdlIGlkPSJpbWFnZTBfMjZfMTM1IiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjM2MCIK + ICAgICAgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T + VWhFVWdBQUFXZ0FBQUZvQ0FZQUFBQjY1V0hWQUFBQUNYQklXWE1BQUc2NkFBQnV1Z0hXM3JFWEFB + QVVwa2xFUVZSNG5PM2RnWEhjT0pZR1lQSnFBM0FJZGdaV0JDZG5ZR1ZnUlhCV0JMWWowR1FnWFFS + eUJ0WkdZR2NnWldCbGdDdG8wWE85V2xraTJRVDdnZnkrcXFtYUduc2tFbUQvRFQ0Q1lBY0FBQUFB + QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB + QUFBQUFBQUFBQUFBQUFBQURCYzMzcGJwWlJPQXh4R2VIM2YzMjY5RGRiRWRUOU02OWQ5c3dHZFV2 + clVkZDJYcnV2ZUJqaWNGdHgzWFhmUjkvMzNyVGRFeTF6M296VjkzVGNaMENtbHE2N3JQZ1U0bEJa + ZDkzMS92dlZHYUpIci9pQk5YdmZOQlhSSzZXUFhkVGNCRHFWbDUzM2ZYMis5RVZyaXVwOUZjOWQ5 + aXdGOTUvYnVZUGQ5Mzc5ci9CdzJ4WFUvaSthdSsvOEtjQXlEbFFjakx0TER2ZldRcVIydSs5azBk + OTAzRmRCZDE3MEpjQXl3Tk5mOVJyVVcwQUNiMFZwQVB3UTRCbGlhNjM2ampLQzM2ZDdDbFhhVXZy + cmZlanRza1lEZXBvdXROMENEdm0yOUFiWklRRy9QdGRXRTdTbnpkODFkM3hnQnZSMzVGdm5NS3NK + MmxiNDdVKzdZam45czRFeno3Znl2QU1keFZHck82MUR1ZnI2YngvN29mZGQxbHdHT281b3RCUFF2 + NGNUYXVLWWZGL0FFT0lxNmxEZ0FnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrQURC + Q1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNHaUFvQVEwUWxJQUdDR29MKzBHekFTbWx2SG43bTNLbUQz + M2ZiLzRsRGJUUENKcW1wWlErcFpUdXVxNzcyWFhkai9MUHovemY4cC9wWFZvbW9HbFNmdVZUU2lt + SDhsWFhkVytmT1lmODM2N3kzL0Y2S0ZvbG9HbEtTdWx0U3VtbWpKVGZEemoyL0hkKzVQOG4vNzk2 + bTVZSWFKcVFVbnFUVXZwYVNoa2ZKeHp6eDFMNitKcC9sbDZuQlFLYThFb3RPUWZ6bDcwSGdWTzhL + VC9qcC9vMExSRFFoRlhxekQ5ZXFETlB0YXRQLzFDZkpqSUJUVGlsbkhGVjZzdzFBL1MwMUtldmxE + MklTRUFUU3FrejUybHpTNVlnOHUrNks3OGJ3aERRaEpCUytsam1NeDlhWjU3cXNUNWQ1azlQZVFn + SnN4UFFIRldaTnBkTEdUY3oxNW1ueXNkd1UrclRwdVZ4VkFLYW95aDE1c3RTem9qNG9PNjBsRDB1 + MWFjNUZnSE40bEpLbjBzd2YyNmc5VCtYb0c3aFdGa1pBYzFpeXJTNUhNeVhSNm96VDVXUDliTFVw + MDNMWXpFQ211cWVMTSt1V2RlOUxmL1U4dGF5Y1pZa29LbG1iM24yM2NUbDJVUGRkMTMzb2UvN3gz + L3l2NWYvVnN2SDNiUTg5V2xxRXRCVVVaWlM3NmJOMWZMUWRkMUYzL2Z2K3I3L2UrU2MvejMvdC94 + bjVlL1U4cVVFdFdYalZDR2dtZFdUYlVCcmppNy82cm91Qi9OZmYvb0w1Yy9lbGI5Ynl4dmJtbEtM + Z0dZV3BjNThOV0liMEtueVNQbWs3L3M4Y241MWRKei9UdjY3K2YrcFhKOSt2N2RzWEgyYVdRaG9E + dkprRzlDYXQvcTVwbnhXNnN5algyZVYvNTlTbno2clhKLytaRnRUNWlLZ21XekdiVUJma2tmSjMw + cWQrZnVoUHl6L2pGS2YvbGF4UG0xYlUyWWhvQmt0djZDMTBqYWdUMTJYY3Nic214aVZuM2xTZmtj + dCs5dWExaXo3c0ZJQ21zSDJ0Z0g5V1hsNTltMlpObmZlOTMyMWNrVCsyZmwzbEdsNU5ldlRwMlUw + YlZ0VFJoSFFETExRTnFBNWpNOUxuYmxtWVA2Yk1pMHZoL1Q1QXZWcDI1b3ltSURtUlh2THMydHZB + L3F0bEROcWxoeGVWSDczU1RtV1d2YTNOVFV0anhjSmFKNjF0dzFvN2VYWjM4dDg1cTlEcHMzVlZx + YmxmUzN6cHc5K0tQbUMzYkp4MjVyeVJ3S2FmN1BnTnFDL1NwMzVyR2FkZWFwU256NHI5ZW5SMC9w + R3NLMHBmeVNnK2R0QzI0QStsRHJ6eVpKMTVxbEtmZnFrMUtkcmp2QnRhOHAvRU5BOEtyTXphbThE + dWx1ZWZiUTY4MVRsbUpkWU5uNVorZ0lFTkkvaGZGbDVkc1p0Q2VaQnk3T2oybHMyL3E3eXRMeFBw + VS9ZT0FHOWNlVUJWYTNiNnYxdFFNUFZtYWNxOWVuYTI1cCs5dkFRQVUyTmtmT3oyNEN1elFMYm1s + b212bkVDbXYrZXVRV3VYOXNHZEczMnRqV2R1N1krZDkvUUdBSE5YSGJiZ0o2M1hHZWVxdFNuenhm + WTFwUU5FZEFjNnFCdFFOZG13VzFOMlFBQnpWUVBlOHV6YTY2NGExSnBrNVBLMjVxeWNnS2FLZjdl + Qm5TTDVZeWg5cGFOMTk3V2xKVVMwSXhXZXh2UXRkbmIxaFJHRWRBQVFRbG9nS0FFTkVCUUFob2dL + QUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1VnQVlJU2tBREJD + V2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0QUFRUWxvZ0tB + RU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNV + Z0FZSVNrQURCQ1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNtdEZTU20rMDJqamFqQ2tFTkZQY3BaUSth + YmxoU2x2ZHRYQ3N4Q0tnbVNLUEJxOVNTajlTU3FkYThIbTViWEliNWJZcWJRYWpDR2dPa2NNNWgz + UU82N2RhOGw5eVcrUTJ5VzFUMmdnbUVkRE1JZC9DLzB3cGZkMXlyVFdmZTI2RDNCYWxUZUFnQXBx + SG1Wb2dCL09YRXRRZnQ5YXE1WngvbGphWTYwdHFycjZoVVFLYWY4N2NBcm5VY1ZQcTArL1gzcnI1 + SEV1ZCthYWMrNXptN2hzYUk2QzVyalJTT3kyajZhczFsajFLT2VPcWpKcHIxSmtmU3Qrd1lRSjY0 + L3ErejBGd1ViRVZQcFZwZVYvWDB0TGxYTzRxMTVrdlN0K3dZUUthSE5KNXBIWmVzU1VlNjlNcHBi + dVdwK1dWYVhOM005ZVpuOHFoZkY3NmhJMFQwRHdxZ2ZDdTY3cnZGVnZrYlptVzk2T2xhWGxsMnR5 + UE1tMnU1bkhudGo4Unp1d0lhUDdXOS8xOTMvZG5YZGQ5NkxydVY4V1dPUzFsajh2STllbFNaNzRz + NVl5YUkvL2MxaDl5MitjK3FQaDdhSXlBNWovMGZYL2I5LzFKcVUzWHJJTitqcnBzZkc5NTl1ZUt2 + K2FoMUpyenFQbTI0dStoVVFLYVArcjcvcTlTOXZpcllpdnRsbzMvakZDZkxuWG1ud3NzejM1czI5 + TEc4Q3dCell2eVRJSys3eTlLVU5jYzViMHY5ZW1iWTlTblM1MzVwdFNaYTg3ZnZpM0JiSllHcnhM + UUc3QmJnbHhHcWZ0dWhvNWFTMzM2UTZsUDE2eVRmdHhOeTF1aVByMjNQUHV1L081YTdrdWQrY1BR + T25NWnpkODg2YlBOTDZrbnFITEJqclhweldyeUV1UXl2ZTBsbzBldEpTUitUK2lQTWFyV3AvUFBI + dEEyaC9vOWRnNzRialQveXUrOTIrS1MrbjN5SUJnZE10eHVDZkxJdGhvMU10dXRwcHZRSjJQTnVx + M3BiaHZRQlk1NzFDckt2VHVkTVRheHBQNDU4aUFZSGZLNkdVSno5S2gxNHBmQkZBZHRhN3JiQm5T + QjR4d2Rtak9NNWxlNXBQNGw4aUFZSGZLeW1jc09vMGV0QThzcGh4cGRNdWlXTGNtTUtqdk1QSnFm + MURhdGtnZkI2SkRuN1pZZ1QyaWJJVWFOV3ZkdTAwT0U0WkpmR2lQTEdUVkg4MDB2cVI5S0hnU2pR + LzdkYmdueWhEWVphK3FEcnFPVkV5S1hYUmI2QWt1dExha2ZTeDRFbzBQK1piY0VlVUpiSEdycUxm + elQ2WDAxWEpWMldlckI1ZWlGTlF1TjVwOFRla245VlBJZ0dCM3kyQWFmRnhwOXZXVHFRN0RheC8x + N29kOFI5U0hxYThkZGM5bjY0cmFRQnhhcU5HSnZDZkpsZ0RkRWo5Nk1mMiszdkc4VmordE41YmI1 + VmxZQkR0cHRib0ZOL2NmSTdYSVpaVWs5d3dqbzRCWmNnanpGYmpQK1FTT3pzbXo4NndMYm1zN3Rl + d25tcjBPWFo1YzJxYjJwL3hSSFhWTFBPQUk2cUFXWElCOXFOekliUEhQZ3liYW1rYmZYdkIrN0Rl + amVwdjRSN25SZXN1aVNlcVlSMEFHVkd1ZnVEZEd0R0wwWmY5blc5TjBDMjVxT3Rkc0c5TjNRYlVB + WDNOUi9icnMzc1lmYjhoVUJIY3B1MFVMWjZyTG1oN3ptcVBWMDdNaHNvVzFOaHhxMURlaVRPNTJh + dGQyYWZmYTJiUGs2NjVKNkRpZWdBOWpOR1M2anI1b2ZrTnZ5U3FVbFJxMWZ4bXpHditDMnBuOHll + aHZRdlUzOWE5N3AvRDJhejMxWHVXMU95MTNRUVV2cTJhZzFUcXM1NXFxN0JlZFRSNTR6SEhsdTk3 + UHpseU12cVYrU2FiZkJyS2xESWkxQlhuQkZZcVJ0VFd0dEF6cUhWK3Y0MFpiVUg0T0FEbVlOSFJK + OENYTFVmU3ZtWGgwNGRSdlFpSnN0aGQyaHJ6WUJIVXpMSFJKNUNmSXp4eHB5TS80WnZ0eU9zUTNv + RUFlWEU1WmVVbi9Jc2M1RlFBZlRhb2NzdER4NzlCTGtWNDQ1N0diOEUwSnp5cGRCeUUzOUI3Yk5F + dGZhMFplTkMraGdXdXVReXR1QTdxdTIyR0Roa3N6Y1pZY0k1WlEvcVZZeW1QaG1saW1PdXEycGdB + Nm1sUTZKL05EdGdIT0svUDYrcXlkQi9UdndOcUJWMzdQNDVIekNQTlNzZEg0Q09wTG9IYkwya2N0 + YVp3NUVmVGc2NC9rMWZ5ZjN3bm1OSmFCcmlkd2hHNnY5TFRreXF6WnpZTUh5VFlpTmlWcDhGdkxL + K1Fqb1NDSjJ5TEVYTFJ4VHErY2VlWUZPYldzNmR3RWRUS1FPV1h0OWI0eVc3aDdXTm9xY2FnM1BT + UVIwTUJFNnhBcXU1MFd2djYrMURudW9sdXZ2QWpxWVkzZElxVmx1ZmcrRWx5dzRNcnNhY1V4TFRa + dHJkb09oQlFjZHN6MVRFTkRCSExORFN2RFV2b0REck5JNjFFSWoxbGREZW9Gd1B1cGM0RGt0TkFm + ODkxeGZaTjVKeUw2cmltL0kyRzBEZWo1MHE4dm9GdHFNLzlOTEg3anlaN1Zxd2FNMzlZK3ViUGw2 + WG5sYjB6ZmxzOFFBQW5xQThvMWY0NXMzYjhLZVF6bS9WdWxYaFo5L2RBdHN4djgvRS8vc0VLTTI5 + VzlOdmhiek5abXZ6VW92Q2ppMTMvUXdBbnFZdWVmaVBwUTNSSjhNZlVOMHkvWTI0Njh4TW52cFFl + cmNEMWwzZHpxRE4vVnZXYmsyVDhxMU92ZjVSbnNCY2tnQ2VwZzVMNmJ2NVVNKytBM1JhN0UzTWpz + TC9yTFlwL0t4bnEzNVR1ZFA5dDdFZmpMem05Z0Y5QUFDZWptL3hyNGhlcTM2dnY5ZTZ0TTFSbVp6 + ZXJ6VEtYWG1PY09wT1UvZXhMNnBMNmxqRXREMVBaUTY4OGxhSGliTlpXOWtGckhNYzcyNzB3bHdM + R0dVaDc4bnBUNjlxVHZBWXhEUWRYMHJENU5XWDJlZXFvek16c3ZJTE1JWDJHMjUwem5mK3AzT1M4 + bzF2YnNMb3BKL2FOaHF6clorV3p4R3VidTR6WHM0SExFK3VhdVJNMEI1aHBJWHVPU1N4NDAybTU4 + UmREMXUvNlk1WnJ2cHMybTBXeVVDR2lBb0FRMFFsSUFHQ0VwQUF3UWxvQUdDRXRBQVFRbG9nS0FF + TkVCUUFob2dLQUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1Vn + QVlJU2tBREJDV2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0 + QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJ + YUlDZ0JEUkNVZ0FZSVNrRFhjNWxTT2wzcnlkV1FVdnJhZGQzN0l4N0MrM0lNREZTdThVdnRWWWVB + cmljSHpZK1UwbFZLNmUxYVQzSU9LYVdQS2FXN3J1dStkRjMzNW9pSGtuLzNsM3dzK1ppT2VCemg1 + V3M2WDl2NUdqL3lsK3FxQ2VqNlBuVmQ5ek9QekZKS3h3eWZjRkpLZWNTYVArQTNYZGRGK2hMTHgz + S1RqeTBmWTREakNTTmZ3K1V1NDJlNXRxbElRQy9qVFJrZDVxRGUvRVZkUHVTWDVVTWV1UXgwV3Zy + czBwZnJZNzk5S24xMjdEdWR6UkRRd3p6TTlIUHl5T3hxeXlPemxOTG5ydXR5T2VOemdNTVo2dkdZ + eTdGdnp0NmR6dFdNZHpwemZhWldUVUFQY3p2eno5dU56SzYyTWpMTEQ1TktuZmx5NXRIWHI0bC9O + dGFiOHVEM2Jpc1BmOHVkemxXbE81MjVQMU9ySktBSDZQcytmOUR2Sy96b1QyVmt0dHFaQStWaDBv + L3lNS2xHbmZsL0ovN1pWRy9Mdzk4ZmEzNzRXNjdKdTBwMTV2dnltZUlWQW5xNGkwby9kNVV6Qi9Z + ZUp0MVZyRFBuRC9uMUMzOSsvY29JK3hDbnV5L1hOZDBGTFRTanB0Wm5pV01xdDhsanpSWU8rU0hK + aE44L1Z2TWpzOUpPdnl1MzA5MlFPbjZwbjk1VlBwYmZyVC84M2QzcFZHNm5OR2M3SFRzUENOZ2g1 + UmgrVGppT3NacWJPUkMxYlhhelJoWTRycCt0QlVETGJTT2dnNG5VSVF1TkVuKzNNSE5ndDJpaGNs + dWtRMmUvN0dZakxIQ2NUU3hPeXRmV1F0ZHdsYnNMQVIxTXRBN1orc2hzVjJkZXFKd3hXMzErVjJl + dGZNeS9vOWFuMTNJWEtLQ0RpZG9oQzlidmJxS016TW9keENJaFYvRWNsdnB5Q1ZHZkx0ZnBUZVh6 + VFVzOVJ4SFF3VVR2a04xYzN3bkhPTmJSUm1ZTGx3bXFuK051cnU4QzUzTzB4VWw3ZHpxMUxUcEhY + RUFIMDBxSHRGN2IrOE01TFJsa3graXowelY5OGV5ZDEycWZsUWpvWUZycWtEVUYycFpLQVdzbzNY + UXIvc0o1NWh6SEV0QzF0TmdoTGM4YzJPckR0RllmZm5ZTnphaVo2VndGZENRdGQwaExZYmZGaDU3 + UGFlbWhXc3RmS2xNSjZHRFcwQ0dSUDBSYm56YjRKOUducFMzNTViOVlvdzhnb0lOWlM0ZEV2QTFk + NDRQTnVVVjc0TGIxaFRjQ09waTFkVWlFQnprTFRnMWN4YWIzQzk1bC9ISEsydHBuMUF3bG9JTlph + NGNzT0RMN3V2YzdWN1ZvWVduSHF0TXZWQ0pyNGs1SFFBZXo1ZzVaZURIQlVVZUFhN0x3SGNpcUYw + R05KYUNEMlVLSExEaXlyYVdKRFo3bXRsQU52NmJRTTJxZXM0VThzR0YvTUgzZjU3ZE5uSFZkOTZI + aVp2TzE1QTN5My9WOS8xZUxiWCtJY3M3dlhubUJRRVQ1R3Z1UXI3bDg3VFYyN0tzbm9JUHErLzYy + Ny91VDh2YUo2Qy9Zek8rWE8rbjcvcnp2KzgyK0REU2ZlMjZEM0JZTnZITXY5OU5GdnNieXRSYmdl + SGlHZ0E1dWIyUVdjVlNhUjF4NTVQWEJPK2IrWDI2TDNDYTViU3E5eS9KUWYyMzFUcWMxQXJvQlpX + UjJVWUk2d21nbmo3Nis5WDJmUCtUZkF4eFBTTGx0Y2h2bHRncHlGM1JiZ3ZsaXkzYzZMUkhRRFNu + MTZRK2xQbjJza2RsMUtXZXM5azNrY3l0dGRYTEUrdlI5cVROL1VHZHVpNEJ1VUtsUEx6MHl1eTBm + OG5NZjh2SEtsK3Q1K1hKZDZpNW8vMDVIblptNnpIdjhUd3VzS2d2elJwQTFXV0JiMDZOdEE3b1Uw + K3dJci9MTWdXK2xuTkhhMUxId1NwdWVsRGFla3hrMUhJY1I5T3RtMnRtc3VVVUxMWnRwY1ZLWWJV + Q1hZZ1JOYzhxc2lwT0o5V21MRm83Z3dNVkpEM3QzT21iVWNEeEcwT09NMk5aMGs4dXpveHF4YkR6 + a05xQkxrUWZCNkpCcFh0alc5UGRhdGdGZG03MXRUWjhMNnREYmdDNWxDM253andESFFHVmxpdFZ0 + R1czdGo3aCtlWkFVVSttWGk1UlNMbC9zdjNUaFh2bHBPd1QwaHBRUHRnOTNRMHBRbThPOFVSNFNB + Z1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJ + Q2dCRFJBVUFJYUlDZ0JEUkRVRnZhRGZwOVNDbkFZeDFVMjdXY2x2RkhsMGZzQmY2ZHBXd2pveXdE + SGNIUXBwYnhSLzRVWGk3WXRwZlNwNjdvdlQ5Nk13MG9wY1d4SC9rRG5WL3RmYmIwaFdsWDY3a280 + YjRlQTNwNVBaUlJHUTFKS0gzUGY2Yk50RWREYjlHWHJEZEFncGJvTkV0RGI5TlpEcG5hVXZsTFcy + Q0FCRGZHOTBVZmJKS0FCZ2hMUUVOK0RQdHFtdnJXelRpbmRxY2NkN0w3diszZU5uOE9tdU81bjBk + eDEzK0lJK2x1QVkyamR4ZFlib0VHdSs4TTFkOTAzRjlCOTMxOTNYWGNkNEZCYWRXMDFZWHRjOXdk + cjhycHZzZ2JkOS8xNTEzVm4rWllsd09HMElyZlZXV2s3R3VTNm42VHA2NzY1R3ZSVDV2TU9ZN09r + ZFhIZEQrTzZCd0FBQUFBQUFBQUFBQUFBWVBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB + QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOaU1ydXYrRC9XWnUyRmNZZmExQUFBQUFF + bEZUa1N1UW1DQyIgLz4KICA8L2RlZnM+Cjwvc3ZnPg== + + + packages: + - backstage-community-plugin-acr diff --git a/catalog-entities/marketplace/plugins/azure-devops.yaml b/catalog-entities/marketplace/plugins/azure-devops.yaml new file mode 100644 index 0000000000..947a8f9c5d --- /dev/null +++ b/catalog-entities/marketplace/plugins/azure-devops.yaml @@ -0,0 +1,65 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: azure-devops + namespace: rhdh + title: Azure DevOps + description: | + Azure DevOps is a set of services provided by Microsoft for teams to plan, build, and ship software. + This plugin provides a set of components to interact with Azure DevOps services. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/azure-devops/plugins/azure-devops + tags: + - azure + - devops + +spec: + author: Backstage Community + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - DevOps + + highlights: + - List builds for a given Azure Repo + - List Active, Completed, or Abandoned PRs + - List Git tags + - Show repository Readme + + description: | + Azure DevOps is a set of services provided by Microsoft for teams to plan, build, and ship software. + This plugin provides a set of components to interact with Azure DevOps services. + + - **Azure Pipelines**: Lists the top _n_ builds for a given Azure Repo where _n_ is a configurable value + - **Azure Repos**: Lists the top _n_ Active, Completed, or Abandoned Pull Requests for a given repository where _n_ is a configurable value + - **Azure Repos Git Tags**: Lists all Git Tags for a given repository + - **Azure Readme**: Readme for a given repository + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + packages: + - backstage-community-plugin-azure-devops + - backstage-community-plugin-azure-devops-backend diff --git a/catalog-entities/marketplace/plugins/azure-repositories.yaml b/catalog-entities/marketplace/plugins/azure-repositories.yaml new file mode 100644 index 0000000000..312e87e7a1 --- /dev/null +++ b/catalog-entities/marketplace/plugins/azure-repositories.yaml @@ -0,0 +1,167 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: azure-repositories + namespace: rhdh + title: Azure Repository Software Template Actions + description: A collection of Backstage scaffolder backend modules for Azure repositories. azure:repo:clone, azure:repo:push, azure:repo:pr + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + github.com/project-slug: Parfuemerie-Douglas/scaffolder-backend-module-azure-repositories + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/Parfuemerie-Douglas/scaffolder-backend-module-azure-repositories + tags: + - microsoft + - azure + - cloud + - automation + - software-templates +spec: + author: Parfümerie Douglas + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - Scaffolder + + highlights: + - Azure cloud integration + - Software Template actions + + description: | + This plugin contains a collection of actions: + + - `azure:repo:clone` + - `azure:repo:push` + - `azure:repo:pr` + + + ## Using the template + + After loading and configuring the Azure repository template actions, you can use + the actions in your template: + + ```yaml + # template.yaml + + 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: parfuemerie-douglas + type: service + + parameters: + - title: Fill in some steps + required: + - name + - owner + properties: + name: + title: Project name + type: string + description: Choose a unique project name. + ui:field: EntityNamePicker + ui:autofocus: true + owner: + title: Owner + type: string + description: Select an owner for the Backstage component. + ui:field: OwnerPicker + ui:options: + allowedKinds: + - Group + + steps: + - id: cloneAzureRepo + name: Clone Azure Repo + action: azure:repo:clone + input: + remoteUrl: "https://@dev.azure.com///_git/" + branch: "main" + targetPath: ./sub-directory + + - id: fetch + name: Template Skeleton + action: fetch:template + input: + url: ./skeleton + targetPath: ./sub-directory + values: + name: ${{ parameters.name }} + owner: ${{ parameters.owner }} + + - id: pushAzureRepo + name: Push to Remote Azure Repo + action: azure:repo:push + input: + branch: + 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: + targetBranch: "main" + repoId: + title: ${{ parameters.name }} + project: + organization: + supportsIterations: false + + - id: register + name: Register + action: catalog:register + input: + repoContentsUrl: "dev.azure.com?owner=&repo=&organization=&version=" + catalogInfoPath: "/catalog-info.yaml" + + output: + links: + - title: Repository + url: "dev.azure.com?owner=&repo=&organization=" + - title: Open in catalog + icon: catalog + entityRef: ${{ steps.register.output.entityRef }} + ``` + + Replace `` with the name of your Azure DevOps + organization, `` with the name of your Azure DevOps project, + `` with the name of your Azure DevOps repository. + + NOTE: You will not be able to register the Pull Request since the file will not exist from the main branch! + + You can find a list of all registered actions including their parameters at the + `/create/actions` route in your Backstage application. + + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + packages: + - parfuemerie-douglas-scaffolder-backend-module-azure-repositorie diff --git a/catalog-entities/marketplace/plugins/azure-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/azure-scaffolder-actions.yaml new file mode 100644 index 0000000000..57ff952a4d --- /dev/null +++ b/catalog-entities/marketplace/plugins/azure-scaffolder-actions.yaml @@ -0,0 +1,51 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: azure-scaffolder-actions + namespace: rhdh + title: Azure Software Template Actions + description: ' Adds `publish:azure` that initializes a git repository of the content in the workspace, and publishes it to Azure.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - azure + - scaffolder + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-azure +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + description: | + Adds `publish:azure` that initializes a git repository of the content in the workspace, and publishes it to Azure. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + categories: + - Scaffolder + + highlights: + - Extends Software Templates + + packages: + - backstage-plugin-scaffolder-backend-module-azure diff --git a/catalog-entities/marketplace/plugins/backstage-community-plugin-quay.yaml b/catalog-entities/marketplace/plugins/backstage-community-plugin-quay.yaml new file mode 100644 index 0000000000..09e6aeb7ee --- /dev/null +++ b/catalog-entities/marketplace/plugins/backstage-community-plugin-quay.yaml @@ -0,0 +1,66 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: backstage-community-plugin-quay + namespace: rhdh + title: Container Image Registry for Quay + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat # For verified plugins + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - cicd # Used for filtering + description: | + Quay allows you to integrate Backstage with your container registry to provide information + about the containers associated with the compenents in your software catalog. +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Container Image Registry # One category will show up on the tile view + + highlights: + - Display information about the container images. + + description: | + The Quay plugin displays the information about your Quay registry container images in your software catalog component entity page. from + there you can see the details of your images and quickly link out to Quay if you need to delve further into the registry. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + # Images are base 64 encoded SVGs (below is a blank square from the mockup) + icon: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfM184MCkiPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzNfODApIj4KICAgICAgPGNpcmNsZSBjeD0iNDgiIGN5PSI0OCIgcj0iNDgiIGZpbGw9IiMwMDk1OTYiIC8+CiAgICA8L2c+CiAgICA8cmVjdCB4PSI5IiB5PSI5IiB3aWR0aD0iNzgiIGhlaWdodD0iNzgiIGZpbGw9InVybCgjcGF0dGVybjApIiAvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxwYXR0ZXJuIGlkPSJwYXR0ZXJuMCIgcGF0dGVybkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNpbWFnZTBfM184MCIgdHJhbnNmb3JtPSJzY2FsZSgwLjAwMjc3Nzc4KSIgLz4KICAgIDwvcGF0dGVybj4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfM184MCI+CiAgICAgIDxyZWN0IHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgZmlsbD0id2hpdGUiIC8+CiAgICA8L2NsaXBQYXRoPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMV8zXzgwIj4KICAgICAgPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiBmaWxsPSJ3aGl0ZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8aW1hZ2UgaWQ9ImltYWdlMF8zXzgwIiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjM2MCIKICAgICAgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFXZ0FBQUZvQ0FZQUFBQjY1V0hWQUFBQUNYQklXWE1BQUc2NkFBQnV1Z0hXM3JFWEFBQVVwa2xFUVZSNG5PM2RnWEhjT0pZR1lQSnFBM0FJZGdaV0JDZG5ZR1ZnUlhCV0JMWWowR1FnWFFSeUJ0WkdZR2NnWldCbGdDdG8wWE85V2xraTJRVDdnZnkrcXFtYUduc2tFbUQvRFQ0Q1lBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURCYzMzcGJwWlJPQXh4R2VIM2YzMjY5RGRiRWRUOU02OWQ5c3dHZFV2clVkZDJYcnV2ZUJqaWNGdHgzWFhmUjkvMzNyVGRFeTF6M296VjkzVGNaMENtbHE2N3JQZ1U0bEJaZDkzMS92dlZHYUpIci9pQk5YdmZOQlhSSzZXUFhkVGNCRHFWbDUzM2ZYMis5RVZyaXVwOUZjOWQ5aXdGOTUvYnVZUGQ5Mzc5ci9CdzJ4WFUvaSthdSsvOEtjQXlEbFFjakx0TER2ZldRcVIydSs5azBkOTAzRmRCZDE3MEpjQXl3Tk5mOVJyVVcwQUNiMFZwQVB3UTRCbGlhNjM2ampLQzM2ZDdDbFhhVXZycmZlanRza1lEZXBvdXROMENEdm0yOUFiWklRRy9QdGRXRTdTbnpkODFkM3hnQnZSMzVGdm5NS3NKMmxiNDdVKzdZam45czRFeno3Znl2QU1keFZHck82MUR1ZnI2YngvN29mZGQxbHdHT281b3RCUFF2NGNUYXVLWWZGL0FFT0lxNmxEZ0FnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrQURCQ1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNHaUFvQVEwUWxJQUdDR29MKzBHekFTbWx2SG43bTNLbUQzM2ZiLzRsRGJUUENKcW1wWlErcFpUdXVxNzcyWFhkai9MUHovemY4cC9wWFZvbW9HbFNmdVZUU2ltSDhsWFhkVytmT1lmODM2N3kzL0Y2S0ZvbG9HbEtTdWx0U3VtbWpKVGZEemoyL0hkKzVQOG4vNzk2bTVZSWFKcVFVbnFUVXZwYVNoa2ZKeHp6eDFMNitKcC9sbDZuQlFLYThFb3RPUWZ6bDcwSGdWTzhLVC9qcC9vMExSRFFoRlhxekQ5ZXFETlB0YXRQLzFDZkpqSUJUVGlsbkhGVjZzdzFBL1MwMUtldmxEMklTRUFUU3FrejUybHpTNVlnOHUrNks3OGJ3aERRaEpCUytsam1NeDlhWjU3cXNUNWQ1azlQZVFnSnN4UFFIRldaTnBkTEdUY3oxNW1ueXNkd1UrclRwdVZ4VkFLYW95aDE1c3RTem9qNG9PNjBsRDB1MWFjNUZnSE40bEpLbjBzd2YyNmc5VCtYb0c3aFdGa1pBYzFpeXJTNUhNeVhSNm96VDVXUDliTFVwMDNMWXpFQ211cWVMTSt1V2RlOUxmL1U4dGF5Y1pZa29LbG1iM24yM2NUbDJVUGRkMTMzb2UvN3gzL3l2NWYvVnN2SDNiUTg5V2xxRXRCVVVaWlM3NmJOMWZMUWRkMUYzL2Z2K3I3L2UrU2MvejMvdC94bjVlL1U4cVVFdFdYalZDR2dtZFdUYlVCcmppNy82cm91Qi9OZmYvb0w1Yy9lbGI5Ynl4dmJtbEtMZ0dZV3BjNThOV0liMEtueVNQbWs3L3M4Y241MWRKei9UdjY3K2YrcFhKOSt2N2RzWEgyYVdRaG9EdkprRzlDYXQvcTVwbnhXNnN5algyZVYvNTlTbno2clhKLytaRnRUNWlLZ21XekdiVUJma2tmSjMwcWQrZnVoUHl6L2pGS2YvbGF4UG0xYlUyWWhvQmt0djZDMTBqYWdUMTJYY3Nic214aVZuM2xTZmtjdCs5dWExaXo3c0ZJQ21zSDJ0Z0g5V1hsNTltMlpObmZlOTMyMWNrVCsyZmwzbEdsNU5ldlRwMlUwYlZ0VFJoSFFETExRTnFBNWpNOUxuYmxtWVA2Yk1pMHZoL1Q1QXZWcDI1b3ltSURtUlh2THMydHZBL3F0bEROcWxoeGVWSDczU1RtV1d2YTNOVFV0anhjSmFKNjF0dzFvN2VYWjM4dDg1cTlEcHMzVlZxYmxmUzN6cHc5K0tQbUMzYkp4MjVyeVJ3S2FmN1BnTnFDL1NwMzVyR2FkZWFwU256NHI5ZW5SMC9wR3NLMHBmeVNnK2R0QzI0QStsRHJ6eVpKMTVxbEtmZnFrMUtkcmp2QnRhOHAvRU5BOEtyTXphbThEdWx1ZWZiUTY4MVRsbUpkWU5uNVorZ0lFTkkvaGZGbDVkc1p0Q2VaQnk3T2oybHMyL3E3eXRMeFBwVS9ZT0FHOWNlVUJWYTNiNnYxdFFNUFZtYWNxOWVuYTI1cCs5dkFRQVUyTmtmT3oyNEN1elFMYm1sb212bkVDbXYrZXVRV3VYOXNHZEczMnRqV2R1N1krZDkvUUdBSE5YSGJiZ0o2M1hHZWVxdFNuenhmWTFwUU5FZEFjNnFCdFFOZG13VzFOMlFBQnpWUVBlOHV6YTY2NGExSnBrNVBLMjVxeWNnS2FLZjdlQm5TTDVZeWg5cGFOMTk3V2xKVVMwSXhXZXh2UXRkbmIxaFJHRWRBQVFRbG9nS0FFTkVCUUFob2dLQUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1VnQVlJU2tBREJDV2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrQURCQ1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNtdEZTU20rMDJqamFqQ2tFTkZQY3BaUSthYmxoU2x2ZHRYQ3N4Q0tnbVNLUEJxOVNTajlTU3FkYThIbTViWEliNWJZcWJRYWpDR2dPa2NNNWgzUU82N2RhOGw5eVcrUTJ5VzFUMmdnbUVkRE1JZC9DLzB3cGZkMXlyVFdmZTI2RDNCYWxUZUFnQXBxSG1Wb2dCL09YRXRRZnQ5YXE1WngvbGphWTYwdHFycjZoVVFLYWY4N2NBcm5VY1ZQcTArL1gzcnI1SEV1ZCthYWMrNXptN2hzYUk2QzVyalJTT3kyajZhczFsajFLT2VPcWpKcHIxSmtmU3Qrd1lRSjY0L3ErejBGd1ViRVZQcFZwZVYvWDB0TGxYTzRxMTVrdlN0K3dZUUthSE5KNXBIWmVzU1VlNjlNcHBidVdwK1dWYVhOM005ZVpuOHFoZkY3NmhJMFQwRHdxZ2ZDdTY3cnZGVnZrYlptVzk2T2xhWGxsMnR5UE1tMnU1bkhudGo4Unp1d0lhUDdXOS8xOTMvZG5YZGQ5NkxydVY4V1dPUzFsajh2STllbFNaNzRzNVl5YUkvL2MxaDl5MitjK3FQaDdhSXlBNWovMGZYL2I5LzFKcVUzWHJJTitqcnBzZkc5NTl1ZUt2K2FoMUpyenFQbTI0dStoVVFLYVArcjcvcTlTOXZpcllpdnRsbzMvakZDZkxuWG1ud3NzejM1czI5TEc4Q3dCell2eVRJSys3eTlLVU5jYzViMHY5ZW1iWTlTblM1MzVwdFNaYTg3ZnZpM0JiSllHcnhMUUc3QmJnbHhHcWZ0dWhvNWFTMzM2UTZsUDE2eVRmdHhOeTF1aVByMjNQUHV1L081YTdrdWQrY1BRT25NWnpkODg2YlBOTDZrbnFITEJqclhweldyeUV1UXl2ZTBsbzBldEpTUitUK2lQTWFyV3AvUFBIdEEyaC9vOWRnNzRialQveXUrOTIrS1MrbjN5SUJnZE10eHVDZkxJdGhvMU10dXRwcHZRSjJQTnVxM3BiaHZRQlk1NzFDckt2VHVkTVRheHBQNDU4aUFZSGZLNkdVSno5S2gxNHBmQkZBZHRhN3JiQm5TQjR4d2Rtak9NNWxlNXBQNGw4aUFZSGZLeW1jc09vMGV0QThzcGh4cGRNdWlXTGNtTUtqdk1QSnFmMURhdGtnZkI2SkRuN1pZZ1QyaWJJVWFOV3ZkdTAwT0U0WkpmR2lQTEdUVkg4MDB2cVI5S0hnU2pRLzdkYmdueWhEWVphK3FEcnFPVkV5S1hYUmI2QWt1dExha2ZTeDRFbzBQK1piY0VlVUpiSEdycUxmelQ2WDAxWEpWMldlckI1ZWlGTlF1TjVwOFRla245VlBJZ0dCM3kyQWFmRnhwOXZXVHFRN0RheC8xN29kOFI5U0hxYThkZGM5bjY0cmFRQnhhcU5HSnZDZkpsZ0RkRWo5Nk1mMiszdkc4VmordE41YmI1VmxZQkR0cHRib0ZOL2NmSTdYSVpaVWs5d3dqbzRCWmNnanpGYmpQK1FTT3pzbXo4NndMYm1zN3Rld25tcjBPWFo1YzJxYjJwL3hSSFhWTFBPQUk2cUFXWElCOXFOekliUEhQZ3liYW1rYmZYdkIrN0RlamVwdjRSN25SZXN1aVNlcVlSMEFHVkd1ZnVEZEd0R0wwWmY5blc5TjBDMjVxT3Rkc0c5TjNRYlVBWDNOUi9icnMzc1lmYjhoVUJIY3B1MFVMWjZyTG1oN3ptcVBWMDdNaHNvVzFOaHhxMURlaVRPNTJhdGQyYWZmYTJiUGs2NjVKNkRpZWdBOWpOR1M2anI1b2ZrTnZ5U3FVbFJxMWZ4bXpHditDMnBuOHllaHZRdlUzOWE5N3AvRDJhejMxWHVXMU95MTNRUVV2cTJhZzFUcXM1NXFxN0JlZFRSNTR6SEhsdTk3UHpseU12cVYrU2FiZkJyS2xESWkxQlhuQkZZcVJ0VFd0dEF6cUhWK3Y0MFpiVUg0T0FEbVlOSFJKOENYTFVmU3ZtWGgwNGRSdlFpSnN0aGQyaHJ6WUJIVXpMSFJKNUNmSXp4eHB5TS80WnZ0eU9zUTNvRUFlWEU1WmVVbi9Jc2M1RlFBZlRhb2NzdER4NzlCTGtWNDQ1N0diOEUwSnp5cGRCeUUzOUI3Yk5FdGZhMFplTkMraGdXdXVReXR1QTdxdTIyR0Roa3N6Y1pZY0k1WlEvcVZZeW1QaG1saW1PdXEycGdBNm1sUTZKL05EdGdIT0svUDYrcXlkQi9UdndOcUJWMzdQNDVIekNQTlNzZEg0Q09wTG9IYkwya2N0YVp3NUVmVGc2NC9rMWZ5ZjN3bm1OSmFCcmlkd2hHNnY5TFRreXF6WnpZTUh5VFlpTmlWcDhGdkxLK1Fqb1NDSjJ5TEVYTFJ4VHErY2VlWUZPYldzNmR3RWRUS1FPV1h0OWI0eVc3aDdXTm9xY2FnM1BTUVIwTUJFNnhBcXU1MFd2djYrMURudW9sdXZ2QWpxWVkzZElxVmx1ZmcrRWx5dzRNcnNhY1V4TFRadHJkb09oQlFjZHN6MVRFTkRCSExORFN2RFV2b0REck5JNjFFSWoxbGREZW9Gd1B1cGM0RGt0TkFmODkxeGZaTjVKeUw2cmltL0kyRzBEZWo1MHE4dm9GdHFNLzlOTEg3anlaN1Zxd2FNMzlZK3ViUGw2WG5sYjB6ZmxzOFFBQW5xQThvMWY0NXMzYjhLZVF6bS9WdWxYaFo5L2RBdHN4djgvRS8vc0VLTTI5VzlOdmhiek5abXZ6VW92Q2ppMTMvUXdBbnFZdWVmaVBwUTNSSjhNZlVOMHkvWTI0Njh4TW52cFFlcmNEMWwzZHpxRE4vVnZXYmsyVDhxMU92ZjVSbnNCY2tnQ2VwZzVMNmJ2NVVNKytBM1JhN0UzTWpzTC9yTFlwL0t4bnEzNVR1ZFA5dDdFZmpMem05Z0Y5QUFDZWptL3hyNGhlcTM2dnY5ZTZ0TTFSbVp6ZXJ6VEtYWG1PY09wT1UvZXhMNnBMNmxqRXREMVBaUTY4OGxhSGliTlpXOWtGckhNYzcyNzB3bHdMR0dVaDc4bnBUNjlxVHZBWXhEUWRYMHJENU5XWDJlZXFvek16c3ZJTE1JWDJHMjUwem5mK3AzT1M4bzF2YnNMb3BKL2FOaHF6clorV3p4R3VidTR6WHM0SExFK3VhdVJNMEI1aHBJWHVPU1N4NDAybTU4UmREMXUvNlk1WnJ2cHMybTBXeVVDR2lBb0FRMFFsSUFHQ0VwQUF3UWxvQUdDRXRBQVFRbG9nS0FFTkVCUUFob2dLQUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1VnQVlJU2tBREJDV2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrRFhjNWxTT2wzcnlkV1FVdnJhZGQzN0l4N0MrM0lNREZTdThVdnRWWWVBcmljSHpZK1UwbFZLNmUxYVQzSU9LYVdQS2FXN3J1dStkRjMzNW9pSGtuLzNsM3dzK1ppT2VCemg1V3M2WDl2NUdqL3lsK3FxQ2VqNlBuVmQ5ek9QekZKS3h3eWZjRkpLZWNTYVArQTNYZGRGK2hMTHgzS1RqeTBmWTREakNTTmZ3K1V1NDJlNXRxbElRQy9qVFJrZDVxRGUvRVZkUHVTWDVVTWV1UXgwV3ZyczBwZnJZNzk5S24xMjdEdWR6UkRRd3p6TTlIUHl5T3hxeXlPemxOTG5ydXR5T2VOemdNTVo2dkdZeTdGdnp0NmR6dFdNZHpwemZhWldUVUFQY3p2eno5dU56SzYyTWpMTEQ1TktuZmx5NXRIWHI0bC9OdGFiOHVEM2Jpc1BmOHVkemxXbE81MjVQMU9ySktBSDZQcytmOUR2Sy96b1QyVmt0dHFaQStWaDBvL3lNS2xHbmZsL0ovN1pWRy9Mdzk4ZmEzNzRXNjdKdTBwMTV2dnltZUlWQW5xNGkwby9kNVV6Qi9ZZUp0MVZyRFBuRC9uMUMzOSsvY29JK3hDbnV5L1hOZDBGTFRTanB0Wm5pV01xdDhsanpSWU8rU0hKaE44L1Z2TWpzOUpPdnl1MzA5MlFPbjZwbjk1VlBwYmZyVC84M2QzcFZHNm5OR2M3SFRzUENOZ2g1UmgrVGppT3NacWJPUkMxYlhhelJoWTRycCt0QlVETGJTT2dnNG5VSVF1TkVuKzNNSE5ndDJpaGNsdWtRMmUvN0dZakxIQ2NUU3hPeXRmV1F0ZHdsYnNMQVIxTXRBN1orc2hzVjJkZXFKd3hXMzErVjJldGZNeS9vOWFuMTNJWEtLQ0RpZG9oQzlidmJxS016TW9keENJaFYvRWNsdnB5Q1ZHZkx0ZnBUZVh6VFVzOVJ4SFF3VVR2a04xYzN3bkhPTmJSUm1ZTGx3bXFuK051cnU4QzUzTzB4VWw3ZHpxMUxUcEhYRUFIMDBxSHRGN2IrOE01TFJsa3graXowelY5OGV5ZDEycWZsUWpvWUZycWtEVUYycFpLQVdzbzNYUXIvc0o1NWh6SEV0QzF0TmdoTGM4YzJPckR0RllmZm5ZTnphaVo2VndGZENRdGQwaExZYmZGaDU3UGFlbWhXc3RmS2xNSjZHRFcwQ0dSUDBSYm56YjRKOUducFMzNTViOVlvdzhnb0lOWlM0ZEV2QTFkNDRQTnVVVjc0TGIxaFRjQ09waTFkVWlFQnprTFRnMWN4YWIzQzk1bC9ISEsydHBuMUF3bG9JTlphNGNzT0RMN3V2YzdWN1ZvWVduSHF0TXZWQ0pyNGs1SFFBZXo1ZzVaZURIQlVVZUFhN0x3SGNpcUYwR05KYUNEMlVLSExEaXlyYVdKRFo3bXRsQU52NmJRTTJxZXM0VThzR0YvTUgzZjU3ZE5uSFZkOTZIaVp2TzE1QTN5My9WOS8xZUxiWCtJY3M3dlhubUJRRVQ1R3Z1UXI3bDg3VFYyN0tzbm9JUHErLzYyNy91VDh2YUo2Qy9Zek8rWE8rbjcvcnp2KzgyK0REU2ZlMjZEM0JZTnZITXY5OU5GdnNieXRSYmdlSGlHZ0E1dWIyUVdjVlNhUjF4NTVQWEJPK2IrWDI2TDNDYTViU3E5eS9KUWYyMzFUcWMxQXJvQlpXUjJVWUk2d21nbmo3Nis5WDJmUCtUZkF4eFBTTGx0Y2h2bHRncHlGM1JiZ3ZsaXkzYzZMUkhRRFNuMTZRK2xQbjJza2RsMUtXZXM5azNrY3l0dGRYTEUrdlI5cVROL1VHZHVpNEJ1VUtsUEx6MHl1eTBmOG5NZjh2SEtsK3Q1K1hKZDZpNW8vMDVIblptNnpIdjhUd3VzS2d2elJwQTFXV0JiMDZOdEE3b1UwK3dJci9MTWdXK2xuTkhhMUxId1NwdWVsRGFla3hrMUhJY1I5T3RtMnRtc3VVVUxMWnRwY1ZLWWJVQ1hZZ1JOYzhxc2lwT0o5V21MRm83Z3dNVkpEM3QzT21iVWNEeEcwT09NMk5aMGs4dXpveHF4YkR6a05xQkxrUWZCNkpCcFh0alc5UGRhdGdGZG03MXRUWjhMNnREYmdDNWxDM253andESFFHVmxpdFZ0R1czdGo3aCtlWkFVVSttWGk1UlNMbC9zdjNUaFh2bHBPd1QwaHBRUHRnOTNRMHBRbThPOFVSNFNBZ1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkRVRnZhRGZwOVNDbkFZeDFVMjdXY2x2RkhsMGZzQmY2ZHBXd2pveXdESGNIUXBwYnhSLzRVWGk3WXRwZlNwNjdvdlQ5Nk13MG9wY1d4SC9rRG5WL3RmYmIwaFdsWDY3a280YjRlQTNwNVBaUlJHUTFKS0gzUGY2Yk50RWREYjlHWHJEZEFncGJvTkV0RGI5TlpEcG5hVXZsTFcyQ0FCRGZHOTBVZmJKS0FCZ2hMUUVOK0RQdHFtdnJXelRpbmRxY2NkN0w3diszZU5uOE9tdU81bjBkeDEzK0lJK2x1QVkyamR4ZFlib0VHdSs4TTFkOTAzRjlCOTMxOTNYWGNkNEZCYWRXMDFZWHRjOXdkcjhycHZzZ2JkOS8xNTEzVm4rWllsd09HMElyZlZXV2s3R3VTNm42VHA2NzY1R3ZSVDV2TU9ZN09rZFhIZEQrTzZCd0FBQUFBQUFBQUFBQUFBWVBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOaU1ydXYrRC9XWnUyRmNZZmExQUFBQUFFbEZUa1N1UW1DQyIgLz4KICA8L2RlZnM+Cjwvc3ZnPg== + + assets: # Not used yet + - type: icon + filename: img/3scale.svg + originUri: https://github.com/backstage/backstage/blob/master/microsite/static/img/3scale.svg + + history: # Not used yet + added: '2023-05-15' + + packages: # link to the name used in the associated package documents in ../packages + - backstage-community-plugin-quay diff --git a/catalog-entities/marketplace/plugins/bitbucket-cloud-catalog-integration.yaml b/catalog-entities/marketplace/plugins/bitbucket-cloud-catalog-integration.yaml new file mode 100644 index 0000000000..6c7f559990 --- /dev/null +++ b/catalog-entities/marketplace/plugins/bitbucket-cloud-catalog-integration.yaml @@ -0,0 +1,48 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: bitbucket-cloud-catalog-integration + namespace: rhdh + title: Bitbucket Cloud Discovery + description: This is an extension module to the catalog-backend plugin, providing auto discovery for Bitbucket Cloud offerings. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - software-catalog + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-bitbucket-cloud +spec: + categories: + - Software Catalog + + publisher: Red Hat + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + description: | + The Bitbucket Cloud integration has a special entity provider for discovering catalog files located in Bitbucket Cloud. The provider will search your Bitbucket Cloud account and register catalog files matching the configured path as Location entity and via following processing steps add all contained catalog entities. This can be useful as an alternative to static locations or manually adding things to the catalog. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + packages: + - backstage-plugin-catalog-backend-module-bitbucket-cloud diff --git a/catalog-entities/marketplace/plugins/bitbucket-cloud-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/bitbucket-cloud-scaffolder-actions.yaml new file mode 100644 index 0000000000..2f59b4cb00 --- /dev/null +++ b/catalog-entities/marketplace/plugins/bitbucket-cloud-scaffolder-actions.yaml @@ -0,0 +1,52 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: bitbucket-cloud-scaffolder-actions + namespace: rhdh + title: Bitbucket Cloud Software Template Actions + description: Provides a set of Software Template Actions for Bitbucket Cloud + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - software-templates + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-bitbucket-cloud +spec: + categories: + - Scaffolder + + publisher: Red Hat + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + description: | + This plugin provides the following Software Template Actions for Bitbucket Cloud: + + - publish:bitbucketCloud + - bitbucket:pipelines:run + - publish:bitbucketCloud:pull-request + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + packages: + - backstage-plugin-scaffolder-backend-module-bitbucket-cloud diff --git a/catalog-entities/marketplace/plugins/bitbucket-server-catalog-integration.yaml b/catalog-entities/marketplace/plugins/bitbucket-server-catalog-integration.yaml new file mode 100644 index 0000000000..dacaada651 --- /dev/null +++ b/catalog-entities/marketplace/plugins/bitbucket-server-catalog-integration.yaml @@ -0,0 +1,49 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: bitbucket-server-catalog-integration + namespace: rhdh + title: Bitbucket Server Discovery + description: This is an extension module to the catalog-backend plugin, providing auto discovery for Bitbucket Server offerings. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - software-catalog + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-bitbucket-server +spec: + categories: + - Software Catalog + + publisher: Red Hat + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + description: | + The Bitbucket Server integration has a special entity provider for discovering catalog files located in Bitbucket Server. The provider will search your Bitbucket Server account and register catalog files matching the configured path as Location entity and via following processing steps add all contained catalog entities. This can be useful as an alternative to static locations or manually adding things to the catalog. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + + packages: + - backstage-plugin-catalog-backend-module-bitbucket-server diff --git a/catalog-entities/marketplace/plugins/bitbucket-server-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/bitbucket-server-scaffolder-actions.yaml new file mode 100644 index 0000000000..29fa00aa94 --- /dev/null +++ b/catalog-entities/marketplace/plugins/bitbucket-server-scaffolder-actions.yaml @@ -0,0 +1,51 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: bitbucket-server-scaffolder-actions + namespace: rhdh + title: Bitbucket Server Software Template Actions + description: Provides a set of Software Template Actions for Bitbucket Server + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - software-templates + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-bitbucket-server +spec: + categories: + - Scaffolder + + publisher: Red Hat + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + description: | + This plugin provides the following Software Template Actions for Bitbucket Server: + + - publish:bitbucketServer + - publish:bitbucketServer:pull-request + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + packages: + - backstage-plugin-scaffolder-backend-module-bitbucket-server diff --git a/catalog-entities/marketplace/plugins/contrib-techdocs-addons.yaml b/catalog-entities/marketplace/plugins/contrib-techdocs-addons.yaml new file mode 100644 index 0000000000..3caa91d365 --- /dev/null +++ b/catalog-entities/marketplace/plugins/contrib-techdocs-addons.yaml @@ -0,0 +1,66 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: contrib-techdocs-addons + namespace: rhdh + title: Contrib TechDocs add-ons + description: | + This plugin provides Contrib TechDocs add-ons to report documentation issues, change text size, or view images in overlay. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - techdocs + - techdocs-addon + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/techdocs-module-addons-contrib +spec: + author: Backstage Community + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + categories: + - TechDocs + highlights: + - Extends TechDocs + - Report documentation issues + - Change documentation text size + - View documentation images in overlay + + description: | + TechDocs add-ons are plugins that extend the functionality of TechDocs plugin. + + ## Available Contrib TechDocs add-ons + + ### ReportIssue + + Select a portion of text on a TechDocs page and open an issue against the repository that contains the documentation. The issue template is automatically populated with the selected text. + Enabled by default. + + ### TextSize + + Customize text size on documentation pages by increasing or decreasing the font size with a slider or buttons. The default value for font size is 100% and this setting is kept in the browser’s local storage whenever it is changed. + + ### LightBox + + Open images in a light-box on documentation pages, to navigate to multiple images on a single page. The image size of the light-box image is the same as the image size on the document page. Clicking the zoom icon increases the image size to fit the screen. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-techdocs-module-addons-contrib + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== diff --git a/catalog-entities/marketplace/plugins/datadog.yaml b/catalog-entities/marketplace/plugins/datadog.yaml new file mode 100644 index 0000000000..eefd5d348b --- /dev/null +++ b/catalog-entities/marketplace/plugins/datadog.yaml @@ -0,0 +1,59 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: datadog + namespace: rhdh + title: Datadog + description: Embed Datadog graphs and dashboards into Red Hat Developer Hub + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: [] + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/RoadieHQ/roadie-backstage-plugins/tree/main/plugins/frontend/backstage-plugin-datadog + - url: https://roadie.io/backstage/plugins/datadog/ + title: Roadie Documentation + +spec: + authors: + - name: Roadie + url: https://roadie.io/ + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + categories: + - Monitoring + + packages: + - roadiehq-backstage-plugin-datadog + + description: | + Embed Datadog graphs and dashboards into Backstage. + + Datadog is a monitoring service for cloud-scale applications, providing monitoring of servers, databases, tools, and services through a SaaS-based data analytics platform. + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + highlights: + - Embed Datadog graphs and dashboards into RHDH + + + history: + added: '2021-04-20' diff --git a/catalog-entities/marketplace/plugins/dynatrace-community.yaml b/catalog-entities/marketplace/plugins/dynatrace-community.yaml new file mode 100644 index 0000000000..8ef4cf7682 --- /dev/null +++ b/catalog-entities/marketplace/plugins/dynatrace-community.yaml @@ -0,0 +1,122 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: dynatrace-community + namespace: rhdh + title: Dynatrace For Managed + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + description: 'This community supported plugin allows you to view problem and synthetic information for services in your software catalog.' + tags: + - observability + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + +spec: + + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Observability + + highlights: + - Community Supported + - View problem and synthetic information + + description: | + This community supported plugin for Dynatrace allows you to view problem and synthetic information for services in your software catalog. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBVcGxvYWRlZCB0bzog + U1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29s + cyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9Ii0yIDAgMjYw + IDI2MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht + bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJh + dGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNODYuMzg1NzY4NywyMS42 + ODk1NzM3IEM4My4wNTY3NTAzLDM5LjI1OTM5MjkgNzguOTg3OTUwMSw2NS4zMzY3MDM0IDc2Ljc2 + ODYwNDUsOTEuNzgzOTA0OSBDNzIuODg0NzQ5OCwxMzguMzkwMTYyIDc1LjI4OTA0MDgsMTY5LjY0 + NTk0NiA3NS4yODkwNDA4LDE2OS42NDU5NDYgTDkuNjMzNDAwODEsMjMxLjk3MjU2NyBDOS42MzM0 + MDA4MSwyMzEuOTcyNTY3IDQuNjM5ODczMjYsMTk3LjAxNzg3NCAyLjA1MDYzNjc1LDE1Ny42MjQ0 + OSBDMC41NzEwNzMwMzMsMTMzLjIxMTY4OSAwLjAxNjIzNjYzODksMTExLjc1ODAxNSAwLjAxNjIz + NjYzODksOTguODExODMyNiBDMC4wMTYyMzY2Mzg5LDk4LjA3MjA1MDcgMC4zODYxMjc1NjgsOTcu + MzMyMjY4OCAwLjM4NjEyNzU2OCw5Ni41OTI0ODcgQzAuMzg2MTI3NTY4LDk1LjY2Nzc1OTcgMS40 + OTU4MDAzNiw4Ni45NzUzMjI4IDEwLjAwMzI5MTcsNzguODM3NzIyNCBDMTkuMjUwNTY1LDY5Ljk2 + MDM0MDEgODcuNDk1NDQxNSwxNi41MTExMDA3IDg2LjM4NTc2ODcsMjEuNjg5NTczNyBaIiBmaWxs + PSIjMTQ5NkZGIj4KDTwvcGF0aD4KICAgICAgICA8cGF0aCBkPSJNODYuMzg1NzY4NywyMS42ODk1 + NzM3IEM4My4wNTY3NTAzLDM5LjI1OTM5MjkgNzguOTg3OTUwMSw2NS4zMzY3MDM0IDc2Ljc2ODYw + NDUsOTEuNzgzOTA0OSBDNzYuNzY4NjA0NSw5MS43ODM5MDQ5IDQuMDg1MDM2ODYsODMuMDkxNDY4 + MSAwLjAxNjIzNjYzODksMTAwLjY2MTI4NyBDMC4wMTYyMzY2Mzg5LDk5LjczNjU1OTkgMS4zMTA4 + NTQ4OSw4OS4wMDk3MjI5IDkuODE4MzQ2MjcsODAuODcyMTIyNSBDMTkuMDY1NjE5NSw3MS45OTQ3 + NDAyIDg3LjQ5NTQ0MTUsMTYuNTExMTAwNyA4Ni4zODU3Njg3LDIxLjY4OTU3MzcgTDg2LjM4NTc2 + ODcsMjEuNjg5NTczNyBaIiBmaWxsPSIjMTI4NEVBIj4KDTwvcGF0aD4KICAgICAgICA8cGF0aCBk + PSJNMC4wMTYyMzY2Mzg5LDk2LjQwNzU0MTUgTDAuMDE2MjM2NjM4OSwxMDAuNDc2MzQyIEMwLjc1 + NjAxODQ5OCw5Ny4zMzIyNjg4IDIuMDUwNjM2NzUsOTUuMTEyOTIzMyA0LjYzOTg3MzI2LDkxLjU5 + ODk1OTQgQzEwLjAwMzI5MTcsODQuNzU1OTc3MiAxOC42OTU3Mjg2LDgyLjkwNjUyMjYgMjIuMjA5 + NjkyNCw4Mi41MzY2MzE3IEMzOS45NjQ0NTcsODAuMTMyMzQwNiA2Ni4yMjY3MTMsNzcuMzU4MTU4 + NyA5Mi42NzM5MTQ1LDc2LjYxODM3NjggQzEzOS40NjUxMTcsNzUuMTM4ODEzMSAxNzAuMzUxMDEs + NzkuMDIyNjY3OCAxNzAuMzUxMDEsNzkuMDIyNjY3OCBMMjM2LjAwNjY1LDE2LjY5NjA0NjIgQzIz + Ni4wMDY2NSwxNi42OTYwNDYyIDIwMS42MDY3OTMsMTAuMjIyOTU0OSAxNjIuMzk4MzU1LDUuNTk5 + MzE4MzEgQzEzNi42OTA5MzUsMi40NTUyNDU0MSAxMTQuMTI3NTg4LDAuNzkwNzM2MjIyIDEwMS4z + NjYzNTEsMC4wNTA5NTQzNjI4IEMxMDAuNDQxNjI0LDAuMDUwOTU0MzYyOCA5MS4zNzkyOTYzLC0x + LjA1ODcxODQzIDgyLjg3MTgwNDksNy4wNzg4ODIwMyBDNzMuNjI0NTMxNiwxNS45NTYyNjQzIDI2 + LjY0ODM4MzYsNjAuNTI4MTIxNCA3Ljc4Mzk0NjE2LDc4LjQ2NzgzMTQgQy0wLjcyMzU0NTIyLDg2 + LjYwNTQzMTkgMC4wMTYyMzY2Mzg5LDk1LjY2Nzc1OTcgMC4wMTYyMzY2Mzg5LDk2LjQwNzU0MTUg + WiIgZmlsbD0iI0I0REMwMCI+Cg08L3BhdGg+CiAgICAgICAgPHBhdGggZD0iTTIzMy42MDIzNTks + MTc2LjExOTAzNyBDMjE1Ljg0NzU5NCwxNzguNTIzMzI4IDE4OS41ODUzMzgsMTgxLjQ4MjQ1NSAx + NjMuMTM4MTM3LDE4Mi40MDcxODMgQzExNi4zNDY5MzQsMTgzLjg4Njc0NiA4NS4yNzYwOTU5LDE4 + MC4wMDI4OTIgODUuMjc2MDk1OSwxODAuMDAyODkyIEwxOS42MjA0NTU5LDI0Mi41MTQ0NTkgQzE5 + LjYyMDQ1NTksMjQyLjUxNDQ1OSA1NC4zOTAyMDMzLDI0OS4zNTc0NDEgOTMuNTk4NjQxOCwyNTMu + Nzk2MTMyIEMxMTcuNjQxNTUyLDI1Ni41NzAzMTQgMTM4LjkxMDI4MSwyNTguMDQ5ODc4IDE1MS44 + NTY0NjMsMjU4Ljc4OTY2IEMxNTIuNzgxMTkxLDI1OC43ODk2NiAxNTQuMjYwNzU0LDI1OC4wNDk4 + NzggMTU1LjE4NTQ4MiwyNTguMDQ5ODc4IEMxNTYuMTEwMjA5LDI1OC4wNDk4NzggMTY1LjE3MjUz + NywyNTYuMzg1MzY5IDE3My42ODAwMjgsMjQ4LjI0Nzc2OCBDMTgyLjkyNzMwMSwyMzkuMzcwMzg2 + IDIzOC43ODA4MzIsMTc1LjU2NDIgMjMzLjYwMjM1OSwxNzYuMTE5MDM3IEwyMzMuNjAyMzU5LDE3 + Ni4xMTkwMzcgWiIgZmlsbD0iIzZGMkRBOCI+Cg08L3BhdGg+CiAgICAgICAgPHBhdGggZD0iTTIz + My42MDIzNTksMTc2LjExOTAzNyBDMjE1Ljg0NzU5NCwxNzguNTIzMzI4IDE4OS41ODUzMzgsMTgx + LjQ4MjQ1NSAxNjMuMTM4MTM3LDE4Mi40MDcxODMgQzE2My4xMzgxMzcsMTgyLjQwNzE4MyAxNjgu + MTMxNjY0LDI1NS40NjA2NDEgMTUwLjU2MTg0NSwyNTguNjA0NzE0IEMxNTEuNDg2NTcyLDI1OC42 + MDQ3MTQgMTYzLjUwODAyOCwyNTguMDQ5ODc4IDE3Mi4wMTU1MTksMjQ5LjkxMjI3NyBDMTgxLjI2 + Mjc5MiwyNDEuMDM0ODk1IDIzOC43ODA4MzIsMTc1LjU2NDIgMjMzLjYwMjM1OSwxNzYuMTE5MDM3 + IEwyMzMuNjAyMzU5LDE3Ni4xMTkwMzcgWiIgZmlsbD0iIzU5MUY5MSI+Cg08L3BhdGg+CiAgICAg + ICAgPHBhdGggZD0iTTE1NC40NDU3LDI1OC45NzQ2MDUgQzE1My4xNTEwODEsMjU4Ljk3NDYwNSAx + NTEuODU2NDYzLDI1OC43ODk2NiAxNTAuMzc2OSwyNTguNzg5NjYgQzE1My43MDU5MTgsMjU4LjIz + NDgyMyAxNTUuOTI1MjYzLDI1Ny4xMjUxNSAxNTkuNDM5MjI3LDI1NC41MzU5MTQgQzE2Ni40Njcx + NTUsMjQ5LjU0MjM4NiAxNjguNjg2NTAxLDI0MC44NDk5NSAxNjkuNDI2MjgyLDIzNy4zMzU5ODYg + QzE3Mi41NzAzNTUsMjE5Ljc2NjE2NyAxNzYuODI0MTAxLDE5My42ODg4NTYgMTc4Ljg1ODUwMSwx + NjcuMjQxNjU1IEMxODIuNTU3NDEsMTIwLjYzNTM5NyAxODAuMzM4MDY1LDg5LjU2NDU1OTMgMTgw + LjMzODA2NSw4OS41NjQ1NTkzIEwyNDUuOTkzNzA1LDI3LjA1Mjk5MjIgQzI0NS45OTM3MDUsMjcu + MDUyOTkyMiAyNTAuODAyMjg3LDYxLjgyMjczOTYgMjUzLjU3NjQ2OSwxMDEuMjE2MTI0IEMyNTUu + MjQwOTc4LDEyNi45MjM1NDMgMjU1Ljc5NTgxNCwxNDkuNjcxODM1IDI1NS45ODA3NiwxNjIuMjQ4 + MTI3IEMyNTUuOTgwNzYsMTYzLjE3Mjg1NCAyNTYuNzIwNTQyLDE3Mi4yMzUxODIgMjQ4LjIxMzA1 + LDE4MC4zNzI3ODMgQzIzOC45NjU3NzcsMTg5LjI1MDE2NSAxOTEuOTg5NjI5LDIzNC4wMDY5Njcg + MTczLjMxMDEzNywyNTEuOTQ2Njc3IEMxNjQuNDMyNzU1LDI2MC4wODQyNzggMTU1LjM3MDQyNywy + NTguOTc0NjA1IDE1NC40NDU3LDI1OC45NzQ2MDUgTDE1NC40NDU3LDI1OC45NzQ2MDUgWiIgZmls + bD0iIzczQkUyOCI+Cg08L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPg== + + packages: + - backstage-community-plugin-dynatrace diff --git a/catalog-entities/marketplace/plugins/extensions.yaml b/catalog-entities/marketplace/plugins/extensions.yaml new file mode 100644 index 0000000000..4abe5133cf --- /dev/null +++ b/catalog-entities/marketplace/plugins/extensions.yaml @@ -0,0 +1,62 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: extensions + namespace: rhdh + title: Extensions (Plugin Catalog) + description: | + The Extensions plugin provides a catalog of available plugins for Red Hat Developer Hub. + This plugin is pre-installed and enabled by default in Red Hat Developer Hub. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - plugins + +spec: + author: Red Hat + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - Customization + + highlights: + - Provides a catalog of available plugins for Red Hat Developer Hub + - Browse the available plugins + - Link to source code, docs, and other sources + + description: | + The Extensions plugin provides a catalog of available plugins for Red Hat Developer Hub. + This plugin is pre-installed and enabled by default in Red Hat Developer Hub. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - red-hat-developer-hub-backstage-plugin-marketplace + - red-hat-developer-hub-backstage-plugin-marketplace-backend + - red-hat-developer-hub-backstage-plugin-catalog-backend-module-m diff --git a/catalog-entities/marketplace/plugins/gerrit-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/gerrit-scaffolder-actions.yaml new file mode 100644 index 0000000000..0aed48f662 --- /dev/null +++ b/catalog-entities/marketplace/plugins/gerrit-scaffolder-actions.yaml @@ -0,0 +1,53 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: gerrit-scaffolder-actions + namespace: rhdh + title: Gerrit Software Template Actions + description: 'This plugin contains a collection of actions for working with Gerrit' + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-gerrit + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - scaffolder + - software-templates +spec: + categories: + - Scaffolder + authors: + - name: Backstage Community + publisher: Red Hat + lifecycle: active + support: + provider: Red Hat + level: tech-preview + + description: | + This plugin contains a collection of actions for working with Gerrit + + - publish:gerrit + - publish:gerrit:review + + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + packages: + - backstage-plugin-scaffolder-backend-module-gerrit diff --git a/catalog-entities/marketplace/plugins/github-actions.yaml b/catalog-entities/marketplace/plugins/github-actions.yaml new file mode 100644 index 0000000000..fb905721ba --- /dev/null +++ b/catalog-entities/marketplace/plugins/github-actions.yaml @@ -0,0 +1,63 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: github-actions + namespace: rhdh + title: GitHub Actions + description: The GitHub Actions Plugin integrates GitHub Actions workflow data into your catalog. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - cicd + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/github-actions/plugins/github-actions +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + categories: + - CI/CD + + description: | + The GitHub Actions Plugin integrates GitHub Actions workflow data into your catalog. + + GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. + + Plugin features: + - List workflow runs for a project + - Dive into one run to see a job steps + - Retry runs + - Pagination for runs + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + # unused yet + # assets: + # - type: icon + # Url: https://avatars2.githubusercontent.com/u/44036562?s=400&v=4 + + packages: + - name: backstage-community-plugin-github-actions + + history: + added: '2021-01-20' diff --git a/catalog-entities/marketplace/plugins/github-catalog-integration.yaml b/catalog-entities/marketplace/plugins/github-catalog-integration.yaml new file mode 100644 index 0000000000..494ab88615 --- /dev/null +++ b/catalog-entities/marketplace/plugins/github-catalog-integration.yaml @@ -0,0 +1,73 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: backstage-plugin-catalog-backend-module-github + namespace: rhdh + title: GitHub Software Catalog Integration + description: | + Provides a GitHub integration for the Software Catalog. Searches your + GitHub account and registers catalog files matching the configured path. + It can also import your users and groups from GitHub. + + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + - title: Backstge docs + url: https://backstage.io/docs/reference/plugin-catalog-backend-module-github/ + tags: + - software-catalog +spec: + + author: Backstage Community + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + highlights: + - Provides a GitHub integration for the Software Catalog + - Extracts software repositories from GitHub Orgs + - Ingests org data (users and groups) from GitHub. + + categories: + - Software Catalog + + description: | + Discovers catalog files, users, and groups located in [GitHub](https://github.com). The provider will search your + GitHub account and register catalog files matching the configured path as Location entity and via + following processing steps add all contained catalog entities. This can be useful as an + alternative to static locations or manually adding things to the catalog. + + The plugin also extracts software repositories from GitHub Orgs and ingests org data (users and groups) from GitHub. + + Features include: + + * Discovers catalog files located in [GitHub](https://github.com). + * Extracts software repositories from GitHub Orgs + * Ingests org data (users and groups) from GitHub. + * Provides a GitHub integration for the Software Catalog + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-catalog-backend-module-github diff --git a/catalog-entities/marketplace/plugins/github-insights.yaml b/catalog-entities/marketplace/plugins/github-insights.yaml new file mode 100644 index 0000000000..923e8b516d --- /dev/null +++ b/catalog-entities/marketplace/plugins/github-insights.yaml @@ -0,0 +1,57 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: github-insights + namespace: rhdh + title: GitHub Insights + description: View GitHub Insights for your components in Red Hat Developer Hub. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: [] + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/RoadieHQ/roadie-backstage-plugins/tree/main/plugins/frontend/backstage-plugin-github-insights + - url: https://roadie.io/backstage/plugins/github-insights/ + title: Roadie Documentation +spec: + authors: + - name: Roadie + url: https://roadie.io/ + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + categories: + - Source Control + + description: | + Adds GitHub Insights for your components in the software catalog. + + Shows widgets about repository contributors, languages, readme, environments and release at overview page. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + highlights: + - Add GitHub Insights plugin tab. + - Show widgets about repository contributors, languages, readme, environments and release + + packages: + - roadiehq-backstage-plugin-github-insights + diff --git a/catalog-entities/marketplace/plugins/github-issues.yaml b/catalog-entities/marketplace/plugins/github-issues.yaml new file mode 100644 index 0000000000..66febaf847 --- /dev/null +++ b/catalog-entities/marketplace/plugins/github-issues.yaml @@ -0,0 +1,62 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: github-issues + namespace: rhdh + title: GitHub Issues + description: 'Based on the well-known GitHub slug annotation associated with the Entity, it renders the list of Open issues in GitHub' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - issue-tracker + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/github-issues/plugins/github-issues +spec: + categories: + - Code Quality + + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + highlights: + - Show GitHub issues for your entities + + description: | + Based on the [well-known GitHub slug annotation](https://backstage.io/docs/features/software-catalog/well-known-annotations#githubcomproject-slug) associated with the Entity, it renders the list of Open issues in GitHub. + The plugin will attempt to determine the source code location using the [well-known Source location slug annotation](https://backstage.io/docs/features/software-catalog/well-known-annotations/#backstageiosource-location) or [Managed by location slug annotation](https://backstage.io/docs/features/software-catalog/well-known-annotations/#backstageiomanaged-by-location) associated with the Entity. + If no configured Github provider will match, the first one will be used. + + The plugin is designed to work with four Entity kinds, and it behaves a bit differently depending on that kind: + + - Kind: Group/User: plugin renders issues from all repositories for which the Entity is the owner. + - Kind: API/Component: plugin renders issues from only one repository assigned to the Entity + + **Issues are sorted from the recently updated DESC order (the plugin might not render all issues from a single repo next to each other).** + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + + + + packages: + - backstage-community-plugin-github-issues diff --git a/catalog-entities/marketplace/plugins/github-org-catalog-integration.yaml b/catalog-entities/marketplace/plugins/github-org-catalog-integration.yaml new file mode 100644 index 0000000000..32a959bde3 --- /dev/null +++ b/catalog-entities/marketplace/plugins/github-org-catalog-integration.yaml @@ -0,0 +1,61 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: backstage-plugin-catalog-backend-module-github-org + namespace: rhdh + title: GitHub Org Software Catalog Integration + description: | + Provides a GitHub integration for the Software Catalog. + Searches your GitHub account and imports your users and groups from GitHub. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + - title: Backstge docs + url: https://backstage.io/docs/reference/plugin-catalog-backend-module-github-org/ + tags: + - software-catalog +spec: + + author: Backstage Community + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + highlights: + - Provides a GitHub integration for the Software Catalog + - Ingests org data (users and groups) from GitHub. + + categories: + - Software Catalog + + description: | + Discovers users and groups located in [GitHub](https://github.com). The provider will search your + GitHub account and register catalog files matching the configured path as Location entity and via + following processing steps add all contained catalog entities. This can be useful as an + alternative to static locations or manually adding things to the catalog. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-catalog-backend-module-github-org diff --git a/catalog-entities/marketplace/plugins/github-pull-requests.yaml b/catalog-entities/marketplace/plugins/github-pull-requests.yaml new file mode 100644 index 0000000000..3dec2f6954 --- /dev/null +++ b/catalog-entities/marketplace/plugins/github-pull-requests.yaml @@ -0,0 +1,69 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: github-pull-requests + namespace: rhdh + title: GitHub Pull Requests + description: View GitHub pull requests for your service in Red Hat Developer Hub. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - codereviews + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + - url: https://roadie.io/backstage/plugins/github-pull-requests/ + title: Roadie Documentation +spec: + authors: + - name: Roadie + url: https://roadie.io/ + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + + categories: + - Source Control + + highlights: + - List Pull Requests + - Statistics about Pull Requests + + description: | + View GitHub pull requests for your service in Red Hat Developer Hub. + + Features: + - List Pull Requests for your repository, with filtering and search. + - Show basic statistics widget about pull requests for your repository. + - Average time of PR until merge + - Merged to closed ratio + - Average size of PR (the average lines of changes in the PR) + - Average amount of file changed in a PR + - Average coding time of PR (The difference between the PR creation and first commit) + - It has two homepage plugin componenets + - Review requests + - Open pull requests + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + + packages: + - roadiehq-backstage-plugin-github-pull-requests diff --git a/catalog-entities/marketplace/plugins/gitlab-catalog-cards.yaml b/catalog-entities/marketplace/plugins/gitlab-catalog-cards.yaml new file mode 100644 index 0000000000..60dbbc4b82 --- /dev/null +++ b/catalog-entities/marketplace/plugins/gitlab-catalog-cards.yaml @@ -0,0 +1,67 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: backstage-catalog-cards + namespace: rhdh + title: GitLab Catalog Cards + description: 'Collection of GitLab catalog cards for the Red Hat Developer Hub.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: [] + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/immobiliare/backstage-plugin-gitlab +spec: + author: ImmobiliareLabs + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - Source Control + highlights: + - List build, MRs, Issues, releases + - View Code Owners, Contributors, + - Show MRs and Languages statistics + description: | + Collection of GitLab catalog cards for the Red Hat Developer Hub. + + Works for both project and personal tokens. + Support for Olds/New GitLab APIs version. + Support for multi GitLab Instance. + + Available cards: + - List top 20 builds for a project + - List top 20 Merge Requests for a project + - List top 20 Issues for a project + - List last releases + - View Code Owners for a project + - View Contributors for a project + - View Languages used for a project + - View Pipeline status for a project + - View README for a project (with partial support for GLFM) + - Merge Requests Statistics + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - immobiliarelabs-backstage-plugin-gitlab + - immobiliarelabs-backstage-plugin-gitlab-backend diff --git a/catalog-entities/marketplace/plugins/gitlab-catalog-integration.yaml b/catalog-entities/marketplace/plugins/gitlab-catalog-integration.yaml new file mode 100644 index 0000000000..df1a17d819 --- /dev/null +++ b/catalog-entities/marketplace/plugins/gitlab-catalog-integration.yaml @@ -0,0 +1,58 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: gitlab-catalog-integration + namespace: rhdh + title: GitLab Catalog Integration + description: | + This plugin provides GitLab catalog integration for the Red Hat Developer Hub. Searches your + GitLab account and registers catalog files matching the configured path. + It can also import your users and groups from GitLab. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - title: readme + url: https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-gitlab/README.md + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - software-catalog +spec: + + author: Backstage Community + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + categories: + - Software Catalog + + highlights: + - Provides GitLab catalog integration + + description: | + This plugin provides GitLab catalog integration for the Red Hat Developer Hub. This is an + extension module to the plugin-catalog-backend plugin that provides group and user entities + by scrapping or receiving events from a GitLab instance. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-catalog-backend-module-gitlab diff --git a/catalog-entities/marketplace/plugins/gitlab-org-catalog-integration.yaml b/catalog-entities/marketplace/plugins/gitlab-org-catalog-integration.yaml new file mode 100644 index 0000000000..7de0642664 --- /dev/null +++ b/catalog-entities/marketplace/plugins/gitlab-org-catalog-integration.yaml @@ -0,0 +1,57 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: gitlab-org-catalog-integration + namespace: rhdh + title: GitLab Org Catalog Integration + description: | + This plugin provides GitLab catalog integration for the Red Hat Developer Hub. + Searches your GitLab account and imports your users and groups from GitLab. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - title: readme + url: https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-gitlab-org/README.md + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - software-catalog +spec: + + author: Backstage Community + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + categories: + - Software Catalog + + highlights: + - Provides GitLab catalog integration + + description: | + This plugin provides GitLab catalog integration for the Red Hat Developer Hub. This is an + extension module to the plugin-catalog-backend plugin that provides group and user entities + by scrapping or receiving events from a GitLab instance. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-catalog-backend-module-gitlab-org diff --git a/catalog-entities/marketplace/plugins/gitlab-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/gitlab-scaffolder-actions.yaml new file mode 100644 index 0000000000..fae28eed08 --- /dev/null +++ b/catalog-entities/marketplace/plugins/gitlab-scaffolder-actions.yaml @@ -0,0 +1,65 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: gitlab-scaffolder-actions + namespace: rhdh + title: GitLab Software Template Actions + description: Software template actions for working with GitLab + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - ci + - cd + - gitlab + - software-templates + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-gitlab +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + categories: + - Source Control + - Scaffolder + + description: | + Collection of software template actions for working with GitLab. + + Provided actions: + + - publish:gitlab + - gitlab:group:ensureExists + - gitlab:issues:create + - publish:gitlab:merge-request + - gitlab:pipeline:trigger + - gitlab:projectAccessToken:create + - gitlab:projectDeployToken:create + - gitlab:group:migrate + - gitlab:projectVariable:create + - gitlab:repo:push + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-scaffolder-backend-module-gitlab + diff --git a/catalog-entities/marketplace/plugins/global-floating-action-button.yaml b/catalog-entities/marketplace/plugins/global-floating-action-button.yaml new file mode 100644 index 0000000000..ecf30494c2 --- /dev/null +++ b/catalog-entities/marketplace/plugins/global-floating-action-button.yaml @@ -0,0 +1,57 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: global-floating-action-button + namespace: rhdh + title: Global Floating Action Button + description: 'This plugin enables you to add a floating button, with or without submenu options, to your desired pages.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - customization + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Customization + highlights: + - Adds floating action button with sub menus. + + description: | + This plugin enables you to add a floating button, with or without submenu options, to your desired pages. + The feature enables the platform administrator to add floating action button(s) for quick and easy access to resources like plugins, feedback forms, support links, etc. This plugin ships as enabled by default in Red Hat Developer Hub. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + + # Images are base 64 encoded SVGs (below is a blank square from the mockup) + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - red-hat-developer-hub-backstage-plugin-global-floating-action-b diff --git a/catalog-entities/marketplace/plugins/global-header.yaml b/catalog-entities/marketplace/plugins/global-header.yaml new file mode 100644 index 0000000000..c315adf275 --- /dev/null +++ b/catalog-entities/marketplace/plugins/global-header.yaml @@ -0,0 +1,59 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: global-header + namespace: rhdh + title: Global Header + description: 'The Global Header feature enhances user experience by providing a consistent and customizable navigation bar across all pages.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - customization + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + - title: Upstream Documentation + url: https://github.com/redhat-developer/rhdh-plugins/blob/main/workspaces/global-header/docs/configuration.md + +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Customization + + highlights: + - Adds global header across all pages. + + + description: | + The Global Header feature enhances user experience by providing a consistent and customizable navigation bar across all pages of a Backstage instance. Administrators can easily enable or disable this feature, which is active by default, and tailor it to their organization's needs. They can add elements such as search bars, notification indicators, and user settings, positioning them as desired. Users benefit from immediate access to these tools, with interactive elements like searchable input fields and dynamic notification alerts, streamlining their interaction with the platform. This plugin ships as enabled by default in Red Hat Developer Hub. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - red-hat-developer-hub-backstage-plugin-global-header diff --git a/catalog-entities/marketplace/plugins/home-page.yaml b/catalog-entities/marketplace/plugins/home-page.yaml new file mode 100644 index 0000000000..ee2ac0a07e --- /dev/null +++ b/catalog-entities/marketplace/plugins/home-page.yaml @@ -0,0 +1,65 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: home-page + namespace: rhdh + title: Dynamic Home Page + description: | + Customize the home page experience of Red Hat Developer Hub for your users. Display important information, announcements, and links to resources, systems, etc. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - customization + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Customization + + highlights: + - Customize the home page of Red Hat Developer Hub + + description: | + This plugin ships as enabled by default in Red Hat Developer Hub. + + Home Page is a plugin that allows you to customize the home page of Red Hat Developer Hub. + The home page is the first page that users see when they log in to Red Hat Developer Hub. + You can use this plugin to add custom content to the home page, such as links to important resources, + announcements, or other information that you want to share with users. + + The home page can be customized using a simple configuration file that allows you to define sections + with different types of content, such as text, links, images, and more. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + # Images are base 64 encoded SVGs (below is a blank square from the mockup) + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - red-hat-developer-hub-backstage-plugin-dynamic-home-page diff --git a/catalog-entities/marketplace/plugins/http-request-scaffolder-action.yaml b/catalog-entities/marketplace/plugins/http-request-scaffolder-action.yaml new file mode 100644 index 0000000000..dc46b390a9 --- /dev/null +++ b/catalog-entities/marketplace/plugins/http-request-scaffolder-action.yaml @@ -0,0 +1,61 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: http-request-scaffolder-action + namespace: rhdh + title: HTTP Request Software Template Action + description: | + An action to fire an arbitrary HTTP request. Use the response in your scaffolder templates. This contains one action: `http:backstage:request`. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - scaffolder + links: + - url: https://github.com/RoadieHQ/roadie-backstage-plugins/blob/main/plugins/scaffolder-actions/scaffolder-backend-module-http-request/README.md + title: readme + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ +spec: + author: Roadie + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - Scaffolder + + highlights: + - Fire arbitrary HTTP requests + - Use the response in your scaffolder templates + + description: | + An action to fire an arbitrary HTTP request. Use the response in your scaffolder templates. This contains one action: `http:backstage:request`. + + The `http:backstage:request` action allows the task to call any of the backstage APIs available to the user that triggers it. + The action takes care of passing the authentication token of the user to the task execution so that the action can perform actions + on behalf of the user that triggers it. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - roadiehq-scaffolder-backend-module-http-request + + diff --git a/catalog-entities/marketplace/plugins/jenkins.yaml b/catalog-entities/marketplace/plugins/jenkins.yaml new file mode 100644 index 0000000000..b2089922f6 --- /dev/null +++ b/catalog-entities/marketplace/plugins/jenkins.yaml @@ -0,0 +1,57 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: backstage-community-plugin-jenkins + namespace: rhdh + title: Jenkins + description: Show information about Jenkins builds and pipelines in Red Hat Developer Hub. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - ci + - cd + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/jenkins/plugins/jenkins + +spec: + authors: + - name: '@timja' + url: https://github.com/timja + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + categories: + - CI/CD + + description: | + Show information about Jenkins builds and pipelines in Red Hat Developer Hub. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + highlights: + - View all runs inside a folder + - Last branch build status + - View build summary + + packages: + - backstage-community-plugin-jenkins + - backstage-community-plugin-jenkins-backend diff --git a/catalog-entities/marketplace/plugins/jfrog-artifactory.yaml b/catalog-entities/marketplace/plugins/jfrog-artifactory.yaml new file mode 100644 index 0000000000..7c7ba90350 --- /dev/null +++ b/catalog-entities/marketplace/plugins/jfrog-artifactory.yaml @@ -0,0 +1,56 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: jfrog-artifactory + namespace: rhdh + title: JFrog Artifactory + description: View container image details from JFrog Artifactory in Backstage. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - image-registry + links: + - url: https://github.com/backstage/community-plugins/blob/main/workspaces/jfrog-artifactory/plugins/jfrog-artifactory/README.md + title: Upstream Documentation + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs +spec: + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + author: Red Hat + categories: + - Container Image Registry + + highlights: + - Display information about the container images. + + description: | + The Jfrog Artifactory plugin displays information about your container images within the Jfrog Artifactory registry. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfM184MCkiPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzNfODApIj4KICAgICAgPGNpcmNsZSBjeD0iNDgiIGN5PSI0OCIgcj0iNDgiIGZpbGw9IiMwMDk1OTYiIC8+CiAgICA8L2c+CiAgICA8cmVjdCB4PSI5IiB5PSI5IiB3aWR0aD0iNzgiIGhlaWdodD0iNzgiIGZpbGw9InVybCgjcGF0dGVybjApIiAvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxwYXR0ZXJuIGlkPSJwYXR0ZXJuMCIgcGF0dGVybkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNpbWFnZTBfM184MCIgdHJhbnNmb3JtPSJzY2FsZSgwLjAwMjc3Nzc4KSIgLz4KICAgIDwvcGF0dGVybj4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfM184MCI+CiAgICAgIDxyZWN0IHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgZmlsbD0id2hpdGUiIC8+CiAgICA8L2NsaXBQYXRoPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMV8zXzgwIj4KICAgICAgPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiBmaWxsPSJ3aGl0ZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8aW1hZ2UgaWQ9ImltYWdlMF8zXzgwIiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjM2MCIKICAgICAgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFXZ0FBQUZvQ0FZQUFBQjY1V0hWQUFBQUNYQklXWE1BQUc2NkFBQnV1Z0hXM3JFWEFBQVVwa2xFUVZSNG5PM2RnWEhjT0pZR1lQSnFBM0FJZGdaV0JDZG5ZR1ZnUlhCV0JMWWowR1FnWFFSeUJ0WkdZR2NnWldCbGdDdG8wWE85V2xraTJRVDdnZnkrcXFtYUduc2tFbUQvRFQ0Q1lBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURCYzMzcGJwWlJPQXh4R2VIM2YzMjY5RGRiRWRUOU02OWQ5c3dHZFV2clVkZDJYcnV2ZUJqaWNGdHgzWFhmUjkvMzNyVGRFeTF6M296VjkzVGNaMENtbHE2N3JQZ1U0bEJaZDkzMS92dlZHYUpIci9pQk5YdmZOQlhSSzZXUFhkVGNCRHFWbDUzM2ZYMis5RVZyaXVwOUZjOWQ5aXdGOTUvYnVZUGQ5Mzc5ci9CdzJ4WFUvaSthdSsvOEtjQXlEbFFjakx0TER2ZldRcVIydSs5azBkOTAzRmRCZDE3MEpjQXl3Tk5mOVJyVVcwQUNiMFZwQVB3UTRCbGlhNjM2ampLQzM2ZDdDbFhhVXZycmZlanRza1lEZXBvdXROMENEdm0yOUFiWklRRy9QdGRXRTdTbnpkODFkM3hnQnZSMzVGdm5NS3NKMmxiNDdVKzdZam45czRFeno3Znl2QU1keFZHck82MUR1ZnI2YngvN29mZGQxbHdHT281b3RCUFF2NGNUYXVLWWZGL0FFT0lxNmxEZ0FnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrQURCQ1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNHaUFvQVEwUWxJQUdDR29MKzBHekFTbWx2SG43bTNLbUQzM2ZiLzRsRGJUUENKcW1wWlErcFpUdXVxNzcyWFhkai9MUHovemY4cC9wWFZvbW9HbFNmdVZUU2ltSDhsWFhkVytmT1lmODM2N3kzL0Y2S0ZvbG9HbEtTdWx0U3VtbWpKVGZEemoyL0hkKzVQOG4vNzk2bTVZSWFKcVFVbnFUVXZwYVNoa2ZKeHp6eDFMNitKcC9sbDZuQlFLYThFb3RPUWZ6bDcwSGdWTzhLVC9qcC9vMExSRFFoRlhxekQ5ZXFETlB0YXRQLzFDZkpqSUJUVGlsbkhGVjZzdzFBL1MwMUtldmxEMklTRUFUU3FrejUybHpTNVlnOHUrNks3OGJ3aERRaEpCUytsam1NeDlhWjU3cXNUNWQ1azlQZVFnSnN4UFFIRldaTnBkTEdUY3oxNW1ueXNkd1UrclRwdVZ4VkFLYW95aDE1c3RTem9qNG9PNjBsRDB1MWFjNUZnSE40bEpLbjBzd2YyNmc5VCtYb0c3aFdGa1pBYzFpeXJTNUhNeVhSNm96VDVXUDliTFVwMDNMWXpFQ211cWVMTSt1V2RlOUxmL1U4dGF5Y1pZa29LbG1iM24yM2NUbDJVUGRkMTMzb2UvN3gzL3l2NWYvVnN2SDNiUTg5V2xxRXRCVVVaWlM3NmJOMWZMUWRkMUYzL2Z2K3I3L2UrU2MvejMvdC94bjVlL1U4cVVFdFdYalZDR2dtZFdUYlVCcmppNy82cm91Qi9OZmYvb0w1Yy9lbGI5Ynl4dmJtbEtMZ0dZV3BjNThOV0liMEtueVNQbWs3L3M4Y241MWRKei9UdjY3K2YrcFhKOSt2N2RzWEgyYVdRaG9EdkprRzlDYXQvcTVwbnhXNnN5algyZVYvNTlTbno2clhKLytaRnRUNWlLZ21XekdiVUJma2tmSjMwcWQrZnVoUHl6L2pGS2YvbGF4UG0xYlUyWWhvQmt0djZDMTBqYWdUMTJYY3Nic214aVZuM2xTZmtjdCs5dWExaXo3c0ZJQ21zSDJ0Z0g5V1hsNTltMlpObmZlOTMyMWNrVCsyZmwzbEdsNU5ldlRwMlUwYlZ0VFJoSFFETExRTnFBNWpNOUxuYmxtWVA2Yk1pMHZoL1Q1QXZWcDI1b3ltSURtUlh2THMydHZBL3F0bEROcWxoeGVWSDczU1RtV1d2YTNOVFV0anhjSmFKNjF0dzFvN2VYWjM4dDg1cTlEcHMzVlZxYmxmUzN6cHc5K0tQbUMzYkp4MjVyeVJ3S2FmN1BnTnFDL1NwMzVyR2FkZWFwU256NHI5ZW5SMC9wR3NLMHBmeVNnK2R0QzI0QStsRHJ6eVpKMTVxbEtmZnFrMUtkcmp2QnRhOHAvRU5BOEtyTXphbThEdWx1ZWZiUTY4MVRsbUpkWU5uNVorZ0lFTkkvaGZGbDVkc1p0Q2VaQnk3T2oybHMyL3E3eXRMeFBwVS9ZT0FHOWNlVUJWYTNiNnYxdFFNUFZtYWNxOWVuYTI1cCs5dkFRQVUyTmtmT3oyNEN1elFMYm1sb212bkVDbXYrZXVRV3VYOXNHZEczMnRqV2R1N1krZDkvUUdBSE5YSGJiZ0o2M1hHZWVxdFNuenhmWTFwUU5FZEFjNnFCdFFOZG13VzFOMlFBQnpWUVBlOHV6YTY2NGExSnBrNVBLMjVxeWNnS2FLZjdlQm5TTDVZeWg5cGFOMTk3V2xKVVMwSXhXZXh2UXRkbmIxaFJHRWRBQVFRbG9nS0FFTkVCUUFob2dLQUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1VnQVlJU2tBREJDV2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrQURCQ1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNtdEZTU20rMDJqamFqQ2tFTkZQY3BaUSthYmxoU2x2ZHRYQ3N4Q0tnbVNLUEJxOVNTajlTU3FkYThIbTViWEliNWJZcWJRYWpDR2dPa2NNNWgzUU82N2RhOGw5eVcrUTJ5VzFUMmdnbUVkRE1JZC9DLzB3cGZkMXlyVFdmZTI2RDNCYWxUZUFnQXBxSG1Wb2dCL09YRXRRZnQ5YXE1WngvbGphWTYwdHFycjZoVVFLYWY4N2NBcm5VY1ZQcTArL1gzcnI1SEV1ZCthYWMrNXptN2hzYUk2QzVyalJTT3kyajZhczFsajFLT2VPcWpKcHIxSmtmU3Qrd1lRSjY0L3ErejBGd1ViRVZQcFZwZVYvWDB0TGxYTzRxMTVrdlN0K3dZUUthSE5KNXBIWmVzU1VlNjlNcHBidVdwK1dWYVhOM005ZVpuOHFoZkY3NmhJMFQwRHdxZ2ZDdTY3cnZGVnZrYlptVzk2T2xhWGxsMnR5UE1tMnU1bkhudGo4Unp1d0lhUDdXOS8xOTMvZG5YZGQ5NkxydVY4V1dPUzFsajh2STllbFNaNzRzNVl5YUkvL2MxaDl5MitjK3FQaDdhSXlBNWovMGZYL2I5LzFKcVUzWHJJTitqcnBzZkc5NTl1ZUt2K2FoMUpyenFQbTI0dStoVVFLYVArcjcvcTlTOXZpcllpdnRsbzMvakZDZkxuWG1ud3NzejM1czI5TEc4Q3dCell2eVRJSys3eTlLVU5jYzViMHY5ZW1iWTlTblM1MzVwdFNaYTg3ZnZpM0JiSllHcnhMUUc3QmJnbHhHcWZ0dWhvNWFTMzM2UTZsUDE2eVRmdHhOeTF1aVByMjNQUHV1L081YTdrdWQrY1BRT25NWnpkODg2YlBOTDZrbnFITEJqclhweldyeUV1UXl2ZTBsbzBldEpTUitUK2lQTWFyV3AvUFBIdEEyaC9vOWRnNzRialQveXUrOTIrS1MrbjN5SUJnZE10eHVDZkxJdGhvMU10dXRwcHZRSjJQTnVxM3BiaHZRQlk1NzFDckt2VHVkTVRheHBQNDU4aUFZSGZLNkdVSno5S2gxNHBmQkZBZHRhN3JiQm5TQjR4d2Rtak9NNWxlNXBQNGw4aUFZSGZLeW1jc09vMGV0QThzcGh4cGRNdWlXTGNtTUtqdk1QSnFmMURhdGtnZkI2SkRuN1pZZ1QyaWJJVWFOV3ZkdTAwT0U0WkpmR2lQTEdUVkg4MDB2cVI5S0hnU2pRLzdkYmdueWhEWVphK3FEcnFPVkV5S1hYUmI2QWt1dExha2ZTeDRFbzBQK1piY0VlVUpiSEdycUxmelQ2WDAxWEpWMldlckI1ZWlGTlF1TjVwOFRla245VlBJZ0dCM3kyQWFmRnhwOXZXVHFRN0RheC8xN29kOFI5U0hxYThkZGM5bjY0cmFRQnhhcU5HSnZDZkpsZ0RkRWo5Nk1mMiszdkc4VmordE41YmI1VmxZQkR0cHRib0ZOL2NmSTdYSVpaVWs5d3dqbzRCWmNnanpGYmpQK1FTT3pzbXo4NndMYm1zN3Rld25tcjBPWFo1YzJxYjJwL3hSSFhWTFBPQUk2cUFXWElCOXFOekliUEhQZ3liYW1rYmZYdkIrN0RlamVwdjRSN25SZXN1aVNlcVlSMEFHVkd1ZnVEZEd0R0wwWmY5blc5TjBDMjVxT3Rkc0c5TjNRYlVBWDNOUi9icnMzc1lmYjhoVUJIY3B1MFVMWjZyTG1oN3ptcVBWMDdNaHNvVzFOaHhxMURlaVRPNTJhdGQyYWZmYTJiUGs2NjVKNkRpZWdBOWpOR1M2anI1b2ZrTnZ5U3FVbFJxMWZ4bXpHditDMnBuOHllaHZRdlUzOWE5N3AvRDJhejMxWHVXMU95MTNRUVV2cTJhZzFUcXM1NXFxN0JlZFRSNTR6SEhsdTk3UHpseU12cVYrU2FiZkJyS2xESWkxQlhuQkZZcVJ0VFd0dEF6cUhWK3Y0MFpiVUg0T0FEbVlOSFJKOENYTFVmU3ZtWGgwNGRSdlFpSnN0aGQyaHJ6WUJIVXpMSFJKNUNmSXp4eHB5TS80WnZ0eU9zUTNvRUFlWEU1WmVVbi9Jc2M1RlFBZlRhb2NzdER4NzlCTGtWNDQ1N0diOEUwSnp5cGRCeUUzOUI3Yk5FdGZhMFplTkMraGdXdXVReXR1QTdxdTIyR0Roa3N6Y1pZY0k1WlEvcVZZeW1QaG1saW1PdXEycGdBNm1sUTZKL05EdGdIT0svUDYrcXlkQi9UdndOcUJWMzdQNDVIekNQTlNzZEg0Q09wTG9IYkwya2N0YVp3NUVmVGc2NC9rMWZ5ZjN3bm1OSmFCcmlkd2hHNnY5TFRreXF6WnpZTUh5VFlpTmlWcDhGdkxLK1Fqb1NDSjJ5TEVYTFJ4VHErY2VlWUZPYldzNmR3RWRUS1FPV1h0OWI0eVc3aDdXTm9xY2FnM1BTUVIwTUJFNnhBcXU1MFd2djYrMURudW9sdXZ2QWpxWVkzZElxVmx1ZmcrRWx5dzRNcnNhY1V4TFRadHJkb09oQlFjZHN6MVRFTkRCSExORFN2RFV2b0REck5JNjFFSWoxbGREZW9Gd1B1cGM0RGt0TkFmODkxeGZaTjVKeUw2cmltL0kyRzBEZWo1MHE4dm9GdHFNLzlOTEg3anlaN1Zxd2FNMzlZK3ViUGw2WG5sYjB6ZmxzOFFBQW5xQThvMWY0NXMzYjhLZVF6bS9WdWxYaFo5L2RBdHN4djgvRS8vc0VLTTI5VzlOdmhiek5abXZ6VW92Q2ppMTMvUXdBbnFZdWVmaVBwUTNSSjhNZlVOMHkvWTI0Njh4TW52cFFlcmNEMWwzZHpxRE4vVnZXYmsyVDhxMU92ZjVSbnNCY2tnQ2VwZzVMNmJ2NVVNKytBM1JhN0UzTWpzTC9yTFlwL0t4bnEzNVR1ZFA5dDdFZmpMem05Z0Y5QUFDZWptL3hyNGhlcTM2dnY5ZTZ0TTFSbVp6ZXJ6VEtYWG1PY09wT1UvZXhMNnBMNmxqRXREMVBaUTY4OGxhSGliTlpXOWtGckhNYzcyNzB3bHdMR0dVaDc4bnBUNjlxVHZBWXhEUWRYMHJENU5XWDJlZXFvek16c3ZJTE1JWDJHMjUwem5mK3AzT1M4bzF2YnNMb3BKL2FOaHF6clorV3p4R3VidTR6WHM0SExFK3VhdVJNMEI1aHBJWHVPU1N4NDAybTU4UmREMXUvNlk1WnJ2cHMybTBXeVVDR2lBb0FRMFFsSUFHQ0VwQUF3UWxvQUdDRXRBQVFRbG9nS0FFTkVCUUFob2dLQUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1VnQVlJU2tBREJDV2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrRFhjNWxTT2wzcnlkV1FVdnJhZGQzN0l4N0MrM0lNREZTdThVdnRWWWVBcmljSHpZK1UwbFZLNmUxYVQzSU9LYVdQS2FXN3J1dStkRjMzNW9pSGtuLzNsM3dzK1ppT2VCemg1V3M2WDl2NUdqL3lsK3FxQ2VqNlBuVmQ5ek9QekZKS3h3eWZjRkpLZWNTYVArQTNYZGRGK2hMTHgzS1RqeTBmWTREakNTTmZ3K1V1NDJlNXRxbElRQy9qVFJrZDVxRGUvRVZkUHVTWDVVTWV1UXgwV3ZyczBwZnJZNzk5S24xMjdEdWR6UkRRd3p6TTlIUHl5T3hxeXlPemxOTG5ydXR5T2VOemdNTVo2dkdZeTdGdnp0NmR6dFdNZHpwemZhWldUVUFQY3p2eno5dU56SzYyTWpMTEQ1TktuZmx5NXRIWHI0bC9OdGFiOHVEM2Jpc1BmOHVkemxXbE81MjVQMU9ySktBSDZQcytmOUR2Sy96b1QyVmt0dHFaQStWaDBvL3lNS2xHbmZsL0ovN1pWRy9Mdzk4ZmEzNzRXNjdKdTBwMTV2dnltZUlWQW5xNGkwby9kNVV6Qi9ZZUp0MVZyRFBuRC9uMUMzOSsvY29JK3hDbnV5L1hOZDBGTFRTanB0Wm5pV01xdDhsanpSWU8rU0hKaE44L1Z2TWpzOUpPdnl1MzA5MlFPbjZwbjk1VlBwYmZyVC84M2QzcFZHNm5OR2M3SFRzUENOZ2g1UmgrVGppT3NacWJPUkMxYlhhelJoWTRycCt0QlVETGJTT2dnNG5VSVF1TkVuKzNNSE5ndDJpaGNsdWtRMmUvN0dZakxIQ2NUU3hPeXRmV1F0ZHdsYnNMQVIxTXRBN1orc2hzVjJkZXFKd3hXMzErVjJldGZNeS9vOWFuMTNJWEtLQ0RpZG9oQzlidmJxS016TW9keENJaFYvRWNsdnB5Q1ZHZkx0ZnBUZVh6VFVzOVJ4SFF3VVR2a04xYzN3bkhPTmJSUm1ZTGx3bXFuK051cnU4QzUzTzB4VWw3ZHpxMUxUcEhYRUFIMDBxSHRGN2IrOE01TFJsa3graXowelY5OGV5ZDEycWZsUWpvWUZycWtEVUYycFpLQVdzbzNYUXIvc0o1NWh6SEV0QzF0TmdoTGM4YzJPckR0RllmZm5ZTnphaVo2VndGZENRdGQwaExZYmZGaDU3UGFlbWhXc3RmS2xNSjZHRFcwQ0dSUDBSYm56YjRKOUducFMzNTViOVlvdzhnb0lOWlM0ZEV2QTFkNDRQTnVVVjc0TGIxaFRjQ09waTFkVWlFQnprTFRnMWN4YWIzQzk1bC9ISEsydHBuMUF3bG9JTlphNGNzT0RMN3V2YzdWN1ZvWVduSHF0TXZWQ0pyNGs1SFFBZXo1ZzVaZURIQlVVZUFhN0x3SGNpcUYwR05KYUNEMlVLSExEaXlyYVdKRFo3bXRsQU52NmJRTTJxZXM0VThzR0YvTUgzZjU3ZE5uSFZkOTZIaVp2TzE1QTN5My9WOS8xZUxiWCtJY3M3dlhubUJRRVQ1R3Z1UXI3bDg3VFYyN0tzbm9JUHErLzYyNy91VDh2YUo2Qy9Zek8rWE8rbjcvcnp2KzgyK0REU2ZlMjZEM0JZTnZITXY5OU5GdnNieXRSYmdlSGlHZ0E1dWIyUVdjVlNhUjF4NTVQWEJPK2IrWDI2TDNDYTViU3E5eS9KUWYyMzFUcWMxQXJvQlpXUjJVWUk2d21nbmo3Nis5WDJmUCtUZkF4eFBTTGx0Y2h2bHRncHlGM1JiZ3ZsaXkzYzZMUkhRRFNuMTZRK2xQbjJza2RsMUtXZXM5azNrY3l0dGRYTEUrdlI5cVROL1VHZHVpNEJ1VUtsUEx6MHl1eTBmOG5NZjh2SEtsK3Q1K1hKZDZpNW8vMDVIblptNnpIdjhUd3VzS2d2elJwQTFXV0JiMDZOdEE3b1UwK3dJci9MTWdXK2xuTkhhMUxId1NwdWVsRGFla3hrMUhJY1I5T3RtMnRtc3VVVUxMWnRwY1ZLWWJVQ1hZZ1JOYzhxc2lwT0o5V21MRm83Z3dNVkpEM3QzT21iVWNEeEcwT09NMk5aMGs4dXpveHF4YkR6a05xQkxrUWZCNkpCcFh0alc5UGRhdGdGZG03MXRUWjhMNnREYmdDNWxDM253andESFFHVmxpdFZ0R1czdGo3aCtlWkFVVSttWGk1UlNMbC9zdjNUaFh2bHBPd1QwaHBRUHRnOTNRMHBRbThPOFVSNFNBZ1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkRVRnZhRGZwOVNDbkFZeDFVMjdXY2x2RkhsMGZzQmY2ZHBXd2pveXdESGNIUXBwYnhSLzRVWGk3WXRwZlNwNjdvdlQ5Nk13MG9wY1d4SC9rRG5WL3RmYmIwaFdsWDY3a280YjRlQTNwNVBaUlJHUTFKS0gzUGY2Yk50RWREYjlHWHJEZEFncGJvTkV0RGI5TlpEcG5hVXZsTFcyQ0FCRGZHOTBVZmJKS0FCZ2hMUUVOK0RQdHFtdnJXelRpbmRxY2NkN0w3diszZU5uOE9tdU81bjBkeDEzK0lJK2x1QVkyamR4ZFlib0VHdSs4TTFkOTAzRjlCOTMxOTNYWGNkNEZCYWRXMDFZWHRjOXdkcjhycHZzZ2JkOS8xNTEzVm4rWllsd09HMElyZlZXV2s3R3VTNm42VHA2NzY1R3ZSVDV2TU9ZN09rZFhIZEQrTzZCd0FBQUFBQUFBQUFBQUFBWVBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOaU1ydXYrRC9XWnUyRmNZZmExQUFBQUFFbEZUa1N1UW1DQyIgLz4KICA8L2RlZnM+Cjwvc3ZnPgo= + + packages: + - backstage-community-plugin-jfrog-artifactory + + # unused yet + # assets: + # - type: icon + # Url: /img/jfrog-artifactory.svg + + history: + added: '2023-05-15' diff --git a/catalog-entities/marketplace/plugins/jira.yaml b/catalog-entities/marketplace/plugins/jira.yaml new file mode 100644 index 0000000000..5694922a2d --- /dev/null +++ b/catalog-entities/marketplace/plugins/jira.yaml @@ -0,0 +1,63 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: jira + namespace: rhdh + title: Jira + description: View Jira summary for your projects in Backstage. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - planning + links: + - url: https://roadie.io/backstage/plugins/jira/ + title: Roadie Documentation + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/roadiehq-backstage-plugin-jira +spec: + authors: + - name: Roadie + url: https://roadie.io/ + + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + categories: + - Planning + + highlights: + - Bug tracking and agile project management. + - Show project details and tasks + - View JIRA issues of the Project + - Activity Stream + - Show my assigned JIRA tickets + + description: | + The Jira Backstage plugin lets you bring the Jira project related to your service into the Catalog. + You can keep track of tasks, stories, bugs, and epics from the service page in Backstage. + + ## Adding The Plugin To Red Hat Developer Hub + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - roadiehq-backstage-plugin-jira + + # unused yet + # assets: + # - type: icon + # Url: https://roadie.io/images/logos/jira.png + + history: + added: '2021-04-20' diff --git a/catalog-entities/marketplace/plugins/keycloak-catalog-integration.yaml b/catalog-entities/marketplace/plugins/keycloak-catalog-integration.yaml new file mode 100644 index 0000000000..d4fbb6b05d --- /dev/null +++ b/catalog-entities/marketplace/plugins/keycloak-catalog-integration.yaml @@ -0,0 +1,269 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: keycloak-catalog-integration + namespace: rhdh + title: Keycloak Catalog Integration + description: | + Automatically import Keycloak users and groups into Red Hat Developer Hub for enterprise ready authentication and authorization. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - authentication + - authorization + - iam + - software-catalog + links: + - url: https://github.com/backstage/community-plugins/blob/main/workspaces/keycloak/plugins/catalog-backend-module-keycloak + title: Source Code + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + +spec: + author: Red Hat + publisher: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + + categories: + - Identity and Access Management + + highlights: + - Synchronization of Keycloak users + - Synchronization of Keycloak groups + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJ1dWlkLWEzZGU4 + YWU4LTRjODUtNDFjMi04MzdjLWE2MzNlNDdhYWY0OSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn + LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzggMzgiPgo8ZGVmcz48c3R5bGU+LnV1aWQtZDFkN2Y4 + NDItNjQ0Ni00ZTg5LTljNTktN2Q3Y2M0YTRiYjEwe2ZpbGw6I2UwMDt9LnV1aWQtODYwNjVlODkt + MGM3OS00ZjdkLWIxMGUtNzBjNzYwMTFmOWMxe2ZpbGw6I2ZmZjt9LnV1aWQtM2JmMTFhZDYtYjVl + OC00MzVlLWFkNGYtY2YxNTQ5YjkxMThle2ZpbGw6I2UwZTBlMDt9PC9zdHlsZT48L2RlZnM+PHJl + Y3QgY2xhc3M9InV1aWQtODYwNjVlODktMGM3OS00ZjdkLWIxMGUtNzBjNzYwMTFmOWMxIiB4PSIx + IiB5PSIxIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHJ4PSI5IiByeT0iOSIvPjxwYXRoIGNsYXNz + PSJ1dWlkLTNiZjExYWQ2LWI1ZTgtNDM1ZS1hZDRmLWNmMTU0OWI5MTE4ZSIgZD0ibTI4LDIuMjVj + NC4yNzMzMiwwLDcuNzUsMy40NzY2OCw3Ljc1LDcuNzV2MThjMCw0LjI3MzMyLTMuNDc2NjgsNy43 + NS03Ljc1LDcuNzVIMTBjLTQuMjczMzIsMC03Ljc1LTMuNDc2NjgtNy43NS03Ljc1VjEwYzAtNC4y + NzMzMiwzLjQ3NjY4LTcuNzUsNy43NS03Ljc1aDE4bTAtMS4yNUgxMEM1LjAyOTQyLDEsMSw1LjAy + OTQyLDEsMTB2MThjMCw0Ljk3MDU4LDQuMDI5NDIsOSw5LDloMThjNC45NzA1OCwwLDktNC4wMjk0 + Miw5LTlWMTBjMC00Ljk3MDU4LTQuMDI5NDItOS05LTloMFoiLz48cGF0aCBjbGFzcz0idXVpZC1k + MWQ3Zjg0Mi02NDQ2LTRlODktOWM1OS03ZDdjYzRhNGJiMTAiIGQ9Im0yNy42NTEzNywxMi42NTcy + M2wtMS4xODc1LTEuMTU0M2MtLjI0MjE5LS4yMzYzMy0uNjI4OTEtLjIzNjMzLS44NzEwOSwwbC00 + Ljc2MTYsNC42Mjg0MmMtLjAwMDYxLjAwMDczLS4wMDE0Ni4wMDA4NS0uMDAyMDguMDAxNDYtLjAw + MDQ5LjAwMDQ5LS4wMDA0OS4wMDEyMi0uMDAwOTguMDAxNzFsLTQuNzM2MzMsNC42MDM3NmMtLjI0 + ODA1LjI0MDIzLS4yNTI5My42MzY3Mi0uMDEyNy44ODM3OS4xMjMwNS4xMjU5OC4yODUxNi4xODk0 + NS40NDgyNC4xODk0NS4xNTcyMywwLC4zMTQ0NS0uMDU4NTkuNDM1NTUtLjE3Njc2bDQuMzE1MDYt + NC4xOTQyMSwxLjkzOTgyLDEuODg1NjJjLjEyMTA5LjExODE2LjI3ODMyLjE3Njc2LjQzNTU1LjE3 + Njc2LjE2MzA5LDAsLjMyNTItLjA2MzQ4LjQ0ODI0LS4xODk0NS4yNDAyMy0uMjQ3MDcuMjM1MzUt + LjY0MzU1LS4wMTI3LS44ODM3OWwtMS45MTQxOC0xLjg2MDcyLDEuNDc4ODgtMS40MzczOCwxLjkz + OTIxLDEuODg1MDFjLjEyMTA5LjExODE2LjI3ODMyLjE3Njc2LjQzNTU1LjE3Njc2LjE2MzA5LDAs + LjMyNTItLjA2MzQ4LjQ0ODI0LS4xODk0NS4yNDAyMy0uMjQ3MDcuMjM1MzUtLjY0MzU1LS4wMTI3 + LS44ODM3OWwtMS45MTM1Ny0xLjg2MDExLDEuNDc4MDMtMS40MzY3Ny43NTE5NS43MzA0N2MuMjQ3 + MDcuMjQwMjMuNjQyNTguMjM1MzUuODgzNzktLjAxMjcuMjQwMjMtLjI0NzA3LjIzNTM1LS42NDM1 + NS0uMDEyNy0uODgzNzlaIi8+PHBhdGggZD0ibTE0LjIyODUyLDI3LjM1NzQyYy0uOTkyMTksMC0x + Ljk4NDM4LS4zNzY5NS0yLjczOTI2LTEuMTMxODQtMS41MTE3Mi0xLjUxMTcyLTEuNTExNzItMy45 + Njk3My0uMDAwOTgtNS40ODE0NSwxLjUxMjctMS41MDk3NywzLjk3MDctMS41MDg3OSw1LjQ4MTQ1 + LDB2LjAwMDk4YzEuNTA5NzcsMS41MTA3NCwxLjUwOTc3LDMuOTY4NzUsMCw1LjQ3OTQ5LS43NTU4 + Ni43NTU4Ni0xLjc0ODA1LDEuMTMyODEtMi43NDEyMSwxLjEzMjgxWm0uMDAwOTgtNi40OTcwN2Mt + LjY3Mjg1LDAtMS4zNDQ3My4yNTU4Ni0xLjg1NjQ1Ljc2ODU1LTEuMDI0NDEsMS4wMjM0NC0xLjAy + NDQxLDIuNjg4NDgsMCwzLjcxMTkxLDEuMDI0NDEsMS4wMjQ0MSwyLjY4ODQ4LDEuMDIyNDYsMy43 + MTI4OSwwLDEuMDIyNDYtMS4wMjM0NCwxLjAyMjQ2LTIuNjg4NDgtLjAwMDk4LTMuNzEyODktLjUx + MTcyLS41MTE3Mi0xLjE4MzU5LS43Njc1OC0xLjg1NTQ3LS43Njc1OFoiLz48L3N2Zz4= + + description: | + With this plugin you can automatically import Keycloak users and groups into Red Hat Developer Hub for enterprise ready + authentication and authorization. Keycloak provides user federation, strong authentication, user + management, fine-grained authorization, and more. Keycloak has built-in support to connect to + existing LDAP or Active Directory servers. You can also implement your own provider if you have + users in other stores, such as a relational database. + + ## Implement Single-Sign On In Red Hat Developer Hub + + Users authenticate with Keycloak rather than individual applications. This means that your applications don't have to deal with + login forms, authenticating users, and storing users. Once logged-in to Keycloak, users don't have to login again to access a + different application. This also applies to logout. Keycloak provides single-sign out, which means users only have to logout + once to be logged-out of all applications that use Keycloak. + + After configuring the plugin successfully, the plugin imports the users and groups each time when started. After the first import + is complete, you can select the **User** kind in the software catalog to see a list of users. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + installation: | + # Keycloak backend plugin for Backstage + + The Keycloak backend plugin integrates Keycloak into Backstage. + + ## Capabilities + + The Keycloak backend plugin has the following capabilities: + + - Synchronization of Keycloak users in a realm + - Synchronization of Keycloak groups and their users in a realm + + ## For administrators + + ### Installation + + Install the Backstage package into the backend. When not integrating with a published package, clone the repository locally and add the Backstage as follows: + + ```console + yarn workspace backend add @backstage-community/plugin-catalog-backend-module-keycloak + ``` + + ### Configuration + + #### New Backend Configuration + + 1. Add the following configuration to the `app-config.yaml` file. The default schedule is a frequency of 30 minutes and a timeout of 3 minutes, please configure the schedule in the `app-config.yaml` as per your requirement. + + ```yaml title="app-config.yaml" + catalog: + providers: + keycloakOrg: + default: + baseUrl: https:// + loginRealm: ${KEYCLOAK_REALM} + realm: ${KEYCLOAK_REALM} + clientId: ${KEYCLOAK_CLIENTID} + clientSecret: ${KEYCLOAK_CLIENTSECRET} + schedule: # Optional (defaults to the configurations below if not provided); same options as in TaskScheduleDefinition + # supports cron, ISO duration, "human duration" as used in code + frequency: { minutes: 30 } # Customize this to fit your needs + # supports ISO duration, "human duration" as used in code + timeout: { minutes: 3 } # Customize this to fit your needs + ``` + + 1. Register the plugin in the `packages/backend/src/index.ts` file: + + ```ts title="packages/backend/src/index.ts" + const backend = createBackend(); + + /* highlight-add-next-line */ + backend.add( + import('@backstage-community/plugin-catalog-backend-module-keycloak'), + ); + + backend.start(); + ``` + + 1. Optional: To configure custom transformer function for user/group to mutate the entity generated by the catalog-backend-module-keycloak. Create a new backend module with the `yarn new` command and add your custom user and group transformers to the `keycloakTransformerExtensionPoint`. Then install this new backend module into your backstage backend. Below is an example of how the backend module can be defined: + + ```ts title="plugins//src/module.ts" + /* highlight-add-start */ + import { + GroupTransformer, + keycloakTransformerExtensionPoint, + UserTransformer, + } from '@backstage-community/plugin-catalog-backend-module-keycloak'; + + const customGroupTransformer: GroupTransformer = async ( + entity, + realm, + groups, + ) => { + /* apply transformations */ + return entity; + }; + const customUserTransformer: UserTransformer = async ( + entity, + user, + realm, + groups, + ) => { + /* apply transformations */ + return entity; + }; + /* highlight-add-end */ + + export const keycloakBackendModuleTransformer = createBackendModule({ + pluginId: 'catalog', + moduleId: 'keycloak-transformer', + register(reg) { + reg.registerInit({ + deps: { + /* highlight-add-start */ + keycloak: keycloakTransformerExtensionPoint, + /* highlight-add-end */ + }, + /* highlight-add-start */ + async init({ keycloak }) { + keycloak.setUserTransformer(customUserTransformer); + keycloak.setGroupTransformer(customGroupTransformer); + /* highlight-add-end */ + }, + }); + }, + }); + ``` + + *** + + **IMPORTANT** + + The `pluginId` for the module **MUST** be set to `catalog` to match the `pluginId` of the `catalog-backend-module-keycloak` or else the module will fail to initialize. + + *** + + Communication between Backstage and Keycloak is enabled by using the Keycloak API. Username/password or client credentials are supported authentication methods. + + The following table describes the parameters that you can configure to enable the plugin under `catalog.providers.keycloakOrg.` object in the `app-config.yaml` file: + + | Name | Description | Default Value | Required | + | ---------------- | ------------------------------------------------------------------ | ------------- | ---------------------------------------------------- | + | `baseUrl` | Location of the Keycloak server, such as `https://localhost:8443`. | "" | Yes | + | `realm` | Realm to synchronize | `master` | No | + | `loginRealm` | Realm used to authenticate | `master` | No | + | `username` | Username to authenticate | "" | Yes if using password based authentication | + | `password` | Password to authenticate | "" | Yes if using password based authentication | + | `clientId` | Client ID to authenticate | "" | Yes if using client credentials based authentication | + | `clientSecret` | Client Secret to authenticate | "" | Yes if using client credentials based authentication | + | `userQuerySize` | Number of users to query at a time | `100` | No | + | `groupQuerySize` | Number of groups to query at a time | `100` | No | + + When using client credentials, the access type must be set to `confidential` and service accounts must be enabled. You must also add the following roles from the `realm-management` client role: + + - `query-groups` + - `query-users` + - `view-users` + + ### Limitations + + If you have self-signed or corporate certificate issues, you can set the following environment variable before starting Backstage: + + `NODE_TLS_REJECT_UNAUTHORIZED=0` + + --- + + **NOTE** + The solution of setting the `NODE_TLS_REJECT_UNAUTHORIZED` environment variable is not recommended. + + --- + + packages: + - backstage-community-plugin-catalog-backend-module-keycloak + + # unused yet + # assets: + # type: icon + # filename: /img/keycloak.svg + + history: + added: '2023-05-15' diff --git a/catalog-entities/marketplace/plugins/ldap-catalog-integration.yaml b/catalog-entities/marketplace/plugins/ldap-catalog-integration.yaml new file mode 100644 index 0000000000..22c3d78670 --- /dev/null +++ b/catalog-entities/marketplace/plugins/ldap-catalog-integration.yaml @@ -0,0 +1,59 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: ldap-catalog-integration + namespace: rhdh + title: LDAP Catalog Integration + description: | + This is an extension module to the plugin-catalog-backend plugin, providing an `LdapOrgReaderProcessor` that + can be used to ingest organization data from an LDAP server. This processor is useful if you want to import + users and groups from your Active Directory or another LDAP compatible server. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - title: readme + url: https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-ldap/README.md + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - catalog + +spec: + author: Backstage Community + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Software Catalog # One category will show up on the tile view + + highlights: + - Software Catalog integration + + description: | + This is an extension module to the plugin-catalog-backend plugin, providing an LdapOrgReaderProcessor that can be used to ingest + organization data from an LDAP server. This processor is useful if you want to import users and groups from your Active Directory + or another LDAP compatible server. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-catalog-backend-module-ldap diff --git a/catalog-entities/marketplace/plugins/lighthouse.yaml b/catalog-entities/marketplace/plugins/lighthouse.yaml new file mode 100644 index 0000000000..80506b1809 --- /dev/null +++ b/catalog-entities/marketplace/plugins/lighthouse.yaml @@ -0,0 +1,57 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: lighthouse + namespace: rhdh + title: LightHouse + annotations: + extensions.backstage.io/pre-installed: 'true' # For plugins contained in the RHDH image + links: + - title: readme + url: https://github.com/backstage/community-plugins/tree/main/workspaces/lighthouse/plugins/lighthouse + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - analytics # Used for filtering + description: | + A frontend for lighthouse-audit-service, this plugin allows you to trigger Lighthouse audits on websites and track them over time. + Google's Lighthouse tool is a great resource for benchmarking and improving the accessibility, performance, SEO, and best practices of your website. + +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Analytics + + description: | + A frontend for lighthouse-audit-service, this plugin allows you to trigger Lighthouse audits on websites and track them over time. + + Google's Lighthouse tool is a great resource for benchmarking and improving the accessibility, performance, SEO, and best practices of your website. + + This plugin allows you to generate on-demand Lighthouse audits for websites, and to track the trends for the top-level categories of Lighthouse at a glance. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-community-plugin-lighthouse diff --git a/catalog-entities/marketplace/plugins/microsoft-graph-catalog-integration.yaml b/catalog-entities/marketplace/plugins/microsoft-graph-catalog-integration.yaml new file mode 100644 index 0000000000..dfad189b96 --- /dev/null +++ b/catalog-entities/marketplace/plugins/microsoft-graph-catalog-integration.yaml @@ -0,0 +1,58 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: microsoft-graph-catalog-integration + namespace: rhdh + title: Catalog Backend Module for Microsoft Graph + description: | + This is an extension module to the `plugin-catalog-backend` plugin, providing a `MicrosoftGraphOrgEntityProvider` + that can be used to ingest organization data from the Microsoft Graph API. + This provider is useful if you want to import users and groups from Entra Id (formerly Azure Active Directory) or Office 365. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - title: readme + url: https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/README.md + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - software-catalog + +spec: + author: Backstage Community + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Software Catalog # One category will show up on the tile view + highlights: + - Ingest organization data from the Microsoft Graph API + + description: | + This is an extension module to the `plugin-catalog-backend` plugin, providing a `MicrosoftGraphOrgEntityProvider` + that can be used to ingest organization data from the Microsoft Graph API. This provider is useful if you want to + import users and groups from Entra Id (formerly Azure Active Directory) or Office 365. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-catalog-backend-module-msgraph diff --git a/catalog-entities/marketplace/plugins/nexus-repository-manager.yaml b/catalog-entities/marketplace/plugins/nexus-repository-manager.yaml new file mode 100644 index 0000000000..071009c4d7 --- /dev/null +++ b/catalog-entities/marketplace/plugins/nexus-repository-manager.yaml @@ -0,0 +1,81 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: nexus-repository-manager + namespace: rhdh + title: Nexus Repository Manager + description: | + The Nexus Repository Manager Plugin for Backstage enables users to view information about build artifacts + stored in Sonatype Nexus Repository Manager directly within the Backstage interface. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - cicd + links: + - url: https://github.com/backstage/community-plugins/blob/main/workspaces/nexus-repository-manager/plugins/nexus-repository-manager/README.md + title: readme + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + + +spec: + author: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Container Image Registry + + highlights: + - View build artifacts stored in Nexus Repository Manager + - Display a list of build artifacts in the service entity page with + - Details include version, repository, repository type, manifest, etc. + + description: | + The Nexus Repository Manager Plugin for Backstage enables users to view information about build artifacts + stored in Sonatype Nexus Repository Manager directly within the Backstage interface. + + The plugin provides: + + * Build Artifacts Tab: Displays a list of build artifacts in the service entity page with details including: + * Version + * Repository + * Repository type + * Manifest + * Modified date + * Size + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + + icon: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfM184MCkiPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzNfODApIj4KICAgICAgPGNpcmNsZSBjeD0iNDgiIGN5PSI0OCIgcj0iNDgiIGZpbGw9IiMwMDk1OTYiIC8+CiAgICA8L2c+CiAgICA8cmVjdCB4PSI5IiB5PSI5IiB3aWR0aD0iNzgiIGhlaWdodD0iNzgiIGZpbGw9InVybCgjcGF0dGVybjApIiAvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxwYXR0ZXJuIGlkPSJwYXR0ZXJuMCIgcGF0dGVybkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNpbWFnZTBfM184MCIgdHJhbnNmb3JtPSJzY2FsZSgwLjAwMjc3Nzc4KSIgLz4KICAgIDwvcGF0dGVybj4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfM184MCI+CiAgICAgIDxyZWN0IHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgZmlsbD0id2hpdGUiIC8+CiAgICA8L2NsaXBQYXRoPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMV8zXzgwIj4KICAgICAgPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiBmaWxsPSJ3aGl0ZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8aW1hZ2UgaWQ9ImltYWdlMF8zXzgwIiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjM2MCIKICAgICAgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFXZ0FBQUZvQ0FZQUFBQjY1V0hWQUFBQUNYQklXWE1BQUc2NkFBQnV1Z0hXM3JFWEFBQVVwa2xFUVZSNG5PM2RnWEhjT0pZR1lQSnFBM0FJZGdaV0JDZG5ZR1ZnUlhCV0JMWWowR1FnWFFSeUJ0WkdZR2NnWldCbGdDdG8wWE85V2xraTJRVDdnZnkrcXFtYUduc2tFbUQvRFQ0Q1lBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURCYzMzcGJwWlJPQXh4R2VIM2YzMjY5RGRiRWRUOU02OWQ5c3dHZFV2clVkZDJYcnV2ZUJqaWNGdHgzWFhmUjkvMzNyVGRFeTF6M296VjkzVGNaMENtbHE2N3JQZ1U0bEJaZDkzMS92dlZHYUpIci9pQk5YdmZOQlhSSzZXUFhkVGNCRHFWbDUzM2ZYMis5RVZyaXVwOUZjOWQ5aXdGOTUvYnVZUGQ5Mzc5ci9CdzJ4WFUvaSthdSsvOEtjQXlEbFFjakx0TER2ZldRcVIydSs5azBkOTAzRmRCZDE3MEpjQXl3Tk5mOVJyVVcwQUNiMFZwQVB3UTRCbGlhNjM2ampLQzM2ZDdDbFhhVXZycmZlanRza1lEZXBvdXROMENEdm0yOUFiWklRRy9QdGRXRTdTbnpkODFkM3hnQnZSMzVGdm5NS3NKMmxiNDdVKzdZam45czRFeno3Znl2QU1keFZHck82MUR1ZnI2YngvN29mZGQxbHdHT281b3RCUFF2NGNUYXVLWWZGL0FFT0lxNmxEZ0FnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrQURCQ1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNHaUFvQVEwUWxJQUdDR29MKzBHekFTbWx2SG43bTNLbUQzM2ZiLzRsRGJUUENKcW1wWlErcFpUdXVxNzcyWFhkai9MUHovemY4cC9wWFZvbW9HbFNmdVZUU2ltSDhsWFhkVytmT1lmODM2N3kzL0Y2S0ZvbG9HbEtTdWx0U3VtbWpKVGZEemoyL0hkKzVQOG4vNzk2bTVZSWFKcVFVbnFUVXZwYVNoa2ZKeHp6eDFMNitKcC9sbDZuQlFLYThFb3RPUWZ6bDcwSGdWTzhLVC9qcC9vMExSRFFoRlhxekQ5ZXFETlB0YXRQLzFDZkpqSUJUVGlsbkhGVjZzdzFBL1MwMUtldmxEMklTRUFUU3FrejUybHpTNVlnOHUrNks3OGJ3aERRaEpCUytsam1NeDlhWjU3cXNUNWQ1azlQZVFnSnN4UFFIRldaTnBkTEdUY3oxNW1ueXNkd1UrclRwdVZ4VkFLYW95aDE1c3RTem9qNG9PNjBsRDB1MWFjNUZnSE40bEpLbjBzd2YyNmc5VCtYb0c3aFdGa1pBYzFpeXJTNUhNeVhSNm96VDVXUDliTFVwMDNMWXpFQ211cWVMTSt1V2RlOUxmL1U4dGF5Y1pZa29LbG1iM24yM2NUbDJVUGRkMTMzb2UvN3gzL3l2NWYvVnN2SDNiUTg5V2xxRXRCVVVaWlM3NmJOMWZMUWRkMUYzL2Z2K3I3L2UrU2MvejMvdC94bjVlL1U4cVVFdFdYalZDR2dtZFdUYlVCcmppNy82cm91Qi9OZmYvb0w1Yy9lbGI5Ynl4dmJtbEtMZ0dZV3BjNThOV0liMEtueVNQbWs3L3M4Y241MWRKei9UdjY3K2YrcFhKOSt2N2RzWEgyYVdRaG9EdkprRzlDYXQvcTVwbnhXNnN5algyZVYvNTlTbno2clhKLytaRnRUNWlLZ21XekdiVUJma2tmSjMwcWQrZnVoUHl6L2pGS2YvbGF4UG0xYlUyWWhvQmt0djZDMTBqYWdUMTJYY3Nic214aVZuM2xTZmtjdCs5dWExaXo3c0ZJQ21zSDJ0Z0g5V1hsNTltMlpObmZlOTMyMWNrVCsyZmwzbEdsNU5ldlRwMlUwYlZ0VFJoSFFETExRTnFBNWpNOUxuYmxtWVA2Yk1pMHZoL1Q1QXZWcDI1b3ltSURtUlh2THMydHZBL3F0bEROcWxoeGVWSDczU1RtV1d2YTNOVFV0anhjSmFKNjF0dzFvN2VYWjM4dDg1cTlEcHMzVlZxYmxmUzN6cHc5K0tQbUMzYkp4MjVyeVJ3S2FmN1BnTnFDL1NwMzVyR2FkZWFwU256NHI5ZW5SMC9wR3NLMHBmeVNnK2R0QzI0QStsRHJ6eVpKMTVxbEtmZnFrMUtkcmp2QnRhOHAvRU5BOEtyTXphbThEdWx1ZWZiUTY4MVRsbUpkWU5uNVorZ0lFTkkvaGZGbDVkc1p0Q2VaQnk3T2oybHMyL3E3eXRMeFBwVS9ZT0FHOWNlVUJWYTNiNnYxdFFNUFZtYWNxOWVuYTI1cCs5dkFRQVUyTmtmT3oyNEN1elFMYm1sb212bkVDbXYrZXVRV3VYOXNHZEczMnRqV2R1N1krZDkvUUdBSE5YSGJiZ0o2M1hHZWVxdFNuenhmWTFwUU5FZEFjNnFCdFFOZG13VzFOMlFBQnpWUVBlOHV6YTY2NGExSnBrNVBLMjVxeWNnS2FLZjdlQm5TTDVZeWg5cGFOMTk3V2xKVVMwSXhXZXh2UXRkbmIxaFJHRWRBQVFRbG9nS0FFTkVCUUFob2dLQUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1VnQVlJU2tBREJDV2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrQURCQ1dnQVlJUzBBQkJDV2lBb0FRMFFGQUNtdEZTU20rMDJqamFqQ2tFTkZQY3BaUSthYmxoU2x2ZHRYQ3N4Q0tnbVNLUEJxOVNTajlTU3FkYThIbTViWEliNWJZcWJRYWpDR2dPa2NNNWgzUU82N2RhOGw5eVcrUTJ5VzFUMmdnbUVkRE1JZC9DLzB3cGZkMXlyVFdmZTI2RDNCYWxUZUFnQXBxSG1Wb2dCL09YRXRRZnQ5YXE1WngvbGphWTYwdHFycjZoVVFLYWY4N2NBcm5VY1ZQcTArL1gzcnI1SEV1ZCthYWMrNXptN2hzYUk2QzVyalJTT3kyajZhczFsajFLT2VPcWpKcHIxSmtmU3Qrd1lRSjY0L3ErejBGd1ViRVZQcFZwZVYvWDB0TGxYTzRxMTVrdlN0K3dZUUthSE5KNXBIWmVzU1VlNjlNcHBidVdwK1dWYVhOM005ZVpuOHFoZkY3NmhJMFQwRHdxZ2ZDdTY3cnZGVnZrYlptVzk2T2xhWGxsMnR5UE1tMnU1bkhudGo4Unp1d0lhUDdXOS8xOTMvZG5YZGQ5NkxydVY4V1dPUzFsajh2STllbFNaNzRzNVl5YUkvL2MxaDl5MitjK3FQaDdhSXlBNWovMGZYL2I5LzFKcVUzWHJJTitqcnBzZkc5NTl1ZUt2K2FoMUpyenFQbTI0dStoVVFLYVArcjcvcTlTOXZpcllpdnRsbzMvakZDZkxuWG1ud3NzejM1czI5TEc4Q3dCell2eVRJSys3eTlLVU5jYzViMHY5ZW1iWTlTblM1MzVwdFNaYTg3ZnZpM0JiSllHcnhMUUc3QmJnbHhHcWZ0dWhvNWFTMzM2UTZsUDE2eVRmdHhOeTF1aVByMjNQUHV1L081YTdrdWQrY1BRT25NWnpkODg2YlBOTDZrbnFITEJqclhweldyeUV1UXl2ZTBsbzBldEpTUitUK2lQTWFyV3AvUFBIdEEyaC9vOWRnNzRialQveXUrOTIrS1MrbjN5SUJnZE10eHVDZkxJdGhvMU10dXRwcHZRSjJQTnVxM3BiaHZRQlk1NzFDckt2VHVkTVRheHBQNDU4aUFZSGZLNkdVSno5S2gxNHBmQkZBZHRhN3JiQm5TQjR4d2Rtak9NNWxlNXBQNGw4aUFZSGZLeW1jc09vMGV0QThzcGh4cGRNdWlXTGNtTUtqdk1QSnFmMURhdGtnZkI2SkRuN1pZZ1QyaWJJVWFOV3ZkdTAwT0U0WkpmR2lQTEdUVkg4MDB2cVI5S0hnU2pRLzdkYmdueWhEWVphK3FEcnFPVkV5S1hYUmI2QWt1dExha2ZTeDRFbzBQK1piY0VlVUpiSEdycUxmelQ2WDAxWEpWMldlckI1ZWlGTlF1TjVwOFRla245VlBJZ0dCM3kyQWFmRnhwOXZXVHFRN0RheC8xN29kOFI5U0hxYThkZGM5bjY0cmFRQnhhcU5HSnZDZkpsZ0RkRWo5Nk1mMiszdkc4VmordE41YmI1VmxZQkR0cHRib0ZOL2NmSTdYSVpaVWs5d3dqbzRCWmNnanpGYmpQK1FTT3pzbXo4NndMYm1zN3Rld25tcjBPWFo1YzJxYjJwL3hSSFhWTFBPQUk2cUFXWElCOXFOekliUEhQZ3liYW1rYmZYdkIrN0RlamVwdjRSN25SZXN1aVNlcVlSMEFHVkd1ZnVEZEd0R0wwWmY5blc5TjBDMjVxT3Rkc0c5TjNRYlVBWDNOUi9icnMzc1lmYjhoVUJIY3B1MFVMWjZyTG1oN3ptcVBWMDdNaHNvVzFOaHhxMURlaVRPNTJhdGQyYWZmYTJiUGs2NjVKNkRpZWdBOWpOR1M2anI1b2ZrTnZ5U3FVbFJxMWZ4bXpHditDMnBuOHllaHZRdlUzOWE5N3AvRDJhejMxWHVXMU95MTNRUVV2cTJhZzFUcXM1NXFxN0JlZFRSNTR6SEhsdTk3UHpseU12cVYrU2FiZkJyS2xESWkxQlhuQkZZcVJ0VFd0dEF6cUhWK3Y0MFpiVUg0T0FEbVlOSFJKOENYTFVmU3ZtWGgwNGRSdlFpSnN0aGQyaHJ6WUJIVXpMSFJKNUNmSXp4eHB5TS80WnZ0eU9zUTNvRUFlWEU1WmVVbi9Jc2M1RlFBZlRhb2NzdER4NzlCTGtWNDQ1N0diOEUwSnp5cGRCeUUzOUI3Yk5FdGZhMFplTkMraGdXdXVReXR1QTdxdTIyR0Roa3N6Y1pZY0k1WlEvcVZZeW1QaG1saW1PdXEycGdBNm1sUTZKL05EdGdIT0svUDYrcXlkQi9UdndOcUJWMzdQNDVIekNQTlNzZEg0Q09wTG9IYkwya2N0YVp3NUVmVGc2NC9rMWZ5ZjN3bm1OSmFCcmlkd2hHNnY5TFRreXF6WnpZTUh5VFlpTmlWcDhGdkxLK1Fqb1NDSjJ5TEVYTFJ4VHErY2VlWUZPYldzNmR3RWRUS1FPV1h0OWI0eVc3aDdXTm9xY2FnM1BTUVIwTUJFNnhBcXU1MFd2djYrMURudW9sdXZ2QWpxWVkzZElxVmx1ZmcrRWx5dzRNcnNhY1V4TFRadHJkb09oQlFjZHN6MVRFTkRCSExORFN2RFV2b0REck5JNjFFSWoxbGREZW9Gd1B1cGM0RGt0TkFmODkxeGZaTjVKeUw2cmltL0kyRzBEZWo1MHE4dm9GdHFNLzlOTEg3anlaN1Zxd2FNMzlZK3ViUGw2WG5sYjB6ZmxzOFFBQW5xQThvMWY0NXMzYjhLZVF6bS9WdWxYaFo5L2RBdHN4djgvRS8vc0VLTTI5VzlOdmhiek5abXZ6VW92Q2ppMTMvUXdBbnFZdWVmaVBwUTNSSjhNZlVOMHkvWTI0Njh4TW52cFFlcmNEMWwzZHpxRE4vVnZXYmsyVDhxMU92ZjVSbnNCY2tnQ2VwZzVMNmJ2NVVNKytBM1JhN0UzTWpzTC9yTFlwL0t4bnEzNVR1ZFA5dDdFZmpMem05Z0Y5QUFDZWptL3hyNGhlcTM2dnY5ZTZ0TTFSbVp6ZXJ6VEtYWG1PY09wT1UvZXhMNnBMNmxqRXREMVBaUTY4OGxhSGliTlpXOWtGckhNYzcyNzB3bHdMR0dVaDc4bnBUNjlxVHZBWXhEUWRYMHJENU5XWDJlZXFvek16c3ZJTE1JWDJHMjUwem5mK3AzT1M4bzF2YnNMb3BKL2FOaHF6clorV3p4R3VidTR6WHM0SExFK3VhdVJNMEI1aHBJWHVPU1N4NDAybTU4UmREMXUvNlk1WnJ2cHMybTBXeVVDR2lBb0FRMFFsSUFHQ0VwQUF3UWxvQUdDRXRBQVFRbG9nS0FFTkVCUUFob2dLQUVORUpTQUJnaEtRQU1FSmFBQmdoTFFBRUVKYUlDZ0JEUkFVQUlhSUNnQkRSQ1VnQVlJU2tBREJDV2dBWUlTMEFCQkNXaUFvQVEwUUZBQ0dpQW9BUTBRbElBR0NFcEFBd1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkNVZ0FZSVNrRFhjNWxTT2wzcnlkV1FVdnJhZGQzN0l4N0MrM0lNREZTdThVdnRWWWVBcmljSHpZK1UwbFZLNmUxYVQzSU9LYVdQS2FXN3J1dStkRjMzNW9pSGtuLzNsM3dzK1ppT2VCemg1V3M2WDl2NUdqL3lsK3FxQ2VqNlBuVmQ5ek9QekZKS3h3eWZjRkpLZWNTYVArQTNYZGRGK2hMTHgzS1RqeTBmWTREakNTTmZ3K1V1NDJlNXRxbElRQy9qVFJrZDVxRGUvRVZkUHVTWDVVTWV1UXgwV3ZyczBwZnJZNzk5S24xMjdEdWR6UkRRd3p6TTlIUHl5T3hxeXlPemxOTG5ydXR5T2VOemdNTVo2dkdZeTdGdnp0NmR6dFdNZHpwemZhWldUVUFQY3p2eno5dU56SzYyTWpMTEQ1TktuZmx5NXRIWHI0bC9OdGFiOHVEM2Jpc1BmOHVkemxXbE81MjVQMU9ySktBSDZQcytmOUR2Sy96b1QyVmt0dHFaQStWaDBvL3lNS2xHbmZsL0ovN1pWRy9Mdzk4ZmEzNzRXNjdKdTBwMTV2dnltZUlWQW5xNGkwby9kNVV6Qi9ZZUp0MVZyRFBuRC9uMUMzOSsvY29JK3hDbnV5L1hOZDBGTFRTanB0Wm5pV01xdDhsanpSWU8rU0hKaE44L1Z2TWpzOUpPdnl1MzA5MlFPbjZwbjk1VlBwYmZyVC84M2QzcFZHNm5OR2M3SFRzUENOZ2g1UmgrVGppT3NacWJPUkMxYlhhelJoWTRycCt0QlVETGJTT2dnNG5VSVF1TkVuKzNNSE5ndDJpaGNsdWtRMmUvN0dZakxIQ2NUU3hPeXRmV1F0ZHdsYnNMQVIxTXRBN1orc2hzVjJkZXFKd3hXMzErVjJldGZNeS9vOWFuMTNJWEtLQ0RpZG9oQzlidmJxS016TW9keENJaFYvRWNsdnB5Q1ZHZkx0ZnBUZVh6VFVzOVJ4SFF3VVR2a04xYzN3bkhPTmJSUm1ZTGx3bXFuK051cnU4QzUzTzB4VWw3ZHpxMUxUcEhYRUFIMDBxSHRGN2IrOE01TFJsa3graXowelY5OGV5ZDEycWZsUWpvWUZycWtEVUYycFpLQVdzbzNYUXIvc0o1NWh6SEV0QzF0TmdoTGM4YzJPckR0RllmZm5ZTnphaVo2VndGZENRdGQwaExZYmZGaDU3UGFlbWhXc3RmS2xNSjZHRFcwQ0dSUDBSYm56YjRKOUducFMzNTViOVlvdzhnb0lOWlM0ZEV2QTFkNDRQTnVVVjc0TGIxaFRjQ09waTFkVWlFQnprTFRnMWN4YWIzQzk1bC9ISEsydHBuMUF3bG9JTlphNGNzT0RMN3V2YzdWN1ZvWVduSHF0TXZWQ0pyNGs1SFFBZXo1ZzVaZURIQlVVZUFhN0x3SGNpcUYwR05KYUNEMlVLSExEaXlyYVdKRFo3bXRsQU52NmJRTTJxZXM0VThzR0YvTUgzZjU3ZE5uSFZkOTZIaVp2TzE1QTN5My9WOS8xZUxiWCtJY3M3dlhubUJRRVQ1R3Z1UXI3bDg3VFYyN0tzbm9JUHErLzYyNy91VDh2YUo2Qy9Zek8rWE8rbjcvcnp2KzgyK0REU2ZlMjZEM0JZTnZITXY5OU5GdnNieXRSYmdlSGlHZ0E1dWIyUVdjVlNhUjF4NTVQWEJPK2IrWDI2TDNDYTViU3E5eS9KUWYyMzFUcWMxQXJvQlpXUjJVWUk2d21nbmo3Nis5WDJmUCtUZkF4eFBTTGx0Y2h2bHRncHlGM1JiZ3ZsaXkzYzZMUkhRRFNuMTZRK2xQbjJza2RsMUtXZXM5azNrY3l0dGRYTEUrdlI5cVROL1VHZHVpNEJ1VUtsUEx6MHl1eTBmOG5NZjh2SEtsK3Q1K1hKZDZpNW8vMDVIblptNnpIdjhUd3VzS2d2elJwQTFXV0JiMDZOdEE3b1UwK3dJci9MTWdXK2xuTkhhMUxId1NwdWVsRGFla3hrMUhJY1I5T3RtMnRtc3VVVUxMWnRwY1ZLWWJVQ1hZZ1JOYzhxc2lwT0o5V21MRm83Z3dNVkpEM3QzT21iVWNEeEcwT09NMk5aMGs4dXpveHF4YkR6a05xQkxrUWZCNkpCcFh0alc5UGRhdGdGZG03MXRUWjhMNnREYmdDNWxDM253andESFFHVmxpdFZ0R1czdGo3aCtlWkFVVSttWGk1UlNMbC9zdjNUaFh2bHBPd1QwaHBRUHRnOTNRMHBRbThPOFVSNFNBZ1Fsb0FHQ0V0QUFRUWxvZ0tBRU5FQlFBaG9nS0FFTkVKU0FCZ2hLUUFNRUphQUJnaExRQUVFSmFJQ2dCRFJBVUFJYUlDZ0JEUkRVRnZhRGZwOVNDbkFZeDFVMjdXY2x2RkhsMGZzQmY2ZHBXd2pveXdESGNIUXBwYnhSLzRVWGk3WXRwZlNwNjdvdlQ5Nk13MG9wY1d4SC9rRG5WL3RmYmIwaFdsWDY3a280YjRlQTNwNVBaUlJHUTFKS0gzUGY2Yk50RWREYjlHWHJEZEFncGJvTkV0RGI5TlpEcG5hVXZsTFcyQ0FCRGZHOTBVZmJKS0FCZ2hMUUVOK0RQdHFtdnJXelRpbmRxY2NkN0w3diszZU5uOE9tdU81bjBkeDEzK0lJK2x1QVkyamR4ZFlib0VHdSs4TTFkOTAzRjlCOTMxOTNYWGNkNEZCYWRXMDFZWHRjOXdkcjhycHZzZ2JkOS8xNTEzVm4rWllsd09HMElyZlZXV2s3R3VTNm42VHA2NzY1R3ZSVDV2TU9ZN09rZFhIZEQrTzZCd0FBQUFBQUFBQUFBQUFBWVBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOaU1ydXYrRC9XWnUyRmNZZmExQUFBQUFFbEZUa1N1UW1DQyIgLz4KICA8L2RlZnM+Cjwvc3ZnPgo= + + packages: + - backstage-community-plugin-nexus-repository-manager + + assets: + - type: image + filename: img/-repository-manager.svg + originUri: https://github.com/backstage/backstage/blob/master/microsite/static/img/nexus-repository-manager.svg + + history: + added: '2023-10-25' diff --git a/catalog-entities/marketplace/plugins/notifications-email.yaml b/catalog-entities/marketplace/plugins/notifications-email.yaml new file mode 100644 index 0000000000..4b2be69795 --- /dev/null +++ b/catalog-entities/marketplace/plugins/notifications-email.yaml @@ -0,0 +1,59 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: notifications-email + namespace: rhdh + title: Notifications Email Processor + description: 'Adds support for sending Red Hat Developer Hub notifications as emails to users.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: [] + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/notifications-backend-module-email + - title: Backstage Documentation + url: https://backstage.io/docs/notifications/ +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Notifications + + description: | + Adds support for sending Red Hat Developer Hub notifications as emails to users. + + Supports sending emails using SMTP, SES, azure, sendmail, or stream (for debugging purposes). + + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + highlights: + - Notifications as emails + - SMTP, SES, Azure, Sendmail support + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - backstage-plugin-notifications-backend-module-email diff --git a/catalog-entities/marketplace/plugins/notifications.yaml b/catalog-entities/marketplace/plugins/notifications.yaml new file mode 100644 index 0000000000..511618c9c2 --- /dev/null +++ b/catalog-entities/marketplace/plugins/notifications.yaml @@ -0,0 +1,74 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: notifications + namespace: rhdh + title: Notifications + description: 'Notifications System provides a way for plugins and external services to send notifications to Red Hat Developer Hub users' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: [] + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/backstage/tree/master/plugins/notifications + - title: Backstage Documentation + url: https://backstage.io/docs/notifications/ +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Notifications + + description: | + The Notifications System provides a way for plugins and external services to send notifications to Red Hat Developer Hub users. These notifications are displayed in the dedicated page of the Red Hat Developer Hub frontend UI or by frontend plugins per specific scenarios. Additionally, notifications can be sent to external channels (like email) via "processors" implemented within plugins. + + Notifications can be optionally integrated with the signals (a push mechanism) to ensure users receive them immediately. + + + Notifications are messages sent to either individual users or groups. They are not intended for inter-process communication of any kind. + + There are two basic types of notifications: + + - Broadcast: Messages sent to all users of Backstage. + - Entity: Messages delivered to specific listed entities, such as Users or Groups. + + Example of use-cases: + + - System-wide announcements or alerts + - Notifications for component owners: e.g., build failures, successful deployments, new vulnerabilities + - Notifications for individuals: e.g., updates you have subscribed to, new required training courses + - Notifications pertaining to a particular entity in the catalog: A notification might apply to an entity and the owning team. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + highlights: + - System-wide announcements or alerts + - Notifications for component owners + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - backstage-plugin-notifications + - backstage-plugin-notifications-backend diff --git a/catalog-entities/marketplace/plugins/openshift-cluster-manager.yaml b/catalog-entities/marketplace/plugins/openshift-cluster-manager.yaml new file mode 100644 index 0000000000..e53cf01d33 --- /dev/null +++ b/catalog-entities/marketplace/plugins/openshift-cluster-manager.yaml @@ -0,0 +1,70 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: openshift-cluster-manager + namespace: rhdh + title: OpenShift Cluster Manager + description: The DEPRECATED Open Cluster Management (OCM) plugin integrates your Red Hat Developer instance with the MultiClusterHub and MultiCluster engines of OCM. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: [] + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/ocm/plugins/ocm +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + publisher: Red Hat + # https://issues.redhat.com/browse/RHDHPLAN-265 - OCM is deprecated in 1.8; will be removed in 1.10 + lifecycle: deprecated + + categories: + - Monitoring + + description: | + The DEPRECATED Open Cluster Management (OCM) plugin integrates your Backstage instance with the `MultiClusterHub` and `MultiCluster` engines of OCM. + + This deprecated plugin will be removed in a future release. You should migrate to a replacement as soon as possible. + + The OCM plugin has the following capabilities: + + - All clusters represented as `ManagedCluster` in `MultiClusterHub` or MCE are discovered and imported into the Backstage catalog, such as: + - Entity is defined as `kind: Resource` with `spec.type` set to `kubernetes-cluster`. + - Links to the OpenShift Container Platform (OCP) console, OCM console, and OpenShift Cluster Manager are provided in `metadata.links`. + - Shows real-time data from OCM on the Resource entity page, including: + - Cluster current status (up or down) + - Cluster nodes status (up or down) + - Cluster details (console link, OCP, and Kubernetes version) + - Details about available compute resources on the cluster + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + # Images are base 64 encoded SVGs + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - backstage-community-plugin-ocm + - backstage-community-plugin-ocm-backend + + history: + added: '2023-05-15' diff --git a/catalog-entities/marketplace/plugins/pagerduty.yaml b/catalog-entities/marketplace/plugins/pagerduty.yaml new file mode 100644 index 0000000000..4bc17fd388 --- /dev/null +++ b/catalog-entities/marketplace/plugins/pagerduty.yaml @@ -0,0 +1,75 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: pagerduty + namespace: rhdh + title: PagerDuty + description: | + Bring the power of PagerDuty to Backstage, reduce cognitive load, improve service visibility and enforce incident management best practices. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - url: https://pagerduty.github.io/backstage-plugin-docs/index.html + title: PagerDuty Documentation + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/pagerduty-backstage-plugin + tags: + - monitoring + - errors + - alerting + - observability + +spec: + author: PagerDuty + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Monitoring + highlights: + - Incident Management + - Service Visibility + + description: | + Bring the power of PagerDuty to Backstage, reduce cognitive load, improve service visibility and enforce incident management best practices. + + [PagerDuty](https://pagerduty.github.io/backstage-plugin-docs/index.html) is transforming critical work for modern business. + Our powerful and unique platform makes sure you can + take the right action, when seconds matter. From developers and reliability engineers to customer success, security + and the C-suite, we empower teams with the time and efficiency to build the future. + + The plugin was initially started by Backstage and then transitioned into PagerDuty. + + The plugin currently offers a PagerDuty card for: + + * Displaying relevant PagerDuty information about an entity within Bacsktage, such as active incidents or recent changes. + * Quickly check who is on call for a service. + * Trigger an incident to the currently on call responder(s) for a service. + * Easily map PagerDuty Services to Backstage Entities. + + The scope for the plugin is quite limited at the time but we are working on bringing new features based on customer feedback. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - pagerduty-backstage-plugin + - pagerduty-backstage-plugin-backend diff --git a/catalog-entities/marketplace/plugins/pingidentity.yaml b/catalog-entities/marketplace/plugins/pingidentity.yaml new file mode 100644 index 0000000000..73a74c1b5d --- /dev/null +++ b/catalog-entities/marketplace/plugins/pingidentity.yaml @@ -0,0 +1,53 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: pingidentity + namespace: rhdh + title: PingIdentity + description: 'The Ping Identity backend plugin integrates Ping Identity into Backstage.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - identity-management + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/backstage-community-plugin-catalog-backend-module-pingidentity-dynamic +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Identity and Access Management + + highlights: + - Synchronization of Ping Identity users in an environment + - Synchronization of Ping Identity groups and their users in the environment + + description: | + The Ping Identity backend plugin integrates Ping Identity into Backstage. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + history: + added: '2023-05-15' + + packages: + - backstage-community-plugin-catalog-backend-module-pingidentity diff --git a/catalog-entities/marketplace/plugins/quay-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/quay-scaffolder-actions.yaml new file mode 100644 index 0000000000..e5066e11cb --- /dev/null +++ b/catalog-entities/marketplace/plugins/quay-scaffolder-actions.yaml @@ -0,0 +1,107 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: quay-scaffolder-actions + namespace: rhdh + title: Quay Software Template Actions + description: | + Adds a set of actions for Quay to the Software Template system. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - scaffolder # Used for filtering +spec: + authors: + - name: Red Hat + url: https://redhat.com + + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Scaffolder # One category will show up on the tile view + highlights: + - Adds a set of actions for Quay to the Software Template system. + + description: | + This plugin ships as enabled by default in Red Hat Developer Hub. + + Adds a set of actions for Quay to the Software Template system, specifically + the ability to create a Quay repository dusing the execution of a software template. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJ1dWlkLTllZTli + NTNhLWEwMWItNDJiMi1iZWE2LWRhNTFjMzMxY2I3YSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn + LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzggMzgiPjxkZWZzPjxzdHlsZT4udXVpZC0yYTY4Yzk0 + MC1iZTZjLTQ2NGItYTJlMC1mZjk5ZTdlNmVhNDN7ZmlsbDojZTAwO30udXVpZC00MTJlY2Q0NS02 + ODgwLTQzYjEtOGQ2My0wNTY4NWI0OTA0Njd7ZmlsbDojZmZmO30udXVpZC01YTU3NDgyYy05ODcy + LTQxYTUtOWIwNS05NzhjNzQ4MTcwNTF7ZmlsbDojNGQ0ZDRkO308L3N0eWxlPjwvZGVmcz48cmVj + dCB4PSIxIiB5PSIxIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHJ4PSI5IiByeT0iOSIvPjxwYXRo + IGNsYXNzPSJ1dWlkLTVhNTc0ODJjLTk4NzItNDFhNS05YjA1LTk3OGM3NDgxNzA1MSIgZD0ibTI4 + LDIuMjVjNC4yNzMzOCwwLDcuNzUsMy40NzY2Miw3Ljc1LDcuNzV2MThjMCw0LjI3MzM4LTMuNDc2 + NjIsNy43NS03Ljc1LDcuNzVIMTBjLTQuMjczMzgsMC03Ljc1LTMuNDc2NjItNy43NS03Ljc1VjEw + YzAtNC4yNzMzOCwzLjQ3NjYyLTcuNzUsNy43NS03Ljc1aDE4bTAtMS4yNUgxMEM1LjAyOTQyLDEs + MSw1LjAyOTQyLDEsMTB2MThjMCw0Ljk3MDU4LDQuMDI5NDIsOSw5LDloMThjNC45NzA1OCwwLDkt + NC4wMjk0Miw5LTlWMTBjMC00Ljk3MDU4LTQuMDI5NDItOS05LTloMFoiLz48cGF0aCBjbGFzcz0i + dXVpZC0yYTY4Yzk0MC1iZTZjLTQ2NGItYTJlMC1mZjk5ZTdlNmVhNDMiIGQ9Im0xNS40OTkwMiwy + OS41MjUzOWMtLjEwMjU0LDAtLjIwNjA1LS4wMjUzOS0uMzAyNzMtLjA3OTEtLjMwMTc2LS4xNjY5 + OS0uNDEwMTYtLjU0Nzg1LS4yNDIxOS0uODQ5NjFsMy41LTYuMzAwNzhjLjE2NjAyLS4zMDE3Ni41 + NDU5LS40MTIxMS44NDk2MS0uMjQyMTkuMzAxNzYuMTY2OTkuNDEwMTYuNTQ3ODUuMjQyMTkuODQ5 + NjFsLTMuNSw2LjMwMDc4Yy0uMTEzMjguMjA1MDgtLjMyNzE1LjMyMTI5LS41NDY4OC4zMjEyOVoi + Lz48cGF0aCBjbGFzcz0idXVpZC00MTJlY2Q0NS02ODgwLTQzYjEtOGQ2My0wNTY4NWI0OTA0Njci + IGQ9Im0xNS41MDA5OCwyOS41MjUzOWMtLjIxOTczLDAtLjQzMjYyLS4xMTYyMS0uNTQ2ODgtLjMy + MTI5bC01LjUtOS45MDAzOWMtLjEwNTQ3LS4xODg0OC0uMTA1NDctLjQxODk1LDAtLjYwNzQybDUu + NS05LjkwMDM5Yy4xNjY5OS0uMzAwNzguNTQ1OS0uNDExMTMuODQ5NjEtLjI0MjE5LjMwMTc2LjE2 + Njk5LjQxMDE2LjU0Nzg1LjI0MjE5Ljg0OTYxbC01LjMzMTA1LDkuNTk2NjgsNS4zMzEwNSw5LjU5 + NjY4Yy4xNjc5Ny4zMDE3Ni4wNTk1Ny42ODI2Mi0uMjQyMTkuODQ5NjEtLjA5NjY4LjA1MzcxLS4y + MDAyLjA3OTEtLjMwMjczLjA3OTFaIi8+PHBhdGggY2xhc3M9InV1aWQtMmE2OGM5NDAtYmU2Yy00 + NjRiLWEyZTAtZmY5OWU3ZTZlYTQzIiBkPSJtMjIuNDk5MDIsMjkuNTI1MzljLS4xMDI1NCwwLS4y + MDYwNS0uMDI1MzktLjMwMjczLS4wNzkxLS4zMDE3Ni0uMTY2OTktLjQxMDE2LS41NDc4NS0uMjQy + MTktLjg0OTYxbDUuNS05LjkwMDM5Yy4xNjYwMi0uMzAwNzguNTQ1OS0uNDExMTMuODQ5NjEtLjI0 + MjE5LjMwMTc2LjE2Njk5LjQxMDE2LjU0Nzg1LjI0MjE5Ljg0OTYxbC01LjUsOS45MDAzOWMtLjEx + MzI4LjIwNTA4LS4zMjcxNS4zMjEyOS0uNTQ2ODguMzIxMjlaIi8+PHBhdGggY2xhc3M9InV1aWQt + MmE2OGM5NDAtYmU2Yy00NjRiLWEyZTAtZmY5OWU3ZTZlYTQzIiBkPSJtMTkuMDAwOTgsMTYuMDI1 + MzljLS4yMTk3MywwLS40MzM1OS0uMTE2MjEtLjU0Njg4LS4zMjEyOWwtMy41LTYuMzAwNzhjLS4x + Njc5Ny0uMzAxNzYtLjA1OTU3LS42ODI2Mi4yNDIxOS0uODQ5NjEuMzAzNzEtLjE2ODk1LjY4MzU5 + LS4wNTg1OS44NDk2MS4yNDIxOWwzLjUsNi4zMDA3OGMuMTY3OTcuMzAxNzYuMDU5NTcuNjgyNjIt + LjI0MjE5Ljg0OTYxLS4wOTY2OC4wNTM3MS0uMjAwMi4wNzkxLS4zMDI3My4wNzkxWiIvPjxwYXRo + IGNsYXNzPSJ1dWlkLTQxMmVjZDQ1LTY4ODAtNDNiMS04ZDYzLTA1Njg1YjQ5MDQ2NyIgZD0ibTIy + LjUwMDk4LDI5LjUyNTM5Yy0uMjE5NzMsMC0uNDMyNjItLjExNjIxLS41NDY4OC0uMzIxMjlsLTUu + NS05LjkwMDM5Yy0uMTA1NDctLjE4ODQ4LS4xMDU0Ny0uNDE4OTUsMC0uNjA3NDJsNS41LTkuOTAw + MzljLjE2NjAyLS4zMDA3OC41NDU5LS40MTExMy44NDk2MS0uMjQyMTkuMzAxNzYuMTY2OTkuNDEw + MTYuNTQ3ODUuMjQyMTkuODQ5NjFsLTUuMzMxMDUsOS41OTY2OCw1LjMzMTA1LDkuNTk2NjhjLjE2 + Nzk3LjMwMTc2LjA1OTU3LjY4MjYyLS4yNDIxOS44NDk2MS0uMDk2NjguMDUzNzEtLjIwMDIuMDc5 + MS0uMzAyNzMuMDc5MVoiLz48cGF0aCBjbGFzcz0idXVpZC0yYTY4Yzk0MC1iZTZjLTQ2NGItYTJl + MC1mZjk5ZTdlNmVhNDMiIGQ9Im0yOC4wMDA5OCwxOS42MjVjLS4yMTk3MywwLS40MzI2Mi0uMTE2 + MjEtLjU0Njg4LS4zMjEyOWwtNS41LTkuOTAwMzljLS4xNjc5Ny0uMzAxNzYtLjA1OTU3LS42ODI2 + Mi4yNDIxOS0uODQ5NjEuMzAzNzEtLjE2ODk1LjY4MTY0LS4wNTg1OS44NDk2MS4yNDIxOWw1LjUs + OS45MDAzOWMuMTY3OTcuMzAxNzYuMDU5NTcuNjgyNjItLjI0MjE5Ljg0OTYxLS4wOTY2OC4wNTM3 + MS0uMjAwMi4wNzkxLS4zMDI3My4wNzkxWiIvPjwvc3ZnPg== + + packages: + - backstage-community-plugin-scaffolder-backend-module-quay diff --git a/catalog-entities/marketplace/plugins/quickstart.yaml b/catalog-entities/marketplace/plugins/quickstart.yaml new file mode 100644 index 0000000000..1e1408a52d --- /dev/null +++ b/catalog-entities/marketplace/plugins/quickstart.yaml @@ -0,0 +1,50 @@ +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: quickstart + namespace: rhdh + title: Quickstart + description: "Guided quickstarts to help users discover and set up key features in Red Hat Developer Hub." + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - onboarding + - customization + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-quickstart +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Customization + + highlights: + - Provide in-product quickstarts and guidance + + description: | + Quickstart provides in-product, contextual onboarding flows that help users set up and discover + features in Red Hat Developer Hub. It includes a help button in the global header and a drawer + provider to surface guidance when needed. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + + packages: + - rhdh-backstage-plugin-quickstart + + diff --git a/catalog-entities/marketplace/plugins/rbac.yaml b/catalog-entities/marketplace/plugins/rbac.yaml new file mode 100644 index 0000000000..da09fbafec --- /dev/null +++ b/catalog-entities/marketplace/plugins/rbac.yaml @@ -0,0 +1,61 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: rbac + namespace: rhdh + title: Role Based Access Control [RBAC] + description: | + The RBAC plugin offers a streamlined user interface for effectively managing permissions in your Backstage instance. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - rbac +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Security + + highlights: + - Manage access control to your Backstage instance. + - Assign permissions to users and groups. + - Includes fine-grained conditional controls + + description: | + The RBAC plugin offers a streamlined user interface for effectively managing permissions in your Backstage instance. It allows you to assign + permissions to users and groups, empowering them to view, create, modify and delete Roles, provided they have the necessary permissions. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + # Images are base 64 encoded SVGs (below is a blank square from the mockup) + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + + packages: + - backstage-community-plugin-rbac diff --git a/catalog-entities/marketplace/plugins/redhat-argocd.yaml b/catalog-entities/marketplace/plugins/redhat-argocd.yaml new file mode 100644 index 0000000000..98293839a1 --- /dev/null +++ b/catalog-entities/marketplace/plugins/redhat-argocd.yaml @@ -0,0 +1,113 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: redhat-argocd + namespace: rhdh + title: Red Hat Argo CD + description: 'This plugin provides a visual overview of the application’s status, deployment details, commit message, author of the commit, container image promoted to environment and deployment history.' + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - cicd + - argocd + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/redhat-argocd +spec: + categories: + - CI/CD + + author: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + description: | + You can use the Argo CD plugin to visualize the Continuous Delivery (CD) workflows in OpenShift GitOps. + This plugin provides a visual overview of the application's status, deployment details, commit message, + author of the commit, container image promoted to environment and deployment history. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details on the configuration required. + + highlights: + - Visual overview of the application's status + - Deployment details + - Argo CD Rollouts + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJ1dWlkLTk5YTZi + NWRmLTcwNjMtNDJjMS1iMWNjLTg5ZGUzODFlMDRiOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn + LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzggMzgiPgo8ZGVmcz48c3R5bGU+LnV1aWQtZmJjOGEz + NTgtNGVlNC00MTI3LTk0MGItMzc3MzIwYWYzMjdke2ZpbGw6I2VkMDAwMDt9LnV1aWQtYjNjNmFm + ZTItM2RlOS00ZTFlLTk5ZmYtMDZkNGRkMGNiYzZhe2ZpbGw6I2ZmZjt9LnV1aWQtY2ZjMWViNjYt + MGYyOS00MjBiLWJmMzMtZTc0YjkyNDZiMTA0e2ZpbGw6I2UwZTBlMDt9PC9zdHlsZT48L2RlZnM+ + PHBhdGggY2xhc3M9InV1aWQtYjNjNmFmZTItM2RlOS00ZTFlLTk5ZmYtMDZkNGRkMGNiYzZhIiBk + PSJtMjguMDAwMDEsMzdjNC45NzA1NiwwLDktNC4wMjk0NCw5LTlWMTBjMC00Ljk3MDU3LTQuMDI5 + NDQtOS05LTlIMTAuMDAwMDFDNS4wMjk0NSwxLDEuMDAwMDEsNS4wMjk0MywxLjAwMDAxLDEwdjE4 + YzAsNC45NzA1Niw0LjAyOTQ0LDksOSw5aDE4WiIvPjxwYXRoIGNsYXNzPSJ1dWlkLWNmYzFlYjY2 + LTBmMjktNDIwYi1iZjMzLWU3NGI5MjQ2YjEwNCIgZD0ibTI4LDIuMjVjNC4yNzMzMiwwLDcuNzUs + My40NzY2Miw3Ljc1LDcuNzV2MThjMCw0LjI3MzMyLTMuNDc2NjgsNy43NS03Ljc1LDcuNzVIMTBj + LTQuMjczMzIsMC03Ljc1LTMuNDc2NjgtNy43NS03Ljc1VjEwYzAtNC4yNzMzOCwzLjQ3NjY4LTcu + NzUsNy43NS03Ljc1aDE4bTAtMS4yNUgxMEM1LjAyOTQyLDEsMSw1LjAyOTQyLDEsMTB2MThjMCw0 + Ljk3MDU4LDQuMDI5NDIsOSw5LDloMThjNC45NzA1OCwwLDktNC4wMjk0Miw5LTlWMTBjMC00Ljk3 + MDU4LTQuMDI5NDItOS05LTloMFoiLz48cGF0aCBjbGFzcz0idXVpZC1mYmM4YTM1OC00ZWU0LTQx + MjctOTQwYi0zNzczMjBhZjMyN2QiIGQ9Im0yOCwxNy4zNzVjLS40OTY1OCwwLS45NTY1NC4xNDY0 + OC0xLjM1MzAzLjM4NzIxbC0xLjQwOTE4LTEuNDA5MThjLjI0MDcyLS4zOTY0OC4zODcyMS0uODU2 + NDUuMzg3MjEtMS4zNTMwMywwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42 + MjUsMS4xNzc3My0yLjYyNSwyLjYyNWMwLDEuMjMwODMuODU0OTgsMi4yNTkyOCwyLDIuNTQxNXY0 + LjkxNjk5Yy0xLjE0NTAyLjI4MjIzLTIsMS4zMTA2Ny0yLDIuNTQxNSwwLDEuNDQ3MjcsMS4xNzc3 + MywyLjYyNSwyLjYyNSwyLjYyNXMyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtMS4yMzA4My0u + ODU0OTgtMi4yNTkyOC0yLTIuNTQxNXYtNC45MTY5OWMuMjYwNzQtLjA2NDIxLjUwNDI3LS4xNjc5 + Ny43MjgwMy0uMzAzNzFsMS40MDkxOCwxLjQwOTE4Yy0uMjQwNi4zOTY0OC0uMzg3MjEuODU2NDUt + LjM4NzIxLDEuMzUzMDMsMCwxLjQ0NzI3LDEuMTc3NzMsMi42MjUsMi42MjUsMi42MjVzMi42MjUt + MS4xNzc3MywyLjYyNS0yLjYyNS0xLjE3NzczLTIuNjI1LTIuNjI1LTIuNjI1Wm0tNi4zNzUtMi4z + NzVjMC0uNzU3ODEuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVzMS4zNzUuNjE3MTksMS4zNzUsMS4z + NzUtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1LTEuMzc1LS42MTcxOS0xLjM3NS0xLjM3NVptMi43 + NSwxMGMwLC43NTc4MS0uNjE3MTksMS4zNzUtMS4zNzUsMS4zNzVzLTEuMzc1LS42MTcxOS0xLjM3 + NS0xLjM3NS42MTcxOS0xLjM3NSwxLjM3NS0xLjM3NSwxLjM3NS42MTcxOSwxLjM3NSwxLjM3NVpt + My42MjUtMy42MjVjLS43NTc4MSwwLTEuMzc1LS42MTcxOS0xLjM3NS0xLjM3NXMuNjE3MTktMS4z + NzUsMS4zNzUtMS4zNzUsMS4zNzUuNjE3MTksMS4zNzUsMS4zNzUtLjYxNzE5LDEuMzc1LTEuMzc1 + LDEuMzc1WiIvPjxwYXRoIGQ9Im0yMS4yNSwxOS4wMTE3MmMtLjMwOTU3LS4xMzU3NC0uNjAzNTIt + LjMwNzYyLS44NzQwMi0uNTEwNzQtLjI3NzM0LS4yMDgwMS0uNjY3OTctLjE1MjM0LS44NzUuMTIz + MDUtLjIwODAxLjI3NjM3LS4xNTIzNC42Njc5Ny4xMjMwNS44NzUuMzQ3NjYuMjYxNzIuNzI2NTYu + NDgzNCwxLjEyNTk4LjY1NzIzLjA4MTA1LjAzNjEzLjE2NjAyLjA1MjczLjI1LjA1MjczLjI0MDIz + LDAsLjQ2OTczLS4xMzk2NS41NzIyNy0uMzc1LjEzODY3LS4zMTY0MS0uMDA1ODYtLjY4NDU3LS4z + MjIyNy0uODIyMjdaIi8+PHBhdGggZD0ibTIzLDkuMzc1Yy0zLjEwMTU2LDAtNS42MjUsMi41MjM0 + NC01LjYyNSw1LjYyNXY2YzAsMS4zODk2NS0uNjM3NywyLjY2NTA0LTEuNzUsMy41LS4yNzYzNy4y + MDcwMy0uMzMyMDMuNTk5NjEtLjEyNS44NzUuMTIzMDUuMTY0MDYuMzEwNTUuMjUuNS4yNS4xMzA4 + NiwwLC4yNjI3LS4wNDEwMi4zNzUtLjEyNSwxLjQyOTY5LTEuMDczMjQsMi4yNS0yLjcxMzg3LDIu + MjUtNC41di02YzAtMi40MTIxMSwxLjk2Mjg5LTQuMzc1LDQuMzc1LTQuMzc1czQuMzc1LDEuOTYy + ODksNC4zNzUsNC4zNzVjMCwuMjk1OS0uMDI5My41ODk4NC0uMDg2OTEuODc1OTgtLjA2ODM2LjMz + Nzg5LjE1MDM5LjY2Nzk3LjQ4ODI4LjczNjMzLjMzOTg0LjA3MjI3LjY2ODk1LS4xNDk0MS43MzYz + My0uNDg4MjguMDc0MjItLjM2NzE5LjExMjMtLjc0NTEyLjExMjMtMS4xMjQwMiwwLTMuMTAxNTYt + Mi41MjM0NC01LjYyNS01LjYyNS01LjYyNVoiLz48cGF0aCBkPSJtMTIuNDc2NTYsMjMuNDU4MDFj + LS4yNDQxNC0uMjQ0MTQtLjY0MDYyLS4yNDQxNC0uODg0NzcsMC0uMjQzMTYuMjQ0MTQtLjI0MzE2 + LjY0MDYyLDAsLjg4NDc3bC45OTA2Ljk4OTk5Yy0yLjIxMzk5LS4yMTM4Ny0zLjk1NzQtMi4wNjM3 + Mi0zLjk1NzQtNC4zMzI3NiwwLTIuNDEyMTEsMS45NjI4OS00LjM3NSw0LjM3NS00LjM3NS45NTYw + NSwwLDEuODYzMjguMzAyNzMsMi42MjQwMi44NzQwMi4yNzgzMi4yMDg5OC42Njg5NS4xNTIzNC44 + NzUtLjEyMzA1LjIwODAxLS4yNzYzNy4xNTIzNC0uNjY3OTctLjEyMzA1LS44NzUtLjk3OTQ5LS43 + MzYzMy0yLjE0NjQ4LTEuMTI1OTgtMy4zNzU5OC0xLjEyNTk4LTMuMTAxNTYsMC01LjYyNSwyLjUy + MzQ0LTUuNjI1LDUuNjI1LDAsMi45MTY5OSwyLjIzMjQyLDUuMzIxMTcsNS4wNzgxMiw1LjU5NzI5 + bC0uODYxMzMuODYwNzJjLS4yNDMxNi4yNDQxNC0uMjQzMTYuNjQwNjIsMCwuODg0NzcuMTIyMDcu + MTIyMDcuMjgyMjMuMTgyNjIuNDQyMzguMTgyNjJzLjMyMDMxLS4wNjA1NS40NDIzOC0uMTgyNjJs + Mi0yYy4yNDMxNi0uMjQ0MTQuMjQzMTYtLjY0MDYyLDAtLjg4NDc3bC0yLTJaIi8+PC9zdmc+ + + packages: + - backstage-community-plugin-redhat-argocd diff --git a/catalog-entities/marketplace/plugins/regex-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/regex-scaffolder-actions.yaml new file mode 100644 index 0000000000..2f55e69705 --- /dev/null +++ b/catalog-entities/marketplace/plugins/regex-scaffolder-actions.yaml @@ -0,0 +1,74 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: regex-scaffolder-actions + namespace: rhdh + title: Regex Software Template Action + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat # For verified plugins + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - scaffolder # Used for filtering + description: | + Regex Software Template Action is a plugin that allows you to use regular expressions in software templates. + +spec: + + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Scaffolder # One category will show up on the tile view + + highlights: + - Extends Software Templates + + description: | + This plugin ships as enabled by default in Red Hat Developer Hub. + + Regex Software Template Action is a plugin that allows you to use regular expressions in software templates, bringing a + new level of flexibility to your software development process. "String replace" allows templates to access the replace() method + of String values which returns a new string with one, some, or all matches of a pattern replaced by a replacement. + + The pattern can be a string or a RegExp, and the replacement can be a string or a function called for each match. + If pattern is a string, only the first occurrence will be replaced. The original string is left unchanged. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + # Images are base 64 encoded SVGs + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + assets: # Not used yet + - type: icon + filename: img/3scale.svg + originUri: https://github.com/backstage/backstage/blob/master/microsite/static/img/3scale.svg + + history: # Not used yet + added: '2023-05-15' + + packages: + - backstage-community-plugin-scaffolder-backend-module-regex \ No newline at end of file diff --git a/catalog-entities/marketplace/plugins/roadie-scaffolder-util-actions.yaml b/catalog-entities/marketplace/plugins/roadie-scaffolder-util-actions.yaml new file mode 100644 index 0000000000..42e9611c4e --- /dev/null +++ b/catalog-entities/marketplace/plugins/roadie-scaffolder-util-actions.yaml @@ -0,0 +1,68 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: roadie-scaffolder-util-actions + namespace: rhdh + title: Software Template Utility Actions + annotations: + extensions.backstage.io/pre-installed: 'true' # For plugins contained in the RHDH image + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - apis # Used for filtering + description: | + These utility actions for the scaffolder-backend offer a set of actions that can be used extensively in scaffolder templates. + With these additions, your templates can be more dynamic and flexible, offering more options to template authors. + +spec: + author: Roadie + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Scaffolder # One category will show up on the tile view + + highlights: + - Extends Software Templates + + description: | + These utility actions for the scaffolder-backend offer a set of actions that can be used in extensively scaffolder templates. + With these additions, your templates can be more dynamic and flexible, offering more options to template authors. + + This plugin contains a collection of actions ready to use in scaffolder templates: + + * Zip + * Sleep + * Deserialise a file + * Serialise to JSON or YAML + * Parse and Transform JSON or YAML + * Merge new data into an existing JSON file + * Merge + * Append content to a file + * Write content to a file + * Replace in files + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - roadiehq-scaffolder-backend-module-utils diff --git a/catalog-entities/marketplace/plugins/scaffolder-relation-processor-catalog-integration.yaml b/catalog-entities/marketplace/plugins/scaffolder-relation-processor-catalog-integration.yaml new file mode 100644 index 0000000000..d28bc670a8 --- /dev/null +++ b/catalog-entities/marketplace/plugins/scaffolder-relation-processor-catalog-integration.yaml @@ -0,0 +1,56 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: scaffolder-relation-processor-catalog-integration + namespace: rhdh + title: Scaffolder Relation Processor Catalog Integration + description: | + This is an extension module to the catalog-backend plugin, providing an additional catalog entity processor that adds a new relation that depends on the `spec.scaffoldedFrom` field + to link scaffolder templates and the catalog entities they generated. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - title: readme + url: https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-gitlab-org/README.md + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - software-catalog +spec: + + author: Backstage Community + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + categories: + - Software Catalog + + highlights: + - Provides Scaffolder relation processor catalog integration + + description: | + This is an extension module to the catalog-backend plugin, providing an additional catalog entity processor that adds a new relation that depends on the `spec.scaffoldedFrom` field + to link scaffolder templates and the catalog entities they generated. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-community-plugin-catalog-backend-module-scaffolder-re diff --git a/catalog-entities/marketplace/plugins/scorecard.yaml b/catalog-entities/marketplace/plugins/scorecard.yaml new file mode 100644 index 0000000000..2039577282 --- /dev/null +++ b/catalog-entities/marketplace/plugins/scorecard.yaml @@ -0,0 +1,67 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: scorecard + namespace: rhdh + title: Scorecard + description: | + Track the health, security, and compliance of your components with customizable KPIs. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - analytics + + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + +spec: + + author: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Analytics + + highlights: + - Centralized KPIs monitoring + - Visual health indication by scoring thresholds + - Customizable scoring thresholds + - Integration with GitHub and Jira data sources + - Extensible through custom backend modules for integrating your own metrics and data sources + + description: | + The Scorecard plugin offers comprehensive, customizable insights into the health, security posture, and compliance + of your components, services, and APIs. It centralizes Key Performance Indicators (KPIs) in your Backstage instance, + so you do not have to consult multiple external systems. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, and configure plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - rhdh-backstage-plugin-scorecard-backend-module-github + - rhdh-backstage-plugin-scorecard-backend-module-jira + - rhdh-backstage-plugin-scorecard-backend + - rhdh-backstage-plugin-scorecard diff --git a/catalog-entities/marketplace/plugins/security-insights.yaml b/catalog-entities/marketplace/plugins/security-insights.yaml new file mode 100644 index 0000000000..44c825b699 --- /dev/null +++ b/catalog-entities/marketplace/plugins/security-insights.yaml @@ -0,0 +1,60 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: security-insights + namespace: rhdh + title: Security Insights + description: | + View Security Insights for your components in Backstage. This plugin requires features provided by GitHub advanced security. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - security + links: + - url: https://roadie.io/backstage/plugins/security-insights/ + title: Documentation + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + +spec: + author: Roadie + publisher: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - Security + + highlights: + - View Security Insights for your components in Backstage. + + description: | + View Security Insights for your components in Backstage (requires GitHub advanced security). + This plugin requires features provided by GitHub advanced security. Specifically, it calls the code-scanning endpoints. + Advanced security is free for public repos but not for private repos even on GitHub Enterprise plans. It must be purchased separately. + You can check if you have Advanced Security enabled by navigating to your repo in GitHub and checking under + Security -> Overview -> “Code scanning alerts”. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - roadiehq-backstage-plugin-security-insights + diff --git a/catalog-entities/marketplace/plugins/servicenow-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/servicenow-scaffolder-actions.yaml new file mode 100644 index 0000000000..bac2b24197 --- /dev/null +++ b/catalog-entities/marketplace/plugins/servicenow-scaffolder-actions.yaml @@ -0,0 +1,67 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: servicenow-scaffolder-actions + namespace: rhdh + title: ServiceNow Software Template Actions + description: | + This plugin provides Backstage template actions for ServiceNow. The actions include creating, deleting, + getting, updating, and retrieving records from ServiceNow. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - title: readme + url: https://github.com/backstage/community-plugins/blob/main/workspaces/scaffolder-backend-module-servicenow/plugins/scaffolder-backend-module-servicenow/README.md + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - scaffolder + +spec: + author: Red Hat + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Scaffolder + + highlights: + - Create ServiceNow resources using Backstage templates + + description: | + This plugin provides Backstage template actions for ServiceNow. The actions allow you to create ServiceNow resources using Backstage templates. + The plugin contains the following actions: + + * `servicenow:now:table:createRecord` + * `servicenow:now:table:deleteRecord` + * `servicenow:now:table:getRecord` + * `servicenow:now:table:updateRecord` + * `servicenow:now:table:retrieveRecord` + * `servicenow:now:table:retrieveRecords` + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxnIGlkPSJ1dWlkLTc5MDFmODc4LWNlMDAtNDQxZi1hYzI2LWRkZDM2NTRkNGY3OSI+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iOSIgcnk9IjkiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yOCwyLjI1YzQuMjczMzYsMCw3Ljc1LDMuNDc2NjQsNy43NSw3Ljc1djE4YzAsNC4yNzMzNi0zLjQ3NjY0LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzM2LDAtNy43NS0zLjQ3NjY0LTcuNzUtNy43NVYxMGMwLTQuMjczMzYsMy40NzY2NC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBDNS4wMjk0NCwxLDEsNS4wMjk0MywxLDEwdjE4YzAsNC45NzA1Nyw0LjAyOTQ0LDksOSw5aDE4YzQuOTcwNTYsMCw5LTQuMDI5NDMsOS05VjEwYzAtNC45NzA1Ny00LjAyOTQ0LTktOS05aDBaIiBmaWxsPSIjNGQ0ZDRkIiBzdHJva2Utd2lkdGg9IjAiLz48L2c+PGcgaWQ9InV1aWQtYzNjYTY4OTEtNmUxOC00MmNiLTg1MmItM2RlZGQ2YzMxZTY4Ij48cGF0aCBkPSJtMjYuNDQyMzgsMjUuNTU4MTFsLTMuNzczNzQtMy43NzM3NGMuNTkxNDMtLjc3NzA0Ljk1NjM2LTEuNzM0OC45NTYzNi0yLjc4NDM2LDAtMi41NTAyOS0yLjA3NTItNC42MjUtNC42MjUtNC42MjUtMi41NTAyOSwwLTQuNjI1LDIuMDc0NzEtNC42MjUsNC42MjVzMi4wNzQ3MSw0LjYyNSw0LjYyNSw0LjYyNWMxLjA0OTQ0LDAsMi4wMDcyNi0uMzY0OTMsMi43ODQzNi0uOTU2MzZsMy43NzMyNSwzLjc3MzI1Yy4xMjIwNy4xMjIwNy4yODIyMy4xODMxMS40NDIzOC4xODMxMXMuMzIwMzEtLjA2MTA0LjQ0MjM4LS4xODMxMWMuMjQzMTYtLjI0NDE0LjI0MzE2LS42Mzk2NSwwLS44ODM3OVptLTEwLjgxNzM4LTYuNTU4MTFjMC0xLjg2MDg0LDEuNTE0MTYtMy4zNzUsMy4zNzUtMy4zNzUsMS44NjEzMywwLDMuMzc1LDEuNTE0MTYsMy4zNzUsMy4zNzVzLTEuNTEzNjcsMy4zNzUtMy4zNzUsMy4zNzVjLTEuODYwODQsMC0zLjM3NS0xLjUxNDE2LTMuMzc1LTMuMzc1WiIgZmlsbD0iI2UwMCIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTI3LDEzLjYyNWMxLjQ0NzI3LDAsMi42MjUtMS4xNzc3MywyLjYyNS0yLjYyNXMtMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNS0yLjYyNSwxLjE3NzczLTIuNjI1LDIuNjI1YzAsLjQ5NjcuMTQ2NjEuOTU2NTQuMzg3MjcsMS4zNTMwM2wtMS4yMDQ2NSwxLjIwNTA4Yy0uMjQ0MTQuMjQ0MTQtLjI0MzE2LjYzOTY1LjAwMDk4Ljg4Mzc5LjEyMTA5LjEyMjA3LjI4MTI1LjE4MzExLjQ0MTQxLjE4MzExcy4zMjAzMS0uMDYxMDQuNDQyMzgtLjE4MzExbDEuMjA0MS0xLjIwNDQ3Yy4zOTY2MS4yNDA5MS44NTY2My4zODc1NywxLjM1MzUyLjM4NzU3Wm0wLTRjLjc1NzgxLDAsMS4zNzUuNjE2NywxLjM3NSwxLjM3NXMtLjYxNzE5LDEuMzc1LTEuMzc1LDEuMzc1Yy0uMzc4MTEsMC0uNzIxMDctLjE1MzY5LS45Njk5Ny0uNDAxNzMtLjAwMDczLS4wMDA3My0uMDAwOTgtLjAwMTgzLS4wMDE3MS0uMDAyNTYtLjAwMDYxLS4wMDA2MS0uMDAxNTMtLjAwMDc5LS4wMDIxNC0uMDAxNC0uMjQ3NjItLjI0ODc4LS40MDExOC0uNTkxMzctLjQwMTE4LS45NjkzLDAtLjc1ODMuNjE3MTktMS4zNzUsMS4zNzUtMS4zNzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTksOC4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xOSwyNS4zNzVjLTEuMTcxODgsMC0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNXMuOTUzMTIsMi4xMjUsMi4xMjUsMi4xMjUsMi4xMjUtLjk1MzEyLDIuMTI1LTIuMTI1LS45NTMxMi0yLjEyNS0yLjEyNS0yLjEyNVptMCwzYy0uNDgyNDIsMC0uODc1LS4zOTI1OC0uODc1LS44NzVzLjM5MjU4LS44NzUuODc1LS44NzUuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0yNy41LDE2Ljg3NWMtMS4xNzE4OCwwLTIuMTI1Ljk1MzEyLTIuMTI1LDIuMTI1cy45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjUtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1Wm0wLDNjLS40ODI0MiwwLS44NzUtLjM5MjU4LS44NzUtLjg3NXMuMzkyNTgtLjg3NS44NzUtLjg3NS44NzUuMzkyNTguODc1Ljg3NS0uMzkyNTguODc1LS44NzUuODc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PHBhdGggZD0ibTEyLjYyNSwxOWMwLTEuMTcxODgtLjk1MzEyLTIuMTI1LTIuMTI1LTIuMTI1cy0yLjEyNS45NTMxMi0yLjEyNSwyLjEyNS45NTMxMiwyLjEyNSwyLjEyNSwyLjEyNSwyLjEyNS0uOTUzMTIsMi4xMjUtMi4xMjVabS0zLDBjMC0uNDgyNDIuMzkyNTgtLjg3NS44NzUtLjg3NXMuODc1LjM5MjU4Ljg3NS44NzUtLjM5MjU4Ljg3NS0uODc1Ljg3NS0uODc1LS4zOTI1OC0uODc1LS44NzVaIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiLz48cGF0aCBkPSJtMTMuMjM3NDMsMTIuMzUzNjRjLjI0MDkxLS4zOTY2MS4zODc1Ny0uODU2NzUuMzg3NTctMS4zNTM2NCwwLTEuNDQ3MjctMS4xNzc3My0yLjYyNS0yLjYyNS0yLjYyNXMtMi42MjUsMS4xNzc3My0yLjYyNSwyLjYyNSwxLjE3NzczLDIuNjI1LDIuNjI1LDIuNjI1Yy40OTY4OSwwLC45NTcwMy0uMTQ2NjcsMS4zNTM2NC0uMzg3NTdsMS4yMDQ0NywxLjIwNDQ3Yy4xMjIwNy4xMjIwNy4yODE3NC4xODMxMS40NDE4OS4xODMxMXMuMzE5ODItLjA2MTA0LjQ0MTg5LS4xODMxMWMuMjQ0MTQtLjI0NDE0LjI0NDE0LS42Mzk2NSwwLS44ODM3OWwtMS4yMDQ0Ny0xLjIwNDQ3Wm0tMy42MTI0My0xLjM1MzY0YzAtLjc1ODMuNjE2Ny0xLjM3NSwxLjM3NS0xLjM3NXMxLjM3NS42MTY3LDEuMzc1LDEuMzc1YzAsLjM3Nzk5LS4xNTM1LjcyMDU4LS40MDExMi45NjkzNi0uMDAwNzkuMDAwNzktLjAwMTg5LjAwMTA0LS4wMDI2OS4wMDE4M3MtLjAwMTA0LjAwMTg5LS4wMDE4My4wMDI2OWMtLjI0ODc4LjI0NzYyLS41OTEzNy40MDExMi0uOTY5MzYuNDAxMTItLjc1ODMsMC0xLjM3NS0uNjE2Ny0xLjM3NS0xLjM3NVoiIGZpbGw9IiNmZmYiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Im0xMy41NTgxMSwyMy41NTgxMWwtMS4yMDQ0NywxLjIwNDQ3Yy0uMzk2NjEtLjI0MDkxLS44NTY3NS0uMzg3NTctMS4zNTM2NC0uMzg3NTctMS40NDcyNywwLTIuNjI1LDEuMTc3NzMtMi42MjUsMi42MjVzMS4xNzc3MywyLjYyNSwyLjYyNSwyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1YzAtLjQ5Njg5LS4xNDY2Ny0uOTU3MDMtLjM4NzU3LTEuMzUzNjRsMS4yMDQ0Ny0xLjIwNDQ3Yy4yNDQxNC0uMjQ0MTQuMjQ0MTQtLjYzOTY1LDAtLjg4Mzc5cy0uNjM5NjUtLjI0NDE0LS44ODM3OSwwWm0tMi41NTgxMSw0LjgxNjg5Yy0uNzU4MywwLTEuMzc1LS42MTY3LTEuMzc1LTEuMzc1cy42MTY3LTEuMzc1LDEuMzc1LTEuMzc1Yy4zNzg4NSwwLC43MjIyOS4xNTM5OS45NzExOS40MDI1OS4wMDAyNC4wMDAyNC4wMDAyNC4wMDA0OS4wMDA0OS4wMDA3M3MuMDAwNDkuMDAwMjQuMDAwNzMuMDAwNDljLjI0ODYuMjQ4OS40MDI1OS41OTIzNS40MDI1OS45NzExOSwwLC43NTgzLS42MTY3LDEuMzc1LTEuMzc1LDEuMzc1WiIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PC9nPjwvc3ZnPg== + + packages: + - backstage-community-plugin-scaffolder-backend-module-servicenow diff --git a/catalog-entities/marketplace/plugins/signals-backend.yaml b/catalog-entities/marketplace/plugins/signals-backend.yaml new file mode 100644 index 0000000000..586c5caad1 --- /dev/null +++ b/catalog-entities/marketplace/plugins/signals-backend.yaml @@ -0,0 +1,60 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: signals-backend + namespace: rhdh + title: Signals Backend Plugin + description: | + Signals backend plugin allows backend plugins to publish messages to frontend plugins. It is used by the Notifications system in Backstage + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - backstage-core + - messaging + links: + - url: https://backstage.io/docs/notifications/ + title: Backstage documentation + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + +spec: + author: Backstage Community + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - Messaging # One category will show up on the tile view + + highlights: + - Allows plugins to publish messages + + description: | + This Signals backend plugin allows backend plugins to publish messages to frontend plugins. + It is used by the Notifications system in Backstage. + + The Backstage Notifications System provides a way for plugins and external services to send notifications to Backstage users. + These notifications are displayed in the dedicated page of the Backstage frontend UI or by frontend plugins per specific scenarios. + Additionally, notifications can be sent to external channels (like email) via "processors" implemented within plugins. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-signals-backend \ No newline at end of file diff --git a/catalog-entities/marketplace/plugins/signals.yaml b/catalog-entities/marketplace/plugins/signals.yaml new file mode 100644 index 0000000000..7ddb8e9bc6 --- /dev/null +++ b/catalog-entities/marketplace/plugins/signals.yaml @@ -0,0 +1,60 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: signals-frontend + namespace: rhdh + title: Signals Frontend Plugin + description: | + Signals frontend plugin contains functionalities that help utilize the signals. It is used by the Notifications system in Backstage to send messages. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - backstage-core + - messaging + links: + - url: https://backstage.io/docs/notifications/ + title: Backstage documentation + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + +spec: + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Messaging # One category will show up on the tile view + highlights: + - Allows plugins to publish messages + + description: | + The Backstage Notifications System provides a way for plugins and external services to send notifications to Backstage users. + These notifications are displayed in the dedicated page of the Backstage frontend UI or by frontend plugins per specific scenarios. + Additionally, notifications can be sent to external channels (like email) via "processors" implemented within plugins. + + This plugin contains functionalities that help utilize the signals plugin. To get started, see installation instructions from + `@backstage/plugin-signals-node`, `@backstage/plugin-signals-backend`, and `@backstage/plugin-signals`. + There are two ways to utilize the signals plugin; either by using the hook or by directly using the API. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-plugin-signals + - backstage-plugin-signals-backend \ No newline at end of file diff --git a/catalog-entities/marketplace/plugins/sonarqube-catalog-cards.yaml b/catalog-entities/marketplace/plugins/sonarqube-catalog-cards.yaml new file mode 100644 index 0000000000..5afdd91221 --- /dev/null +++ b/catalog-entities/marketplace/plugins/sonarqube-catalog-cards.yaml @@ -0,0 +1,63 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: sonarqube-catalog-cards + namespace: rhdh + title: SonarQube + description: | + This plugin provides SonarQube catalog cards for Backstage allowing Backstage users to + view code statistics from SonarCloud or SonarQube without leaving the portal. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - code-quality + - sonarqube + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + +spec: + + author: SDA SE + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Code Quality # One category will show up on the tile view + + highlights: + - Code Quality + - Code Statistics + - Static Analysis + + description: | + The SonarQube Plugin displays code statistics from SonarCloud or SonarQube. SonarQube (formerly Sonar) + is an open-source platform developed by SonarSource for continuous inspection of code quality to perform + automatic reviews with static analysis of code to detect bugs and code smells on 29 programming languages. + SonarQube offers reports on duplicated code, coding standards, unit tests, code coverage, code complexity, + comments, bugs, and security recommendations. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-community-plugin-sonarqube + - backstage-community-plugin-sonarqube-backend diff --git a/catalog-entities/marketplace/plugins/sonarqube-scaffolder-actions.yaml b/catalog-entities/marketplace/plugins/sonarqube-scaffolder-actions.yaml new file mode 100644 index 0000000000..e978f068b6 --- /dev/null +++ b/catalog-entities/marketplace/plugins/sonarqube-scaffolder-actions.yaml @@ -0,0 +1,66 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: sonarqube-scaffolder-actions + namespace: rhdh + title: SonarQube Software Template Actions + description: | + The SonarQube scaffolder actions plugin provides a set of actions to be used in the Backstage software template + scaffolder. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + tags: + - code-quality + - sonarqube + - scaffolder + - software-templates + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + +spec: + + author: Backstage Community + support: + provider: Red Hat + level: tech-preview + lifecycle: active + publisher: Red Hat + + categories: + - Code Quality # One category will show up on the tile view + - Scaffolder + + highlights: + - Code Quality + - Code Statistics + - Static Analysis + + description: | + The SonarQube scaffolder actions plugin provides a set of actions to be used in the Backstage software template + scaffolder. This module provides Backstage template actions for SonarQube. + + The following actions are currently supported in this module: + + * Create a SonarQube project + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-community-plugin-scaffolder-backend-module-sonarqube diff --git a/catalog-entities/marketplace/plugins/tech-radar.yaml b/catalog-entities/marketplace/plugins/tech-radar.yaml new file mode 100644 index 0000000000..85755aec52 --- /dev/null +++ b/catalog-entities/marketplace/plugins/tech-radar.yaml @@ -0,0 +1,80 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: tech-radar + namespace: rhdh + title: Tech Radar + description: | + Visualize the your company's official guidelines of different areas of software development. Technologies on the + Radar are organized into four rings: Adopt, Trial, Assess, and Hold so you can quickly separate the hotties from + the notties! + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + links: + - url: https://docs.redhat.com/en/documentation/red_hat_developer_hub/latest/html/customizing/proc-customize-rhdh-tech-radar-page_configuring-techdocs + title: Red Hat Developer Hub Documentation + - url: https://github.com/backstage/community-plugins/tree/main/workspaces/tech-radar/plugins/tech-radar + title: Backstage Community Documentation + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/redhat-developer/rhdh/tree/main/dynamic-plugins/wrappers/ + tags: + - discovery + - guidelines + - software-development + +spec: + author: Backstage Community + publisher: Red Hat + license: Apache-2.0 + support: + provider: Red Hat + level: tech-preview + lifecycle: active + + categories: + - Discovery + + highlights: + - Visualize + - Guidelines + - Software Development + + description: | + The Backstage integration for the Tech Radar based on Zalando's Tech Radar open sourced on GitHub. + This plugin is used at Spotify for visualizing the official guidelines of different areas of software development + such as languages, frameworks, infrastructure and processes. + + Zalando's description of TechRadar: + + > The Tech Radar is a tool to inspire and support engineering teams at Zalando to pick the best + technologies for new projects; it provides a platform to share knowledge and experience in t + echnologies, to reflect on technology decisions and continuously evolve our technology landscape. + Based on the pioneering work of ThoughtWorks, our Tech Radar sets out the changes in technologies + that are interesting in software development — changes that we think our engineering teams should pay + attention to and consider using in their projects. + + Technologies on the Radar are organized into four rings: Adopt, Trial, Assess, and Hold. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + packages: + - backstage-community-plugin-tech-radar + - backstage-community-plugin-tech-radar-backend + + diff --git a/catalog-entities/marketplace/plugins/tekton.yaml b/catalog-entities/marketplace/plugins/tekton.yaml new file mode 100644 index 0000000000..18d1582382 --- /dev/null +++ b/catalog-entities/marketplace/plugins/tekton.yaml @@ -0,0 +1,124 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: tekton + namespace: rhdh + title: Pipelines With Tekton + description: | + The Tekton plugin enables you to visualize the PipelineRun resources available on your Kubernetes cluster. Once + enabled a CI/CD tab will display the list of these resources and associated pipeline run details such as + NAME, STATUS, TASK STATUS, STARTED, and DURATION. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - kubernetes + - openshift + links: + - url: https://red.ht/rhdh + title: Homepage + - url: https://issues.redhat.com/browse/RHIDP + title: Bugs + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/tekton/plugins/tekton + +spec: + author: Red Hat + support: + provider: Red Hat + level: generally-available + lifecycle: active + publisher: Red Hat + + categories: + - CI/CD # One category will show up on the tile view + highlights: + - Visualize PipelineRun resources + - View pipeline run details + + description: | + The Tekton plugin enables you to visualize the `PipelineRun` resources available on the Kubernetes cluster. + The CI/CD tab displays the list of PipelineRun resources associated with a Kubernetes cluster. + The list contains pipeline run details, such as NAME, STATUS, TASK STATUS, STARTED, and DURATION. + + Vulnerabilities column provides a visual representation of identified vulnerabilities in the OCI image produced by the pipelinerun. + The Author of the pipeline scanner task would provide the CVE summary data using the below format that the UI can interpret. + The result of the scanner task should be emitted back to the pipelinerun and it should contain a result that ends with SCAN_OUTPUT string. + + The "Link to SBOM" action will be enabled if there is a Security Bill Of Materials task in the pipelinerun and the correct configuration is added. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJ1dWlkLWViNTA1 + YjAzLTBlYTYtNDExYy04ZTM1LWEzMzE4NzU1NzRlYSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn + LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzggMzgiPgo8ZGVmcz48c3R5bGU+LnV1aWQtNjI2YTMx + ZmUtMzhlYi00NDkwLWE2MGEtM2E3YmUwNmYyN2Zke2ZpbGw6I2UwMDt9LnV1aWQtM2Q0MjVmYTgt + YjBhMC00ZTcxLTlmMGQtOGVjYjY0NWUxNDlie2ZpbGw6I2ZmZjt9LnV1aWQtYjcxMjRiNzYtNWJh + ZC00OTYwLThjYzItZmZmNTI4YzJlMDc1e2ZpbGw6I2UwZTBlMDt9PC9zdHlsZT48L2RlZnM+PHBh + dGggY2xhc3M9InV1aWQtM2Q0MjVmYTgtYjBhMC00ZTcxLTlmMGQtOGVjYjY0NWUxNDliIiBkPSJt + MjgsMUgxMEM1LjAyOTQ0LDEsMSw1LjAyOTQ0LDEsMTB2MThjMCw0Ljk3MDU3LDQuMDI5NDQsOSw5 + LDloMThjNC45NzA1NiwwLDktNC4wMjk0Myw5LTlWMTBjMC00Ljk3MDU2LTQuMDI5NDQtOS05LTlo + MFoiLz48cGF0aCBjbGFzcz0idXVpZC1iNzEyNGI3Ni01YmFkLTQ5NjAtOGNjMi1mZmY1MjhjMmUw + NzUiIGQ9Im0yOCwyLjI1YzQuMjczMzIsMCw3Ljc1LDMuNDc2NjgsNy43NSw3Ljc1djE4YzAsNC4y + NzMzMi0zLjQ3NjY4LDcuNzUtNy43NSw3Ljc1SDEwYy00LjI3MzMyLDAtNy43NS0zLjQ3NjY4LTcu + NzUtNy43NVYxMGMwLTQuMjczMzIsMy40NzY2OC03Ljc1LDcuNzUtNy43NWgxOG0wLTEuMjVIMTBD + NS4wMjk0MiwxLDEsNS4wMjk0MiwxLDEwdjE4YzAsNC45NzA1OCw0LjAyOTQyLDksOSw5aDE4YzQu + OTcwNTgsMCw5LTQuMDI5NDIsOS05VjEwYzAtNC45NzA1OC00LjAyOTQyLTktOS05aDBaIi8+PHBh + dGggY2xhc3M9InV1aWQtNjI2YTMxZmUtMzhlYi00NDkwLWE2MGEtM2E3YmUwNmYyN2ZkIiBkPSJt + MzAuNDQyMzgsMTcuNTU3NjJjLS4yNDQxNC0uMjQ0MTQtLjY0MDYyLS4yNDQxNC0uODg0NzcsMGwt + Ljk2NTcuOTY2MzFjLS4xNzAwNC0zLjQ4NTg0LTIuMTYwMDMtNi41ODEwNS01LjMxMzYtOC4xNDc5 + NS0uMzExNTItLjE1NjI1LS42ODQ1Ny0uMDI4MzItLjgzNzg5LjI4MTI1cy0uMDI3MzQuNjg0NTcu + MjgxMjUuODM3ODljMi43MDQzNSwxLjM0MzM4LDQuNDIzMzQsMy45Nzg3Niw0LjYxNTIzLDYuOTU3 + NjRsLS44OTQ1My0uODk1MTRjLS4yNDQxNC0uMjQ0MTQtLjY0MDYyLS4yNDQxNC0uODg0NzcsMC0u + MjQzMTYuMjQ0MTQtLjI0MzE2LjY0MDYyLDAsLjg4NDc3bDIsMmMuMTIyMDcuMTIyMDcuMjgyMjMu + MTgyNjIuNDQyMzguMTgyNjJzLjMyMDMxLS4wNjA1NS40NDIzOC0uMTgyNjJsMi0yYy4yNDMxNi0u + MjQ0MTQuMjQzMTYtLjY0MDYyLDAtLjg4NDc3WiIvPjxwYXRoIGNsYXNzPSJ1dWlkLTYyNmEzMWZl + LTM4ZWItNDQ5MC1hNjBhLTNhN2JlMDZmMjdmZCIgZD0ibTEwLjkzNTU1LDE1LjYyNWMtLjA5Mzc1 + LDAtLjE4ODQ4LS4wMjA1MS0uMjc4MzItLjA2NTQzLS4zMDg1OS0uMTUzMzItLjQzNDU3LS41Mjgz + Mi0uMjgxMjUtLjgzNzg5LjkwNTI3LTEuODIyMjcsMi40MDAzOS0zLjM0MTgsNC4yMDk5Ni00LjI3 + NzM0LjMwODU5LS4xNTgyLjY4NDU3LS4wMzcxMS44NDI3Ny4yNjg1NS4xNTgyLjMwNjY0LjAzODA5 + LjY4MzU5LS4yNjg1NS44NDI3Ny0xLjU3NTIuODEzNDgtMi44NzY5NSwyLjEzNTc0LTMuNjY1MDQs + My43MjI2Ni0uMTA5MzguMjE5NzMtLjMzMDA4LjM0NjY4LS41NTk1Ny4zNDY2OFoiLz48cGF0aCBj + bGFzcz0idXVpZC02MjZhMzFmZS0zOGViLTQ0OTAtYTYwYS0zYTdiZTA2ZjI3ZmQiIGQ9Im0xNSwy + Ny42ODk0NWMtLjA5Mzc1LDAtLjE4ODQ4LS4wMjA1MS0uMjc4MzItLjA2NTQzLTEuODcyMDctLjkz + MDY2LTMuNDE1MDQtMi40NzM2My00LjM0NTctNC4zNDU3LS4xNTMzMi0uMzA5NTctLjAyNzM0LS42 + ODQ1Ny4yODEyNS0uODM3ODkuMzExNTItLjE1NDMuNjg0NTctLjAyODMyLjgzNzg5LjI4MTI1Ljgw + OTU3LDEuNjI5ODgsMi4xNTMzMiwyLjk3MzYzLDMuNzgzMiwzLjc4MzIuMzA4NTkuMTUzMzIuNDM0 + NTcuNTI4MzIuMjgxMjUuODM3ODktLjEwOTM4LjIxOTczLS4zMzAwOC4zNDY2OC0uNTU5NTcuMzQ2 + NjhaIi8+PHBhdGggY2xhc3M9InV1aWQtNjI2YTMxZmUtMzhlYi00NDkwLWE2MGEtM2E3YmUwNmYy + N2ZkIiBkPSJtMjMuMTI3OTMsMjcuNjI1Yy0uMjI2NTYsMC0uNDQ1MzEtLjEyMzA1LS41NTY2NC0u + MzM3ODktLjE1ODItLjMwNjY0LS4wMzgwOS0uNjgzNTkuMjY4NTUtLjg0Mjc3LDEuNTc1Mi0uODEz + NDgsMi44NzY5NS0yLjEzNTc0LDMuNjY1MDQtMy43MjI2Ni4xNTMzMi0uMzA5NTcuNTI4MzItLjQz + NzUuODM3ODktLjI4MTI1LjMwODU5LjE1MzMyLjQzNDU3LjUyODMyLjI4MTI1LjgzNzg5LS45MDUy + NywxLjgyMjI3LTIuNDAwMzksMy4zNDE4LTQuMjA5OTYsNC4yNzczNC0uMDkxOC4wNDY4OC0uMTkw + NDMuMDY5MzQtLjI4NjEzLjA2OTM0WiIvPjxwYXRoIGQ9Im0xOSwxMi42MjVjLTEuNDQ3MjcsMC0y + LjYyNS0xLjE3NzczLTIuNjI1LTIuNjI1czEuMTc3NzMtMi42MjUsMi42MjUtMi42MjUsMi42MjUs + MS4xNzc3MywyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1LDIuNjI1Wm0wLTRjLS43NTc4 + MSwwLTEuMzc1LjYxNzE5LTEuMzc1LDEuMzc1cy42MTcxOSwxLjM3NSwxLjM3NSwxLjM3NSwxLjM3 + NS0uNjE3MTksMS4zNzUtMS4zNzUtLjYxNzE5LTEuMzc1LTEuMzc1LTEuMzc1WiIvPjxwYXRoIGQ9 + Im0xMCwyMS42MjVjLTEuNDQ3MjcsMC0yLjYyNS0xLjE3NzczLTIuNjI1LTIuNjI1czEuMTc3NzMt + Mi42MjUsMi42MjUtMi42MjUsMi42MjUsMS4xNzc3MywyLjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1 + LTIuNjI1LDIuNjI1Wm0wLTRjLS43NTc4MSwwLTEuMzc1LjYxNzE5LTEuMzc1LDEuMzc1cy42MTcx + OSwxLjM3NSwxLjM3NSwxLjM3NSwxLjM3NS0uNjE3MTksMS4zNzUtMS4zNzUtLjYxNzE5LTEuMzc1 + LTEuMzc1LTEuMzc1WiIvPjxwYXRoIGQ9Im0xOSwzMC42MjVjLTEuNDQ3MjcsMC0yLjYyNS0xLjE3 + NzczLTIuNjI1LTIuNjI1czEuMTc3NzMtMi42MjUsMi42MjUtMi42MjUsMi42MjUsMS4xNzc3Mywy + LjYyNSwyLjYyNS0xLjE3NzczLDIuNjI1LTIuNjI1LDIuNjI1Wm0wLTRjLS43NTc4MSwwLTEuMzc1 + LjYxNzE5LTEuMzc1LDEuMzc1cy42MTcxOSwxLjM3NSwxLjM3NSwxLjM3NSwxLjM3NS0uNjE3MTks + MS4zNzUtMS4zNzUtLjYxNzE5LTEuMzc1LTEuMzc1LTEuMzc1WiIvPjwvc3ZnPg== + + packages: + - backstage-community-plugin-tekton + - backstage-plugin-kubernetes-backend diff --git a/catalog-entities/marketplace/plugins/topology.yaml b/catalog-entities/marketplace/plugins/topology.yaml new file mode 100644 index 0000000000..7203b28888 --- /dev/null +++ b/catalog-entities/marketplace/plugins/topology.yaml @@ -0,0 +1,64 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/redhat-developer/rhdh-plugins/refs/heads/main/workspaces/marketplace/json-schema/plugins.json +apiVersion: extensions.backstage.io/v1alpha1 +kind: Plugin +metadata: + name: topology + namespace: rhdh + title: Application Topology for Kubernetes + description: | + The Topology plugin enables you to visualize the workloads such as Deployment, Job, Daemonset, Statefulset, + CronJob, Pods and Virtual Machines powering any service on the Kubernetes cluster. + annotations: + extensions.backstage.io/pre-installed: 'true' # this means the plugin yaml is preinstalled, not the plugin itself, all other plugins are marked as 'custom' + extensions.backstage.io/verified-by: Red Hat + tags: + - kubernetes + - openshift + links: + - title: Homepage + url: https://red.ht/rhdh + - title: Bugs + url: https://issues.redhat.com/browse/RHIDP + - title: Documentation for Red Hat Developer Hub + url: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - title: Source Code + url: https://github.com/backstage/community-plugins/tree/main/workspaces/topology/plugins/topology + +spec: + support: + provider: Red Hat + level: generally-available + lifecycle: active + author: Red Hat + publisher: Red Hat + + categories: + - Kubernetes + - OpenShift + + highlights: + - OpenShift support + - OpenShift Virtualization support + + description: | + + The Topology plugin enables you to visualize the workloads such as Deployment, Job, Daemonset, Statefulset, CronJob, Pods and Virtual Machines powering any service on the Kubernetes cluster. + + ## Adding The Plugin To Red Hat Developer Hub + + See the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further instructions on how to add, enable, configure, and remove plugins in your instance. + + ## Configuring The Plugin ## + + Plugins often need additional configuration to work correctly - particularly those that integrate with other + systems. See the original source code repository, the software vendor, or the [Red Hat Developer Hub documentation](https://docs.redhat.com/en/documentation/red_hat_developer_hub) + for further details regarding the configuration required. + + icon: data:image/svg+xml;base64, + PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfM185MikiPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzNfOTIpIj4KICAgICAgPGNpcmNsZSBjeD0iNDgiIGN5PSI0OCIgcj0iNDgiIGZpbGw9IiMwMDk1OTYiIC8+CiAgICA8L2c+CiAgICA8cmVjdCB4PSI5IiB5PSI5IiB3aWR0aD0iNzgiIGhlaWdodD0iNzgiIGZpbGw9InVybCgjcGF0dGVybjApIiAvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxwYXR0ZXJuIGlkPSJwYXR0ZXJuMCIgcGF0dGVybkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNpbWFnZTBfM185MiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAwMjc3Nzc4KSIgLz4KICAgIDwvcGF0dGVybj4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfM185MiI+CiAgICAgIDxyZWN0IHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgZmlsbD0id2hpdGUiIC8+CiAgICA8L2NsaXBQYXRoPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMV8zXzkyIj4KICAgICAgPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiBmaWxsPSJ3aGl0ZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8aW1hZ2UgaWQ9ImltYWdlMF8zXzkyIiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjM2MCIKICAgICAgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFXZ0FBQUZvQ0FZQUFBQjY1V0hWQUFBQUNYQklXWE1BQUc2NkFBQnV1Z0hXM3JFWEFBQVhFRWxFUVZSNG5PM2RqM0ViT2JMSGNXRHJBdkNMUUg0WlNCRjRGY0hKRVp3MmdyVWp1TDBJZkJsSUx3TDVJcUFjQVpXQnRSRlFHZURWbkp0cldxYW9HYUNCUWFPL242cXJ2WDhpaDJ6Z1J3d0dnd2tBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR6UmI2cmIxSks1eUdFTnkvOHowOHh4b2ZXeDRUWFVUZWJxTnM4TGdNNnBUUTFqRjlEQ08va24rY3ovM1JxTlBjaGhDL1RQMk9NVDVVUEZRZW9tMDNVRGJPa2xINU5LZDBrSFR0NXJWLzU5dXVpYmpaUk44d2lEV1dqMUZDTzJkQnc5RkUzbTZnYlpra3B2YTNjVUk0MW5MZFVwd3gxczRtNlliYVUwcldjRnJVMnZlYzFsY3BEM1d5aWJwaE5jZDZyeEEwVlc0YTYyVVRkNmhscUZZZGNMZDRzdUVwYzIzUVYrcEtyejZkUk41dW9XMzNEQkhTSGpXV1B6bjRDZGJPSnVyVXhVa0J2TzJ3c2V3OHh4b3MrRHFVdjFNMG02dGJHTHlOOENKbC82cld4VE02WjIvd1pkYk9KdW1FMnVYcHNCVmViQlhXemlicTFaWHFLUTlaQWJrL2MwOStiYVY3c0lzYjRhT1I0cTZCdU5sRzM5cXdIOUVidTdkZndLUGY5Ly9uc3RjN2tQYlFXeEU5N0Nsd3F2WlpKMU0wbTZvYlo1SFpTRFRleXM5WkowLzlIY2IybjI5dFVxWnROMUEyTEtOeFNlcGR6bTZqY3pucFgrTjRicjlXbWJqWlJOeXdwV3VtditZZlNiM3Q2amNKamNQZXJUdDFzb201WVdxeVNVeCsxSzd1RlY3VGRMUU9pYmpaUk55d3AwcHVDSWhYL2toODVucEpmZGl0WHc0dFJONXVvRzVZVzZDcXpPSGUxdnVtQ09iS3JXc2ZVRytwbUUzVmJsOFU3Q2Q5bC90MUg1ZVBRZU8zY3oySVJkYk9KdXEzSVlrRG5UUGJmMWx5c0xxOTltL0dubmk1Y1VEZWJxQnZteXp5MXFiNXZnS3piWE14TDZhbWJUZFJ0WGFaRzBKbUZmMnp4Q0hkNWo4V2poaGFOZVczVXpTYnF0ajVyVXh3NVYySHZLeHlINW50NXVMSk0zV3lpYmlzYllydlJWenkvMTMrVTl4b2RkYk9KdWlueU1JTEcrcWliVGRSdFpSNUcwQUN3cDdWTFhoUFdBcHJudzlsRTNXd2FzVzZtOW9iMk1JSStHL1M5UmtmZGJLSnVpanlNb0ZzdVRzOTVMdytqUytwbUUzWERNaXljdDRtNjJVVGQxbVZ4aWlObkVmenZGWTVENHoxYXJobGQyMGgxcTM0alJrZHkyaWgxVTJJeG9ITWF6SFhPMHh6bWt0Zk8yZmVXam41YXIzWGpoL1UwNnFiRVlrQi95Znk3VDhySG9mSGF1Wi9GSXVwbUUzWERmQU50SUw3elZ2YnBNMU0zZTBhcEd4djJOekxJSTNocWpqQzZ4S09UYkpyYUtuWERra0tOOEJCTFUzYzBhZURob3piSms3V3BHeFlWelBKajROMyttdlA0ZnBzS3ozNm9temNLbzdHOW16bnJObVhkWldrajNYTTNldDR6WGplM296Q0ZVZlFlZFZzZ21qblNJK1NYVWV2TGY1UmxPUHN0REo5a042OHplUSt0VUgySU1WNG92WlpKOGtCUnJRZDR0cXJiNXhqamU2WFhNaW1sdEEwaGFOMkUwcXB1OXpIR1M2WFhhczU2UUU5RjNCcmNGbkY2WnR0dkhSekhLZ3pXYlFxUGk1clAyZXVkVE11cFhmQnJ4SHpkVEcrV0pGOTh6YWNIMTNMdGVSNWE2bWJwQitvM3d0bGNPRTgrZXE1Yk54VG5xbHB6dmZUSFNOMm9rVTFEMU0zMEZNY2g1Zm14bHJ4UGQyak9SMnR6UGU5c2VPUTh6SFdla2ZhRHZqUzZ0NFhyNlE2WjZ1aXhiZy9HcG1GVVdRNW55WUloREJQUU1jWW5RdHFlZzdyZGRuVHcwN0ZjeXJHNVl6MmN2ZGJORE9iTnpOYXQ1SlppTGU1dXdUOUUzMEVUY3Q5KzdpWXZhL0llMGxjcjFXMTZ6MTdud3Bzd0dzNDd6ZjArMExiQnZWVzR0WGlKcmRMcmVBL3BONDNENHNiN1RtZUszN2RXSDVoajQvbXUzR0hJN2NVMWcvcXZmUVlVRzdyN1V6YTUzYmQwSDRaVDdsbzhucWwzMm0xV0JrWTFmMkEzYkg0MElBbnFHNlZUNkozTW1mNzBDMDVJNjVJTy82bDIzVHlxMlZZcjFPMkdZSFpBVHFHdnBQRXNPU1hieU4rOE9sZEpTTmRSc0luT3JFMTZQR25aUmcvNjI1SXoyZTIrdjNtZGdocm1ScFZTMG5sZmFnUlBNY2JGeS9jVWx5dTV2cG5sT1JsRkxkMUNjbHArNWVsWmdpZXQzVFpyOURkZ01VYlMrakszTE9YVVdOQW1nUU4wQ0YwRWREN2FJbkFFSFVNUEFaMkhOZ2ljUUFmUlFVQXZSOXNEWnFDamxDT2dsNkhOQVF2UVljb1EwUFBSMW9BTWRKeDhCUFE4dERHZ0FCMG9Ed0g5T3RvV29JQ090QndCZlJwdENsQkVoMXFHZ0g0WmJRbW9nSTQxSHdGOUhHMElxSWdPTmc4Qi9UUGFEdEFBSGUxMUJQU1BhRE5BUTNTNDB3am83Mmdyd0Fyb2VDOGpvTCtoalFBcm9nTWVSMERUTm9BdTBCRi81ajJnYVJOQVIraVFQL0ljMExRRm9FTjB6Tys4QmpSdEFPZ1lIZlFiandGTjdRRUQ2S2orQXBxYUE0WjQ3N0NlQXRwN3JRR1RQSGRjTHdGTk9BT0dlZTNBSGdLYWNBWUc0TEVqang3UWhETXdFRzhkZXVTQUpweUJBWG5xMktNR05PRU1ETXhMQng4eG9BbG53QUVQSFgyMGdDYWNBVWRHNy9BakJUVGhERGcwY3NjZkphQUpaOEN4VVFOZ2hJQW1uQUVNR1FUV0E1cHdCdkNYMFFMQmNrQVR6Z0IrTWxJd1dBMW93aG5BaTBZSkNJc0JUVGdEZU5VSVFXRXRvQWxuQUxOWkR3eExBVTA0QTFqTWNuQllDV2pDR1VBMnF3RmlJYUFKWndERkxBWko3d0ZOT0FOUVl5MVFlZzVvd2htQU9rdkIwbXRBRTg0QXFyRVNNRDBHTk9FTW9Eb0xRZE5iUUJQT0FKcnBQWEI2Q21qQ0dVQnpQUWRQTHdGTk9BTllUVThCbEZKNmsxSzZTaW45a1ZMYVpoekRWdjUyZW8wM0NzZERPQU5ZMTVwQmxGSjZtMUw2a0JuSXI5bkthNy9OT0M3Q0dVQWZXZ2RTU3VrNnBiUlJlczg1cHZlNm5ubHNoRE9BdnJRSUpnbm1yMHJ2aytQcnFhQW1uQUYwcTFaQXlVVy9OWVA1dWEvUEx5b1N6Z0M2cHhsVWN1SHZUdW4xYXJpVFl5U2NzWXJJMTQ2bEpHaG16ZG5pTDdjeHh0LzRPckFFQVkwc2hQUWloRE95RU5ESVJralBRamdqR3dFdFVrcm5JWVNYYm1CNGlqRStORDhvQXdqcGt3am5GOURmNW5FWjBISW4yWFNWL3AzODgzem1uMDZONWo2RThDWEcrTG55WVpwQlNCOUZPQitZN3VBczZXL1RQMk9NVDAwT0Z1dVE1VnhhVitSMzhscXJQczYvRjRyZjZ3aFlyZkZqZjlzcDFOUmxmM014Z3BhaS9sTit2V3VZZnVYL0ZXTzhYL2VUcm11RmtmU0QvT3ZQZy84Y0RrWm9aL0x2NTQ3WU5MZ2ZPZFBmTUl2czVkRHlsdUc3bkwwZFJsSjVKTDBmUlYwdC9jcGtreVN0MGR4TFhJK2NwYisxWE5lKzhkN2Z6SkxiaG10MnhwZnNjZ0prc085ZU82UlAzb0tkY1h3MWJpbjNIczVYSy9ZM3JuOVkwc2w4NkNmSDMvOGJwZSt3YXVkVC9oRXYzc0xVcXFtdEszMkhKWmozNzUwRVE0MnRLWFBkZWV5NFNxZTVUYjQ3eGR2Tjcyb2ZhMjg2dkZWLzYvbUhzbXNkaHZPZXEwYVQrYlNUNTVxZnNzcG91cFNiRlFiME55elNhV1BaYzNQNlZUaTN1NU1iR05ZNjl2UENLWSt2YXgxN2E1MHZxOXg2cVlNSlJ0YmdEajhuWFRnS1hUV2NEejVEYVVnUGY4R3Frem5uMXpBbjNRT2xVOU5XaGw3ZFVUaDZYajJjOXlTa2N3MDlpcGJWR2xhd3VtTk5zdTV5amFVOXVYYWp6bzhWL2xCMjE1RkcrendhWk43WlduOHp2VTdhOUoyRTAwSjF4YnVWSHVVT3BUK2YvZmRuOGg1YWhSN3lUck9DV255T01iNnZjRWpGWkdWR3psblB0Ry9FWldjZnA1anluYUt0K3R1UXRlaWUwbXFCSlBQWHI1NWV5Mm12MWx4M042ZnpHdVJNSmtmWFp4U0ZJOGFoN25Bcm5QWTV0RVovWTcrYzFoUnU0YzY2TFZ2cGR0YWgxc3ltbEQ1a2ZnL2RUd1VVVEhWODZPRHcxV2kwK1JYNzI2YmZiM1pBQ3FQbjRzNVRFRXA3dzR5d01wYzRtcm1ZbG5ueGM1aWxYZ1ZuU0hzOTlEZEcwYTBVbnZwbzcrbVFhNGhsZHdXM2RadTVrRlpRNXlFdUNCY3VxK3VsdjdIc3JvWENmUjdVVHpzTGZ0bUhXSTZWdWV4cTE4R2hMNUk1RnozRXNzcUM1Wk05OWJkazhRZnpsdzZPWWFuY1U1VnB0Y0MvdFE5R1hqUG42U3B2QjdsWW1QTVpMRDZOSnVlWXpkZFgybWpPZEZ4di9TMVUzSis2bXI5Wk8yQjViRTZPanhXUDZXUG1jcXpmVTByL1YrRjRXdnA3eG52OXgrRG4vRS9HRXJPL3A1U3NieXIvajh5LzY3Ry92Yk0yT0RDM0Rsb3V2aXdkbVZSZmU4eHorZWFMTVpwY2Z6K2RJM2R3R0JiMDJ0OGVZb3dYbFE2cENvc0JuZE5KTG1vL0pWaE9CZG1rNVhYbU9zbGU1dURBbzI3N203WEJnYWs1Nk13NTI4Y1dqM0NYOTNpcy9UNERzUHc0ZmN2SDNrclgvYzNhZFI5ckZ3bHpyc0sybkFQa0laYXZlMzVycnlXV2o3MlYzdnVicVpVY0ZsZHhMTld5VTlHQjRSMzlUWkdIRVRUNndoUUhNSk9IRVRUNjhrUTlzQ0pUV3l4WUMyZzZ0MzJXOTBSZ0JZZDlwaTdrZXhoQm53MzZYa0NQNkcrS1BJeWdXNDdZMkRIcmRaWTdGVC9Bcit1OXY1azZDemNWMEpucks1dnNlVkd3WjRFM2xxY0ptT0o0WGRmOXJjVWFiVTBXcHpoeXZ1RGZLeHpIR3U4eEFnSjZmTDMyTjNPcmNDemU2ajN0bzV5emplSC94aGlyWENDUXpmZHp0Zys5RFNGWTN5enBVMFp3dlk4eG10cTBScllPWGZva25JZkttd2ExOEkvTVBXWjY3Ry8vampGYXIwZmZDaDc3WHUweFV3V1A1QmxoTzhvL01qNjN1YzNUTXg4UzhVY0hoMTZrNEZtRVBmYTNJZmJuN2hvYjl2ZUZEZnRQWXNOKy9XUEo3VzlkUDZCNEtEenlxaDg4OHVva0hubkZJNi84NGFHeGZlR2hzVWZ4ME5qdmVHaXNOOU9qMUFzTHR1Wmo0S3ZOejYyaG9QTjBQNG91R0xXcG45NnZTYVBOcjlqZk5pUFZ3Z1NGVWZUZXpaeUxkWEt4cEdScTVkQlF5N1VLUmxoZHp3dks5RTNPM0hNYTZRd3BsRjBzZkc2Ti9tWjI5R3p5MFVONzhzdW85ZVUveXY2eSt5ME1uMlQzdkRONUQ2ME9WLzF4UUdzb3FNWDBjTkgzblg2bXU4eG4zOTNIR0M4ckhOS3FsQi9yMXFxL0RWa0xFMlRrbGp2Q1djT3dWNUlMTCtCME45VXgydWZSVUhoR3NZYmRhR2N5NWhSMnBOYUdYb2Rac0J3cjlUVHRVM2c2UDhUeXlaY1UzSWV3Qmg3aTNBUEZ1YXFhaGxoV2QwcmhqK1d1aDVDV2NDNFpKUTRmQ29YTDdscGhXVjFQTXBkNjBWaVVGWTZpVncxcGhYQWVldlI4cVBOQkVVL1g3NDNNai9VWTBsdFBkekFwcmE1cFBncFZtaXB6czlhVy9vYkZPbXcwZHg0Ymk4SzYxV2JmbmJRWmxlT3RmYXk5VWZ6dXRCRE9GblJ5K2pYOG5QTkxDdmRMT2JTck9acVdVYlBXcWdTM3dkREpuRFJ6enBZb2Q3NGxkdDUzemFyd0EvbTF3cDRPSlhQbHg3Z09DRm5kc1ZaL1k3V0dSYkpPdXZTVzhDV3libWNkN0R1dmVmYXlrOWRmL0FNb0FYSlRPVVM4aDdUR2JkbExiRWJ2YjZidkpKeExMdDc4cytMejBxWTdvdjRWWTd5djlQb21LTjlwTnNlRC9HdC9OOXIraVJuN2xTQm44dTlicmd3WjhrN1JKZWh2eUNJckRMUkdVZnZSSEx0azJWbUwzZ3J6b2ZRM0ZTNUcwTS9KQloycDBPL2tuM05IV0EveTYvM0YyaU9iYWxwaDVHeUIrNUgwSVptV3l1NXZzcWVHcVNkeWEzQVowTWZJRFJJdlhZbC9zdlkwNEZZSTU1TUk2UmZRMytZaG9KR05jSjZGa0VZMkFocFpDT2RGQ0dsa0lhQ3hHT0djaFpER1lyL3dsV0VKeFhDK0RTSDh6N1JoZjhjRitDekhlS3Z3V3RlczdnQlFqZUpTdWgrQ1NwWmphZC9aVitMcjgrVmN0VDQ3QUJSckVWQ1Zic0ZlNHVRdDVZUTBnTzYwRGlZSjZwYTM2Ry9tN3VkQVNBUG94cHFCSkhzN2ZLaTBoZXhXWG52eFhnNkVOSURWOVJSRXNvWHB0T0hSSDVtQnZaVy92ZExZR3BTUUJyQ2FuZ01vODZrdDZuczRFTklBbXVzOWVIb0o2RUJJQTJqSlF1RDBGTkNCa0FiUWdwV2c2UzJnQXlFTm9DWkxBZE5qUUFkQ0drQU4xb0tsMTRBT2hEUUFUUllEcGVlQURvUTBBQTFXZzZUM2dBNkVOSUFTbGdQRVFrQUhRaHBBRHV2QllTV2dBeUVOWUlrUkFzTlNRQWRDR3NBY293U0Z0WUFPaERTQVUwWUtDSXNCSFFocEFNZU1GZ3hXQXpvUTBnQU9qUmdJbGdNNkVOSUF3c0JCWUQyZ0F5RU4rRFp5QUl3UTBJR1FCbndhdmVPUEV0Q0JrQVo4OGREaFJ3cm9RRWdEUG5qcDZLTUZkQ0NrZ2JGNTZ1QWpCblFncElFeGVldllvd1owSUtTQnNYanMwQ01IZENDa2dURjQ3Y2lqQjNRZ3BBSGJQSGRnRHdFZENHbjNZSlQzanVzbG9BTzFCbXlody9vSzZFRE5BUnZvcU45NEMraEE3WUcrMFVHLzh4alFnVFlBOUltTytTT3ZBUjFvQzBCZjZKQS84eHpRZ1RZQjlJR09lSnozZ0E2MERXQmRkTUNYRWREZjBFYUFGZER4VGlPZ3Y2T3RBQTNSNFY1SFFQK0lOZ00wUUVlYmg0RCtHVzBIcUlnT05oOEJmUnh0Q0tpQWpyVU1BZjB5MmhLZ2lBNjFIQUY5R20wS1VFQkh5a05BdjQ2MkJSU2dBK1Vqb09laGpRRVo2RGhsQ09qNWFHdkFBblNZY2dUME1yUTVZQVk2aWc0Q2VqbmFIbkFDSFVRUEFaMkhOZ2djUWNmUVJVRG5veTBDQitnUStnam9NclJKTy83bS9RdllTeW1kaHhEZXZQQS9QOFVZSHpKZWMyckExd3FIZHh0ai9FM2hkWUF3dGFXVVVsQm9tOWZUNitTMHpScjlEWU5JS2IxSktWMmxsRDZsbExZTFJnd2IrWnVyR1EyUVVVb0ZVOGZPL0c1dkpCUWdXcmJSZy82MldmQzYyMzEvbS9vc2RSdWNuQnByTmNxZE5KNjN6Nzgxd2xuWDlCM0xkNzFUK0U1ZnJKdEhOZHRxaGJyZE1GVTFJQW5tSmIvY1M5M3RPenpockVkR3kzZVY2K1orVkszZFppV1lhOVp0UTFBUFFCcEt6V0IrYnNsMHlTbmUxem0vVVF5TldkKzM5MU5veGU5YnF3L01zZUZNeUtpVTByWFNxVlZyM3NQNWFxVzY3ZVpjV3hoWjR4OUZMVlBkTkM3RW94V2pEUzBSenYrZHIxemJwdzYraXRYUWQxQ05uQnEzUE1YUzVIbHZqZFpUR3E5eFBlVmhPS1MzbzlVdGRuQU1LcVF3bXhDQ3hZcytidGM1ZDF5M2FSM3VaWXp4cVlOamFVNXhEWDlyUTlYdGx3Nk9RUXZoYk5OTnAzVTdsMk56U2Rya3JjSFBmaTVaTUlRaEFscCs3UWxuWTZSdVBWK1l1L0k4OVdRNXBKbVQ3b1NzMXJESSt3WEJLME0xWTNXSFRlWlhkNWllZzVZMWtOc1Q5L1QzeXZ2STJWcmRwdm5NaXhqall3ZkhzZ3FqYzlMbTYyWTlvS2U1SnEwN2lxWWkzb2NRL256MjM1L0plMmd0aUgrSU1WNG92WlpKMDExbWlsTWJyZXIyT2NiNFh1bTFUSnBXU1NoT0piYXEyMzJNOFZMcHRUQlg1cGFUeDh6YVJLZGdrNTVqM043OVpMeHVuaCtiOVZicE82UnVIaWpjd24yWEU1Uksrd3g0WHZOc3VXN0RyQTVZU2lFc3Fac1hDcU93RDZWZjFmUWFoY2ZnYmhROVNOM2NqY1lVUnMvVXpaUENYM08xQ3gyRkswamMzVkk4U04zY25mMFUzb0pQM1R5UjI0SnpGZitTUDFmd3k3NXpXTHZjVFpDbzI0b0dxVnZ5dm1OaEV3WHJaKzlxSFYvQkhKbWI5YlhVelNicXRpNkxkeEsreS95N2o4ckhvZkhhdVovRkl1cG1FM1Zia2NXQXpwbnN2NjI1V0YxZU8rZVdXRTlQOHhpcGJwNHVPT1cwVWVybVZlYXBUZlVnbEhXYmkza3BJM1d6aWJxdHk5UUlPclB3ankwZTRTN3ZzWGpVNE9HWmVOVE5KdXEyUG10VEhEbFhZZThySElmbWUzbTRza3pkYktKdUt4dHBQK2lYUEwvWGY1VDNHaDExczRtNktmSXdnc2I2ZVBLeVRmUzNsWGtZUWZmT1EzaU51RTBuUHpvMm1hcWJ0WUFlOGZsd2J2Y1lOczVEM2VodksvTXdnajRiOUwxR1I5MXNvbTZLUEl5Z1d5NU96M2t2RDArTnBtNDJVVGNzdzhKNW02aWJUZFJ0WFJhbk9ISVd3ZjllNFRnMDNxUDZndjZPVURlYnFOdUtMQVowenVMMDY1b2I1TXRyNSt4NzIzSlIvOXFvbTAzVWJVVVdBL3BMNXQvVjNDQS85N1Z6UDR0RjFNMG02b2I1UnRxdzM5TUc0dFROSnVxR25DTHg2Q1NEcUp0TjFBMUxDOFhEUncyaWJ0U3Q0QmlvbXlVOHZwKzZMWHhmNmxhQXVtRnA0VXAvMWZkdTVxemJsSFdYSmFkNmg5eittbE0zbTZqYk9xTHhSck5SdkhQcFVaYmg3TGN3ZkpMZHZNN2tQYlNXRGQzSEdDK1ZYc3NrNm1ZVGRXdlBla0JQUmR3YTJoWnhhb1FYTlovWFpnRjFzNG02dFdkNnN5VDU0bXMrUFZqYlIrK2RQRkEzczZnYnNpak9WZFhFTXA5bnFKdE4xSzBkMDFNY2gxSksyOHhIeExmd0VHTzg2UFRZVmtYZGJLSnViWXkwSC9SbHA1dWhQTWl4NFRqcVpoTjFhMkNZRVhTUTIxSkRDSnVPZnRuLzIxaGlqT3hCZXdKMXM0bTZJVXNuYzJUTVhTNUUzV3lpYmxoTTd0dmZyZEJRZHByN0QzaEQzV3lpYmxoTWJoTXR2VVYxaVUzTmZYQzlvRzQyVVRka2tkdFVhemFjRFp1eDZLTnVObEUzWkpHR2M2TjBLcmFUMTZLaFZFYmRiS0p1NVlaYXhUR1hYSDJlQ3YxTy9qbjNLdlNEN0Ivd1JlN3g1MnB4UTlUTkp1cVd6MlZBSHlNN2JMMjB4OEJUak5IVGcwTE5vRzQyVVRjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZElZVC9CKzZIc1RWSmg5RHZBQUFBQUVsRlRrU3VRbUNDIiAvPgogIDwvZGVmcz4KPC9zdmc+ + + packages: + - backstage-community-plugin-topology + - backstage-plugin-kubernetes + - backstage-plugin-kubernetes-backend diff --git a/check_pairs_current_state.py b/check_pairs_current_state.py new file mode 100644 index 0000000000..74413c0680 --- /dev/null +++ b/check_pairs_current_state.py @@ -0,0 +1,54 @@ +import re +import os +from collections import defaultdict + +# Check current titles for all frontend/backend pairs +pairs_info = [] + +for filename in sorted(os.listdir('.')): + if filename.endswith('.yaml') and filename != 'all.yaml': + with open(filename, 'r') as f: + content = f.read() + + match = re.search(r'^\s*title:\s*"([^"]*)"', content, re.MULTILINE) + if match: + title = match.group(1) + pairs_info.append((filename, title)) + +# Group by base name to identify pairs +base_groups = defaultdict(list) +for filename, title in pairs_info: + # Remove -backend to group pairs + if filename.endswith('-backend.yaml'): + base_name = filename[:-13] # Remove '-backend.yaml' + base_groups[base_name].append(('backend', filename, title)) + else: + base_name = filename[:-5] # Remove '.yaml' + base_groups[base_name].append(('frontend', filename, title)) + +# Show pairs that have both frontend and backend +print("📋 CURRENT STATE OF FRONTEND/BACKEND PAIRS:") +print("=" * 70) + +true_pairs = [] +for base_name, items in base_groups.items(): + if len(items) == 2: # Has both frontend and backend + items.sort() # Sort so backend comes first, frontend second + backend_info = next((item for item in items if item[0] == 'backend'), None) + frontend_info = next((item for item in items if item[0] == 'frontend'), None) + + if backend_info and frontend_info: + true_pairs.append((base_name, frontend_info, backend_info)) + +# Display the pairs +for i, (base_name, frontend_info, backend_info) in enumerate(sorted(true_pairs)[:10]): + print(f"\n{i+1}. {base_name.replace('backstage-community-plugin-', '').replace('backstage-plugin-', '')}") + print(f" Frontend: \"{frontend_info[2]}\" ({frontend_info[1]})") + print(f" Backend: \"{backend_info[2]}\" ({backend_info[1]})") + + # Check if they're properly distinguished + if not (('Frontend' in frontend_info[2] or frontend_info[2].endswith(backend_info[2].replace(' Backend', ''))) + and 'Backend' in backend_info[2]): + print(f" ⚠️ May need better differentiation") + +print(f"\n📊 Found {len(true_pairs)} frontend/backend pairs") diff --git a/dynamic-plugins-root-test-ignore/.gitkeep b/dynamic-plugins-root-test-ignore/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintignore b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintrc.js b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/package.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/package.json new file mode 100644 index 0000000000..96f21be2c7 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/package.json @@ -0,0 +1,67 @@ +{ + "name": "backstage-community-plugin-tech-radar", + "version": "1.7.1", + "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": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "tech-radar", + "pluginPackages": [ + "backstage-community-plugin-tech-radar", + "backstage-community-plugin-tech-radar-backend" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@backstage-community/plugin-tech-radar": "1.7.1", + "@backstage-community/plugin-tech-radar-common": "1.6.0", + "@backstage/core-plugin-api": "^1.10.9", + "@mui/icons-material": "5.18.0" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "typescript": "5.9.2" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "backstage-community.plugin-tech-radar", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/backstage-community-plugin-tech-radar" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/backstage/community-plugins/issues", + "keywords": [ + "support:tech-preview", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/src/index.ts b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/src/index.ts new file mode 100644 index 0000000000..c4b1ff893e --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/src/index.ts @@ -0,0 +1,2 @@ +export * from '@backstage-community/plugin-tech-radar'; +export { default as TechRadarIcon } from '@mui/icons-material/MyLocation'; diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/tsconfig.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/tsconfig.json new file mode 100644 index 0000000000..304c924915 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/backstage-community-plugin-tech-radar", + "rootDir": "." + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/turbo.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/turbo.json new file mode 100644 index 0000000000..6a06d6be63 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tech-radar/turbo.json @@ -0,0 +1,10 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": [ + "../../dist-types/wrappers/backstage-community-plugin-tech-radar/**" + ] + } + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintignore b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintrc.js b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/package.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/package.json new file mode 100644 index 0000000000..80dfed10dd --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/package.json @@ -0,0 +1,64 @@ +{ + "name": "backstage-community-plugin-tekton", + "version": "3.26.2", + "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": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "tekton", + "pluginPackages": [ + "backstage-community-plugin-tekton" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@backstage-community/plugin-tekton": "3.26.2", + "@mui/material": "5.18.0" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "typescript": "5.9.2" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "backstage-community.plugin-tekton", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/backstage-community-plugin-tekton" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/backstage/community-plugins/issues", + "keywords": [ + "support:production", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/src/index.ts b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/src/index.ts new file mode 100644 index 0000000000..11401e51c0 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/src/index.ts @@ -0,0 +1,10 @@ +import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/material/className'; + +ClassNameGenerator.configure(componentName => { + return componentName.startsWith('v5-') + ? componentName + : `v5-${componentName}`; +}); + +export * from '@backstage-community/plugin-tekton'; + diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/tsconfig.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/tsconfig.json new file mode 100644 index 0000000000..9cf85967e0 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/backstage-community-plugin-tekton", + "rootDir": "." + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/turbo.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/turbo.json new file mode 100644 index 0000000000..f6d8fe4cd1 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-tekton/turbo.json @@ -0,0 +1,10 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": [ + "../../dist-types/wrappers/backstage-community-plugin-tekton/**" + ] + } + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintignore b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintrc.js b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/package.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/package.json new file mode 100644 index 0000000000..bf396aaaf1 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/package.json @@ -0,0 +1,77 @@ +{ + "name": "backstage-community-plugin-topology", + "version": "2.2.2", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public" + }, + "backstage": { + "role": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "topology", + "pluginPackages": [ + "backstage-community-plugin-topology" + ] + }, + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean-dynamic-sources": "yarn clean && rm -Rf node_modules", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@backstage-community/plugin-topology": "2.2.2", + "@mui/material": "5.18.0" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "typescript": "5.9.2" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "backstage-community.plugin-topology", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/backstage-community-plugin-topology" + }, + "keywords": [ + "support:production", + "lifecycle:active" + ], + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/janus-idp/backstage-plugins/issues", + "maintainers": [ + "debsmita1", + "divyanshiGupta", + "ciiay" + ], + "author": "Red Hat" +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/src/index.ts b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/src/index.ts new file mode 100644 index 0000000000..33a3c3a3e0 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/src/index.ts @@ -0,0 +1,9 @@ +import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/material/className'; + +ClassNameGenerator.configure(componentName => { + return componentName.startsWith('v5-') + ? componentName + : `v5-${componentName}`; +}); + +export * from '@backstage-community/plugin-topology'; diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/tsconfig.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/tsconfig.json new file mode 100644 index 0000000000..083a22eff8 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/backstage-community-plugin-topology", + "rootDir": "." + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/turbo.json b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/turbo.json new file mode 100644 index 0000000000..d33c6ead66 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-community-plugin-topology/turbo.json @@ -0,0 +1,10 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": [ + "../../dist-types/wrappers/backstage-community-plugin-topology/**" + ] + } + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintignore b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintrc.js b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/package.json b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/package.json new file mode 100644 index 0000000000..24ea637fbe --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/package.json @@ -0,0 +1,65 @@ +{ + "name": "backstage-plugin-kubernetes", + "version": "0.12.7", + "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": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "kubernetes", + "pluginPackages": [ + "backstage-plugin-kubernetes", + "backstage-plugin-kubernetes-backend" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@backstage/core-plugin-api": "^1.10.9", + "@backstage/plugin-kubernetes": "^0.12.10" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "typescript": "5.9.2" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "backstage.plugin-kubernetes", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/backstage-plugin-kubernetes" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/backstage/backstage/issues", + "keywords": [ + "support:tech-preview", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/src/index.ts b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/src/index.ts new file mode 100644 index 0000000000..c87e222c03 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/src/index.ts @@ -0,0 +1,66 @@ +import { + type ApiRef, + type BackstageIdentityApi, + type OAuthApi, + type OpenIdConnectApi, + type ProfileInfoApi, + type SessionApi, + createApiFactory, + createApiRef, + gitlabAuthApiRef, + googleAuthApiRef, + microsoftAuthApiRef, + oktaAuthApiRef, + oneloginAuthApiRef, +} from '@backstage/core-plugin-api'; +import { + KubernetesAuthProviders, + kubernetesAuthProvidersApiRef, +} from '@backstage/plugin-kubernetes'; + +export * from '@backstage/plugin-kubernetes'; + +type CustomAuthApiRefType = OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi; + +const oidcAuthApiRef: ApiRef = createApiRef({ + id: 'internal.auth.oidc', +}); + +export const kubernetesAuthApi = createApiFactory({ + api: kubernetesAuthProvidersApiRef, + deps: { + gitlabAuthApi: gitlabAuthApiRef, + googleAuthApi: googleAuthApiRef, + microsoftAuthApi: microsoftAuthApiRef, + oidcAuthApi: oidcAuthApiRef, + oktaAuthApi: oktaAuthApiRef, + oneloginAuthApi: oneloginAuthApiRef, + }, + factory: ({ + gitlabAuthApi, + googleAuthApi, + microsoftAuthApi, + oktaAuthApi, + oneloginAuthApi, + oidcAuthApi, + }) => { + const oidcProviders = { + gitlab: gitlabAuthApi, + google: googleAuthApi, + microsoft: microsoftAuthApi, + okta: oktaAuthApi, + onelogin: oneloginAuthApi, + oidc: oidcAuthApi, + }; + + return new KubernetesAuthProviders({ + microsoftAuthApi, + googleAuthApi, + oidcProviders, + }); + }, +}); diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/tsconfig.json b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/tsconfig.json new file mode 100644 index 0000000000..dcc8e843e5 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/backstage-plugin-kubernetes", + "rootDir": "." + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/turbo.json b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/turbo.json new file mode 100644 index 0000000000..a4cdad5bd9 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-kubernetes/turbo.json @@ -0,0 +1,8 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": ["../../dist-types/wrappers/backstage-plugin-kubernetes/**"] + } + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintignore b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintrc.js b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-signals/package.json b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/package.json new file mode 100644 index 0000000000..19aaf65a83 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/package.json @@ -0,0 +1,65 @@ +{ + "name": "backstage-plugin-signals", + "version": "0.0.19", + "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": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "signals", + "pluginPackages": [ + "backstage-plugin-signals", + "backstage-plugin-signals-backend" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@backstage/plugin-signals": "^0.0.22", + "@mui/material": "5.18.0" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "typescript": "5.9.2" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "backstage.plugin-signals", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/backstage-plugin-signals" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/backstage/backstage/issues", + "keywords": [ + "support:tech-preview", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-signals/src/index.ts b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/src/index.ts new file mode 100644 index 0000000000..da09e5bae4 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/src/index.ts @@ -0,0 +1,9 @@ +import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/material/className'; + +ClassNameGenerator.configure(componentName => { + return componentName.startsWith('v5-') + ? componentName + : `v5-${componentName}`; +}); + +export * from '@backstage/plugin-signals'; diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-signals/tsconfig.json b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/tsconfig.json new file mode 100644 index 0000000000..997d81e844 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/backstage-plugin-signals", + "rootDir": "." + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-signals/turbo.json b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/turbo.json new file mode 100644 index 0000000000..246a4bb020 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-signals/turbo.json @@ -0,0 +1,8 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": ["../../dist-types/wrappers/backstage-plugin-signals/**"] + } + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintignore b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintrc.js b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintrc.js new file mode 100644 index 0000000000..07630f21af --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/.eslintrc.js @@ -0,0 +1,12 @@ +const backstageConfig = require('@backstage/cli/config/eslint-factory')( + __dirname, +); + +module.exports = { + ...backstageConfig, + rules: { + ...backstageConfig.rules, + 'react/react-in-jsx-scope': 'off', + 'react/jsx-uses-react': 'off', + }, +}; diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/package.json b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/package.json new file mode 100644 index 0000000000..3b1527b2fc --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/package.json @@ -0,0 +1,68 @@ +{ + "name": "backstage-plugin-techdocs-module-addons-contrib", + "version": "1.1.24", + "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": "frontend-plugin-module", + "supported-versions": "1.42.5", + "pluginId": "techdocs", + "pluginPackage": "backstage-plugin-techdocs" + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.27", + "@backstage/plugin-techdocs-react": "^1.3.2", + "@material-ui/core": "4.12.4", + "jss": "10.10.0" + }, + "peerDependencies": { + "react": "16.13.1 || ^17.0.0 || ^18.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "react": "18.3.1", + "typescript": "5.9.2" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "backstage.plugin-techdocs-module-addons-contrib", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/backstage-plugin-techdocs-module-addons-contrib" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/backstage/backstage/issues", + "keywords": [ + "support:production", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/ShadowRootStylesProvider.tsx b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/ShadowRootStylesProvider.tsx new file mode 100644 index 0000000000..8b29a1b9dc --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/ShadowRootStylesProvider.tsx @@ -0,0 +1,45 @@ +import React from "react"; + +import type { StylesOptions } from "@material-ui/styles"; + +// It's neccessary that this provider is loaded from `core/styles` not just `styles`! +import { + StylesProvider as WrappedStylesProvider, + jssPreset, +} from "@material-ui/core/styles"; +import { create as createJss } from "jss"; + +/** + * Creates a new JSS StylesProvider that inserts additional styles + * to the current (react and browser) dom position. + * This is only useful in a shadow root world because MUI v4 component + * styles are handled globally. + */ +export const ShadowRootStylesProvider = ({ children }: { children: any }) => { + const [insertionPoint, setInsertionPoint] = + React.useState(null); + + const stylesOptions = React.useMemo(() => { + if (!insertionPoint) { + return null; + } + return { + jss: createJss({ + ...jssPreset(), + insertionPoint, + }), + sheetsManager: new Map(), + }; + }, [insertionPoint]); + + return ( +
+
+ {stylesOptions ? ( + + {children} + + ) : null} +
+ ); +}; diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/addons.tsx b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/addons.tsx new file mode 100644 index 0000000000..bd31d006f2 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/addons.tsx @@ -0,0 +1,59 @@ +import { + ReportIssue as ReportIssueBase, + techdocsModuleAddonsContribPlugin, +} from "@backstage/plugin-techdocs-module-addons-contrib"; + +import React from "react"; + +import { + createTechDocsAddonExtension, + TechDocsAddonLocations, +} from "@backstage/plugin-techdocs-react"; + +import { ShadowRootStylesProvider } from "./ShadowRootStylesProvider"; + +/** + * Automatically wrap the backstage ReportIssue component with a (JSS) + * StylesProvider, the underlaying styling technique under MUI v4. + * + * With this, the additional styles for overlay button are applied correctly + * because the techdocs content is rendered in a shadow root, but the styles + * from the ReportIssue components are added to the root document. + * + * It isn't possible to create an additional shadow root here without reusing + * or copying more components from the techdocs packages. + * + * The addons are rendered with a (react) portal above the content while the + * addon itself is added below the content. + * + * HTML structure: + * + * html root doc + * backstage sidebar + * backstage header + * techdocs shadow root + * left sidebar (content navigation) + * right sidebar (table of content) + * content + * (report issue link is added here when text is selected) + * content itself + * addons + * report issue wrapper + */ +const ReportIssueWrapper = () => { + return ( +
+ + + +
+ ); +}; + +export const ReportIssue = techdocsModuleAddonsContribPlugin.provide( + createTechDocsAddonExtension<{}>({ + name: "ReportIssue", + location: TechDocsAddonLocations.Content, + component: ReportIssueWrapper, + }), +); diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/index.ts b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/index.ts new file mode 100644 index 0000000000..c98c50958b --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/src/index.ts @@ -0,0 +1,2 @@ +export * from "@backstage/plugin-techdocs-module-addons-contrib"; +export { ReportIssue } from "./addons"; diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/tsconfig.json b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/tsconfig.json new file mode 100644 index 0000000000..8aa179ec78 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/backstage-plugin-techdocs-module-addons-contrib", + "rootDir": ".", + "jsx": "preserve" + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/turbo.json b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/turbo.json new file mode 100644 index 0000000000..80810dc5cf --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs-module-addons-contrib/turbo.json @@ -0,0 +1,10 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": [ + "../../dist-types/wrappers/backstage-plugin-techdocs-module-addons-contrib/**" + ] + } + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintignore b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintrc.js b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintrc.js new file mode 100644 index 0000000000..07630f21af --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/.eslintrc.js @@ -0,0 +1,12 @@ +const backstageConfig = require('@backstage/cli/config/eslint-factory')( + __dirname, +); + +module.exports = { + ...backstageConfig, + rules: { + ...backstageConfig.rules, + 'react/react-in-jsx-scope': 'off', + 'react/jsx-uses-react': 'off', + }, +}; diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/package.json b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/package.json new file mode 100644 index 0000000000..52038bced8 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/package.json @@ -0,0 +1,72 @@ +{ + "name": "backstage-plugin-techdocs", + "version": "1.12.6", + "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": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "techdocs", + "pluginPackages": [ + "backstage-plugin-techdocs", + "backstage-plugin-techdocs-backend" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@backstage/core-plugin-api": "^1.10.9", + "@backstage/plugin-catalog-react": "^1.20.1", + "@backstage/plugin-search-react": "^1.9.3", + "@backstage/plugin-techdocs": "^1.14.1", + "@backstage/plugin-techdocs-react": "^1.3.2" + }, + "peerDependencies": { + "react": "16.13.1 || ^17.0.0 || ^18.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "react": "18.3.1", + "typescript": "5.9.2" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "backstage.plugin-techdocs", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/backstage-plugin-techdocs" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/backstage/backstage/issues", + "keywords": [ + "support:production", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/index.ts b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/index.ts new file mode 100644 index 0000000000..66a441e9cd --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/index.ts @@ -0,0 +1,7 @@ +export * from "@backstage/plugin-techdocs"; +export { + EntityTechdocsContent, + TechDocsReaderPage, + TechdocsSearchFilter, + techdocsSearchType, +} from "./wrapped"; diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/types.ts b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/types.ts new file mode 100644 index 0000000000..11c89c1df7 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/types.ts @@ -0,0 +1,13 @@ +export type TechdocsAddon = { + scope: string; + module: string; + importName: string; + Component: React.ComponentType; + config: { + props?: Record; + }; +}; + +export type DynamicConfig = { + techdocsAddons: TechdocsAddon[]; +}; diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/utils.tsx b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/utils.tsx new file mode 100644 index 0000000000..b8311cb532 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/utils.tsx @@ -0,0 +1,14 @@ +import { DynamicConfig, TechdocsAddon } from "./types"; + +function getTechdocsAddonData(dynamicConfig: DynamicConfig): TechdocsAddon[] { + return dynamicConfig?.techdocsAddons ?? []; +} + +export function getTechdocsAddonComponents(dynamicConfig: DynamicConfig) { + const techdocsAddonsData = getTechdocsAddonData(dynamicConfig); + return techdocsAddonsData.map( + ({ scope, module, importName, Component, config }) => ( + + ), + ); +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/wrapped.tsx b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/wrapped.tsx new file mode 100644 index 0000000000..21820a68cf --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/src/wrapped.tsx @@ -0,0 +1,64 @@ +import { + EntityTechdocsContent as EntityTechdocsContentBase, + TechDocsReaderPage as TechDocsReaderPageBase, +} from "@backstage/plugin-techdocs"; +import { SearchFilter, useSearch } from "@backstage/plugin-search-react"; + +import { + CATALOG_FILTER_EXISTS, + catalogApiRef, +} from "@backstage/plugin-catalog-react"; + +import { useApi } from "@backstage/core-plugin-api"; +import { TechDocsAddons } from "@backstage/plugin-techdocs-react"; +import { getTechdocsAddonComponents } from "./utils"; +import { type DynamicConfig } from "./types"; + +export const TechDocsReaderPage = { + element: TechDocsReaderPageBase, + staticJSXContent: (dynamicConfig: DynamicConfig) => { + const children = getTechdocsAddonComponents(dynamicConfig); + return {children}; + }, +}; + +export const EntityTechdocsContent = { + element: EntityTechdocsContentBase, + staticJSXContent: (dynamicConfig: DynamicConfig) => { + const children = getTechdocsAddonComponents(dynamicConfig); + return {children}; + }, +}; + +export const TechdocsSearchFilter = () => { + const { types } = useSearch(); + const catalogApi = useApi(catalogApiRef); + + if (!types.includes("techdocs")) { + return null; + } + + return ( + { + // Return a list of entities which are documented. + const { items } = await catalogApi.getEntities({ + fields: ["metadata.name"], + filter: { + "metadata.annotations.backstage.io/techdocs-ref": + CATALOG_FILTER_EXISTS, + }, + }); + return items.map((entity) => entity.metadata.name).sort(); + }} + /> + ); +}; + +export const techdocsSearchType = (name: string, icon: React.ReactNode) => ({ + name, + icon, + value: "techdocs", +}); diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/tsconfig.json b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/tsconfig.json new file mode 100644 index 0000000000..ac253710e8 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/backstage-plugin-techdocs", + "rootDir": ".", + "jsx": "preserve" + } +} diff --git a/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/turbo.json b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/turbo.json new file mode 100644 index 0000000000..e9c4accf40 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/backstage-plugin-techdocs/turbo.json @@ -0,0 +1,8 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": ["../../dist-types/wrappers/backstage-plugin-techdocs/**"] + } + } +} diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintignore b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintignore new file mode 100644 index 0000000000..70054114f0 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum \ No newline at end of file diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintrc.js b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintrc.js new file mode 100644 index 0000000000..145fa0ed6c --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require("@backstage/cli/config/eslint-factory")(__dirname); \ No newline at end of file diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/package.json b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/package.json new file mode 100644 index 0000000000..31f814b359 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/package.json @@ -0,0 +1,66 @@ +{ + "name": "red-hat-developer-hub-backstage-plugin-adoption-insights", + "version": "0.2.1", + "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": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "red-hat-developer-hub-backstage-plugin-adoption-insights", + "pluginPackages": [ + "red-hat-developer-hub-backstage-plugin-adoption-insights", + "red-hat-developer-hub-backstage-plugin-adoption-insights-backend" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@mui/material": "5.18.0", + "@red-hat-developer-hub/backstage-plugin-adoption-insights": "0.2.1" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "typescript": "5.9.2" + }, + "files": [ + "app-config.dynamic.yaml", + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "red-hat-developer-hub.backstage-plugin-adoption-insights", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-adoption-insights" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://issues.redhat.com/browse/RHDHBUGS", + "keywords": [ + "support:production", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/src/index.ts b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/src/index.ts new file mode 100644 index 0000000000..f3cfb50607 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/src/index.ts @@ -0,0 +1,9 @@ +import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/material/className'; + +ClassNameGenerator.configure(componentName => { + return componentName.startsWith('v5-') + ? componentName + : `v5-${componentName}`; +}) + +export * from "@red-hat-developer-hub/backstage-plugin-adoption-insights"; \ No newline at end of file diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/tsconfig.json b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/tsconfig.json new file mode 100644 index 0000000000..82ca4af442 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/red-hat-developer-hub-backstage-plugin-adoption-insights", + "rootDir": ".", + } +} \ No newline at end of file diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/turbo.json b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/turbo.json new file mode 100644 index 0000000000..d20d2a4ccc --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-adoption-insights/turbo.json @@ -0,0 +1,10 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": [ + "../../dist-types/wrappers/red-hat-developer-hub-backstage-plugin-adoption-insights/**" + ] + } + } +} \ No newline at end of file diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintignore b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintrc.js b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintrc.js new file mode 100644 index 0000000000..958d722cb2 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require("@backstage/cli/config/eslint-factory")(__dirname); diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/package.json b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/package.json new file mode 100644 index 0000000000..c690c41598 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/package.json @@ -0,0 +1,66 @@ +{ + "name": "red-hat-developer-hub-backstage-plugin-marketplace", + "version": "0.8.6", + "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": "frontend-plugin", + "supported-versions": "1.42.5", + "pluginId": "red-hat-developer-hub-backstage-plugin-marketplace", + "pluginPackages": [ + "@red-hat-developer-hub/backstage-plugin-marketplace", + "@red-hat-developer-hub/backstage-plugin-marketplace-backend" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@mui/material": "5.18.0", + "@red-hat-developer-hub/backstage-plugin-marketplace": "0.8.6" + }, + "devDependencies": { + "@backstage/cli": "^0.34.1", + "@janus-idp/cli": "3.6.1", + "typescript": "5.9.2" + }, + "files": [ + "app-config.dynamic.yaml", + "dist", + "dist-scalprum" + ], + "scalprum": { + "name": "red-hat-developer-hub.backstage-plugin-marketplace", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace" + }, + "maintainers": [ + "@janus-idp/maintainers-showcase" + ], + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://issues.redhat.com/browse/RHDHBUGS", + "keywords": [ + "support:tech-preview", + "lifecycle:active" + ] +} diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/src/index.ts b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/src/index.ts new file mode 100644 index 0000000000..5957a35302 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/src/index.ts @@ -0,0 +1,9 @@ +import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/material/className'; + +ClassNameGenerator.configure(componentName => { + return componentName.startsWith('v5-') + ? componentName + : `v5-${componentName}`; +}) + +export * from "@red-hat-developer-hub/backstage-plugin-marketplace"; diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/tsconfig.json b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/tsconfig.json new file mode 100644 index 0000000000..c4b7f0a4cd --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../dist-types/wrappers/red-hat-developer-hub-backstage-plugin-marketplace", + "rootDir": "." + } +} diff --git a/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/turbo.json b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/turbo.json new file mode 100644 index 0000000000..5f62fbb6b3 --- /dev/null +++ b/dynamic-plugins-root-test-ignore/red-hat-developer-hub-backstage-plugin-marketplace/turbo.json @@ -0,0 +1,10 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": [ + "../../dist-types/wrappers/red-hat-developer-hub-backstage-plugin-marketplace/**" + ] + } + } +} diff --git a/dynamic-plugins.yaml b/dynamic-plugins.yaml new file mode 100644 index 0000000000..4625b4e445 --- /dev/null +++ b/dynamic-plugins.yaml @@ -0,0 +1,179 @@ +plugins: + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic + disabled: false + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import + disabled: true + pluginConfig: + dynamicPlugins: + frontend: + red-hat-developer-hub.backstage-plugin-bulk-import: + appIcons: + - name: bulkImportIcon3 + importName: BulkImportIcon3 + dynamicRoutes: + - path: /bulk-import/repositories + importName: BulkImportPage + menuItem: + icon: bulkImportIcon + text: Bulk import + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace + disabled: false # DEBSMITA TEST + pluginConfig: + dynamicPlugins: + frontend: + red-hat-developer-hub.backstage-plugin-marketplace: + appIcons: + - name: marketplace + importName: MarketplaceIcon1 + dynamicRoutes: + - path: /extensions/catalog + importName: DynamicMarketplacePluginRouter + mountPoints: + - mountPoint: internal.plugins/tab + importName: DynamicMarketplacePluginContent + config: + path: marketplace + title: Catalog + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic + disabled: true + - package: ./dynamic-plugins/dist/backstage-community-plugin-quay + disabled: false + # TODO: enable + pluginConfig: + dynamicPlugins: + frontend: + backstage-community.plugin-quay: + mountPoints: + - mountPoint: entity.page.image-registry/cards + importName: QuayPage + config: + layout: + gridColumn: 1 / -1 + if: + anyOf: + - isQuayAvailable + - package: ./dynamic-plugins/dist/backstage-community-plugin-3scale-backend-dynamic + disabled: true + - package: ./dynamic-plugins/dist/backstage-community-plugin-topology + disabled: true + # - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic + # disabled: true + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-header + disabled: false + pluginConfig: + app: + sidebar: + search: false + settings: false + logo: false + dynamicPlugins: + frontend: + default.main-menu-items: + menuItems: + default.create: + title: Global Header + red-hat-developer-hub.backstage-plugin-global-header: + mountPoints: + - mountPoint: application/header + importName: GlobalHeader + config: + position: above-sidebar + - mountPoint: global.header/component + importName: CompanyLogo + config: + priority: 200 + props: + to: / + - mountPoint: global.header/component + importName: SearchComponent + config: + priority: 100 + - mountPoint: global.header/component + importName: Spacer + config: + priority: 99 + props: + growFactor: 0 + - mountPoint: global.header/component + importName: HeaderIconButton + config: + priority: 90 + props: + title: Self-service + icon: add + to: create + - mountPoint: global.header/component + importName: StarredDropdown + config: + priority: 85 + - mountPoint: global.header/component + importName: ApplicationLauncherDropdown + config: + priority: 82 + - mountPoint: global.header/application-launcher + importName: MenuItemLink + config: + section: Documentation + priority: 150 + props: + title: Developer Hub + icon: developerHub + link: https://docs.redhat.com/en/documentation/red_hat_developer_hub + - mountPoint: global.header/application-launcher + importName: MenuItemLink + config: + section: Developer Tools + priority: 100 + props: + title: RHDH Local + icon: developerHub + link: https://github.com/redhat-developer/rhdh-local + - mountPoint: global.header/component + importName: HelpDropdown + config: + priority: 80 + - mountPoint: global.header/help + importName: SupportButton + config: + priority: 10 + - mountPoint: global.header/component + importName: NotificationButton + config: + priority: 70 + - mountPoint: global.header/component + importName: Divider + config: + priority: 50 + - mountPoint: global.header/component + importName: ProfileDropdown + config: + priority: 10 + - mountPoint: global.header/profile + importName: MenuItemLink + config: + priority: 100 + props: + title: Settings + link: /settings + icon: manageAccounts + - mountPoint: global.header/profile + importName: MenuItemLink + config: + priority: 90 + props: + title: My profile + icon: account + - mountPoint: global.header/profile + importName: LogoutButton + config: + priority: 10 + - package: ./dynamic-plugins/dist/backstage-community-plugin-rbac + disabled: true + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-dynamic-home-page + disabled: true + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-adoption-insights + disabled: true + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-adoption-insights-backend-dynamic + disabled: true + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-analytics-module-adoption-insights-dynamic + disabled: true diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-dynamic-home-page/package.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-dynamic-home-page/package.json index 9daf4adca8..89dfea045d 100644 --- a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-dynamic-home-page/package.json +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-dynamic-home-page/package.json @@ -1,6 +1,6 @@ { "name": "red-hat-developer-hub-backstage-plugin-dynamic-home-page", - "version": "1.9.3", + "version": "1.9.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,7 +29,7 @@ }, "dependencies": { "@mui/material": "5.18.0", - "@red-hat-developer-hub/backstage-plugin-dynamic-home-page": "1.9.3" + "@red-hat-developer-hub/backstage-plugin-dynamic-home-page": "1.9.2" }, "devDependencies": { "@backstage/cli": "^0.34.1", diff --git a/e2e-tests/package.json b/e2e-tests/package.json index d416e84461..3954201dda 100644 --- a/e2e-tests/package.json +++ b/e2e-tests/package.json @@ -18,8 +18,8 @@ "showcase-auth-providers": "playwright test --project=showcase-auth-providers", "showcase-sanity-plugins": "playwright test --project=showcase-sanity-plugins", "showcase-localization-fr": "LOCALE=fr playwright test --project=showcase-localization-fr", - "lint:check": "eslint . --ext .js,.ts", - "lint:fix": "eslint . \"playwright/**/*.{ts,js}\" --fix", + "lint:check": "eslint .", + "lint:fix": "eslint . --fix", "postinstall": "playwright install chromium", "tsc": "tsc", "tsc:check": "tsc -p tsconfig.json", diff --git a/e2e-tests/playwright/e2e/localization/locale.ts b/e2e-tests/playwright/e2e/localization/locale.ts index 3c712810dd..856cc4b01f 100644 --- a/e2e-tests/playwright/e2e/localization/locale.ts +++ b/e2e-tests/playwright/e2e/localization/locale.ts @@ -1,14 +1,12 @@ -import frRhdh from "../../../../translations/rhdh_v1.8_s3281-fr-C.json" with { type: "json" }; -import frCorePlugins from "../../../../translations/core-plugins_v1.8_s3281-fr-C.json" with { type: "json" }; -import frCommunityPlugins from "../../../../translations/community-plugins_v1.8_s3281-fr-C.json" with { type: "json" }; -import frRhdhPlugins from "../../../../translations/rhdh-plugins__v1.8_s3281-fr-C.json" with { type: "json" }; +import frRhdh from "../../../../translations/rhdh-reference-2025-12-05-fr-C.json" with { type: "json" }; +import frCommunityPlugins from "../../../../translations/community-plugins-reference-2025-12-05-fr-C.json" with { type: "json" }; +import frRhdhPlugins from "../../../../translations/rhdh-plugins-reference-2025-12-05-fr-C.json" with { type: "json" }; import frMissingTranslations from "../../../../translations/test/missing-fr-translations.json" with { type: "json" }; import en from "../../../../translations/test/all-v1.8_s3281-en.json" with { type: "json" }; const fr = { ...frRhdh, - ...frCorePlugins, ...frCommunityPlugins, ...frRhdhPlugins, ...frMissingTranslations, diff --git a/e2e-tests/playwright/utils/accessibility.ts b/e2e-tests/playwright/utils/accessibility.ts index 1ae7d7e694..1f01491296 100644 --- a/e2e-tests/playwright/utils/accessibility.ts +++ b/e2e-tests/playwright/utils/accessibility.ts @@ -6,7 +6,7 @@ export async function runAccessibilityTests( testInfo: TestInfo, attachName = "accessibility-scan-results.violations.json", ) { - const accessibilityScanResults = await new AxeBuilder({ page }) + const accessibilityScanResults = await new AxeBuilder({ page } as any) .withTags(["wcag2a", "wcag2aa", "wcag21a", "wcag21aa"]) .disableRules(["color-contrast"]) .analyze(); diff --git a/i18n/reference.json b/i18n/reference.json new file mode 100644 index 0000000000..801ab9e2cc --- /dev/null +++ b/i18n/reference.json @@ -0,0 +1,134 @@ +{ + "catalog": { + "en": { + "indexPage.createButtonTitle": "Self-service" + } + }, + "catalog-import": { + "en": { + "defaultImportPage.headerTitle": "Import an existing Git repository", + "importInfoCard.title": "Import an existing Git repository" + } + }, + "core-components": { + "en": { + "table.filter.placeholder": "All results", + "table.body.emptyDataSourceMessage": "No records to display", + "table.pagination.firstTooltip": "First Page", + "table.pagination.labelDisplayedRows": "{from}-{to} of {count}", + "table.pagination.labelRowsSelect": "rows", + "table.pagination.lastTooltip": "Last Page", + "table.pagination.nextTooltip": "Next Page", + "table.pagination.previousTooltip": "Previous Page", + "table.toolbar.search": "Filter", + "alertDisplay.message_one": "({{ count }} newer message)", + "alertDisplay.message_other": "({{ count }} newer messages)", + "table.header.actions": "Actions", + "oauthRequestDialog.message": "Sign-in to allow {{appTitle}} access to {{provider}} APIs and identities." + } + }, + "rhdh": { + "en": { + "menuItem.home": "Home", + "menuItem.myGroup_one": "My Group", + "menuItem.myGroup_other": "My Groups", + "menuItem.catalog": "Catalog", + "menuItem.apis": "APIs", + "menuItem.learningPaths": "Learning Paths", + "menuItem.selfService": "Self-service", + "menuItem.userSettings": "User Settings", + "menuItem.administration": "Administration", + "menuItem.extensions": "Extensions", + "menuItem.clusters": "Clusters", + "menuItem.rbac": "RBAC", + "menuItem.bulkImport": "Bulk import", + "menuItem.docs": "Docs", + "menuItem.lighthouse": "Lighthouse", + "menuItem.techRadar": "Tech Radar", + "menuItem.orchestrator": "Orchestrator", + "menuItem.adoptionInsights": "Adoption Insights", + "sidebar.menu": "Menu", + "sidebar.home": "Home", + "sidebar.homeLogo": "Home logo", + "signIn.page.title": "Select a sign-in method", + "signIn.providers.auth0.title": "Auth0", + "signIn.providers.auth0.message": "Sign in using Auth0", + "signIn.providers.atlassian.title": "Atlassian", + "signIn.providers.atlassian.message": "Sign in using Atlassian", + "signIn.providers.microsoft.title": "Microsoft", + "signIn.providers.microsoft.message": "Sign in using Microsoft", + "signIn.providers.bitbucket.title": "Bitbucket", + "signIn.providers.bitbucket.message": "Sign in using Bitbucket", + "signIn.providers.bitbucketServer.title": "Bitbucket Server", + "signIn.providers.bitbucketServer.message": "Sign in using Bitbucket Server", + "signIn.providers.github.title": "GitHub", + "signIn.providers.github.message": "Sign in using GitHub", + "signIn.providers.gitlab.title": "GitLab", + "signIn.providers.gitlab.message": "Sign in using GitLab", + "signIn.providers.google.title": "Google", + "signIn.providers.google.message": "Sign in using Google", + "signIn.providers.oidc.title": "OIDC", + "signIn.providers.oidc.message": "Sign in using OIDC", + "signIn.providers.okta.title": "Okta", + "signIn.providers.okta.message": "Sign in using Okta", + "signIn.providers.onelogin.title": "OneLogin", + "signIn.providers.onelogin.message": "Sign in using OneLogin", + "signIn.providers.saml.title": "SAML", + "signIn.providers.saml.message": "Sign in using SAML", + "catalog.entityPage.overview.title": "Overview", + "catalog.entityPage.topology.title": "Topology", + "catalog.entityPage.issues.title": "Issues", + "catalog.entityPage.pullRequests.title": "Pull/Merge Requests", + "catalog.entityPage.ci.title": "CI", + "catalog.entityPage.cd.title": "CD", + "catalog.entityPage.kubernetes.title": "Kubernetes", + "catalog.entityPage.imageRegistry.title": "Image Registry", + "catalog.entityPage.monitoring.title": "Monitoring", + "catalog.entityPage.lighthouse.title": "Lighthouse", + "catalog.entityPage.api.title": "API", + "catalog.entityPage.dependencies.title": "Dependencies", + "catalog.entityPage.docs.title": "Docs", + "catalog.entityPage.definition.title": "Definition", + "catalog.entityPage.diagram.title": "System Diagram", + "catalog.entityPage.workflows.title": "Workflows", + "app.scaffolder.title": "Self-service", + "app.search.title": "Search", + "app.search.resultType": "Result Type", + "app.search.softwareCatalog": "Software Catalog", + "app.search.filters.kind": "Kind", + "app.search.filters.lifecycle": "Lifecycle", + "app.search.filters.component": "Component", + "app.search.filters.template": "Template", + "app.search.filters.experimental": "experimental", + "app.search.filters.production": "production", + "app.learningPaths.title": "Learning Paths", + "app.learningPaths.error.title": "Could not fetch data.", + "app.learningPaths.error.unknownError": "Unknown error", + "app.userSettings.infoCard.title": "RHDH Metadata", + "app.userSettings.infoCard.metadataCopied": "Metadata copied to clipboard", + "app.userSettings.infoCard.copyMetadata": "Copy metadata to your clipboard", + "app.userSettings.infoCard.showLess": "Show less", + "app.userSettings.infoCard.showMore": "Show more", + "app.errors.contactSupport": "Contact support", + "app.errors.goBack": "Go back", + "app.errors.notFound.message": "We couldn't find that page", + "app.errors.notFound.additionalInfo": "The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.", + "app.table.createdAt": "Created At" + } + }, + "scaffolder": { + "en": { + "templateListPage.contentHeader.registerExistingButtonTitle": "Import an existing Git repository" + } + }, + "search": { + "en": { + "sidebarSearchModal.title": "Search" + } + }, + "user-settings": { + "en": { + "sidebarTitle": "Settings" + } + } +} diff --git a/i18n/reference.json.backup b/i18n/reference.json.backup new file mode 100644 index 0000000000..8a7c636a61 --- /dev/null +++ b/i18n/reference.json.backup @@ -0,0 +1,133 @@ +{ + "catalog": { + "en": { + "indexPage.createButtonTitle": "Self-service" + } + }, + "catalog-import": { + "en": { + "defaultImportPage.headerTitle": "Import an existing Git repository", + "importInfoCard.title": "Import an existing Git repository" + } + }, + "core-components": { + "en": { + "table.filter.placeholder": "All results", + "table.body.emptyDataSourceMessage": "No records to display", + "table.pagination.firstTooltip": "First Page", + "table.pagination.labelDisplayedRows": "{from}-{to} of {count}", + "table.pagination.labelRowsSelect": "rows", + "table.pagination.lastTooltip": "Last Page", + "table.pagination.nextTooltip": "Next Page", + "table.pagination.previousTooltip": "Previous Page", + "table.toolbar.search": "Filter", + "alertDisplay.message_one": "({{ count }} newer message)", + "alertDisplay.message_other": "({{ count }} newer messages)", + "table.header.actions": "Actions", + "oauthRequestDialog.message": "Sign-in to allow {{appTitle}} access to {{provider}} APIs and identities." + } + }, + "rhdh": { + "en": { + "menuItem.home": "Home", + "menuItem.myGroup": "My Group", + "menuItem.catalog": "Catalog", + "menuItem.apis": "APIs", + "menuItem.learningPaths": "Learning Paths", + "menuItem.selfService": "Self-service", + "menuItem.userSettings": "User Settings", + "menuItem.administration": "Administration", + "menuItem.extensions": "Extensions", + "menuItem.clusters": "Clusters", + "menuItem.rbac": "RBAC", + "menuItem.bulkImport": "Bulk import", + "menuItem.docs": "Docs", + "menuItem.lighthouse": "Lighthouse", + "menuItem.techRadar": "Tech Radar", + "menuItem.orchestrator": "Orchestrator", + "menuItem.adoptionInsights": "Adoption Insights", + "sidebar.menu": "Menu", + "sidebar.home": "Home", + "sidebar.homeLogo": "Home logo", + "signIn.page.title": "Select a sign-in method", + "signIn.providers.auth0.title": "Auth0", + "signIn.providers.auth0.message": "Sign in using Auth0", + "signIn.providers.atlassian.title": "Atlassian", + "signIn.providers.atlassian.message": "Sign in using Atlassian", + "signIn.providers.microsoft.title": "Microsoft", + "signIn.providers.microsoft.message": "Sign in using Microsoft", + "signIn.providers.bitbucket.title": "Bitbucket", + "signIn.providers.bitbucket.message": "Sign in using Bitbucket", + "signIn.providers.bitbucketServer.title": "Bitbucket Server", + "signIn.providers.bitbucketServer.message": "Sign in using Bitbucket Server", + "signIn.providers.github.title": "GitHub", + "signIn.providers.github.message": "Sign in using GitHub", + "signIn.providers.gitlab.title": "GitLab", + "signIn.providers.gitlab.message": "Sign in using GitLab", + "signIn.providers.google.title": "Google", + "signIn.providers.google.message": "Sign in using Google", + "signIn.providers.oidc.title": "OIDC", + "signIn.providers.oidc.message": "Sign in using OIDC", + "signIn.providers.okta.title": "Okta", + "signIn.providers.okta.message": "Sign in using Okta", + "signIn.providers.onelogin.title": "OneLogin", + "signIn.providers.onelogin.message": "Sign in using OneLogin", + "signIn.providers.saml.title": "SAML", + "signIn.providers.saml.message": "Sign in using SAML", + "catalog.entityPage.overview.title": "Overview", + "catalog.entityPage.topology.title": "Topology", + "catalog.entityPage.issues.title": "Issues", + "catalog.entityPage.pullRequests.title": "Pull/Merge Requests", + "catalog.entityPage.ci.title": "CI", + "catalog.entityPage.cd.title": "CD", + "catalog.entityPage.kubernetes.title": "Kubernetes", + "catalog.entityPage.imageRegistry.title": "Image Registry", + "catalog.entityPage.monitoring.title": "Monitoring", + "catalog.entityPage.lighthouse.title": "Lighthouse", + "catalog.entityPage.api.title": "API", + "catalog.entityPage.dependencies.title": "Dependencies", + "catalog.entityPage.docs.title": "Docs", + "catalog.entityPage.definition.title": "Definition", + "catalog.entityPage.diagram.title": "System Diagram", + "catalog.entityPage.workflows.title": "Workflows", + "app.scaffolder.title": "Self-service", + "app.search.title": "Search", + "app.search.resultType": "Result Type", + "app.search.softwareCatalog": "Software Catalog", + "app.search.filters.kind": "Kind", + "app.search.filters.lifecycle": "Lifecycle", + "app.search.filters.component": "Component", + "app.search.filters.template": "Template", + "app.search.filters.experimental": "experimental", + "app.search.filters.production": "production", + "app.learningPaths.title": "Learning Paths", + "app.learningPaths.error.title": "Could not fetch data.", + "app.learningPaths.error.unknownError": "Unknown error", + "app.userSettings.infoCard.title": "RHDH Metadata", + "app.userSettings.infoCard.metadataCopied": "Metadata copied to clipboard", + "app.userSettings.infoCard.copyMetadata": "Copy metadata to your clipboard", + "app.userSettings.infoCard.showLess": "Show less", + "app.userSettings.infoCard.showMore": "Show more", + "app.errors.contactSupport": "Contact support", + "app.errors.goBack": "Go back", + "app.errors.notFound.message": "We couldn't find that page", + "app.errors.notFound.additionalInfo": "The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.", + "app.table.createdAt": "Created At" + } + }, + "scaffolder": { + "en": { + "templateListPage.contentHeader.registerExistingButtonTitle": "Import an existing Git repository" + } + }, + "search": { + "en": { + "sidebarSearchModal.title": "Search" + } + }, + "user-settings": { + "en": { + "sidebarTitle": "Settings" + } + } +} diff --git a/package.json b/package.json index f431e164f6..3379bac2a2 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "workspaces": { "packages": [ "packages/*", - "plugins/*" + "plugins/*", + "e2e-tests" ] }, "devDependencies": { diff --git a/packages/app/package.json b/packages/app/package.json index 4d1c27bf80..7228692b6b 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -71,6 +71,7 @@ "@types/node": "22.19.1", "@types/react": "18.3.27", "@types/react-dom": "18.3.7", + "eslint-plugin-unused-imports": "^4.1.4", "prettier": "3.7.4", "typescript": "5.9.3" }, diff --git a/packages/app/src/components/catalog/translations/catalog.ts b/packages/app/src/components/catalog/translations/catalog.ts index 6475233edd..d93f8e846c 100644 --- a/packages/app/src/components/catalog/translations/catalog.ts +++ b/packages/app/src/components/catalog/translations/catalog.ts @@ -5,5 +5,8 @@ export const catalogTranslations = createTranslationResource({ ref: catalogTranslationRef, translations: { en: () => import('./catalog-en'), + fr: () => import('./fr'), + it: () => import('./it'), + ja: () => import('./ja'), }, }); diff --git a/packages/app/src/components/catalog/translations/fr.ts b/packages/app/src/components/catalog/translations/fr.ts new file mode 100644 index 0000000000..a9233d1c82 --- /dev/null +++ b/packages/app/src/components/catalog/translations/fr.ts @@ -0,0 +1,103 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { catalogTranslationRef } from '@backstage/plugin-catalog/alpha'; + +export default createTranslationMessages({ + ref: catalogTranslationRef, + full: false, + messages: { + 'indexPage.createButtonTitle': 'Self-service', + 'indexPage.title': 'Catalogue {{orgName}}', + 'indexPage.supportButtonContent': 'Toutes les entités de votre catalogue de logiciels', + 'aboutCard.title': 'À propos', + 'aboutCard.refreshButtonTitle': 'Actualisation de l\'entité de planification', + 'aboutCard.editButtonTitle': 'Modifier les métadonnées', + 'aboutCard.createSimilarButtonTitle': 'Créer quelque chose de similaire', + 'aboutCard.refreshScheduledMessage': 'Actualisation programmée', + 'aboutCard.launchTemplate': 'Modèle de lancement', + 'aboutCard.viewTechdocs': 'Voir TechDocs', + 'aboutCard.viewSource': 'Voir la source', + 'aboutCard.descriptionField.label': 'Description', + 'aboutCard.descriptionField.value': 'Aucune description', + 'aboutCard.ownerField.label': 'Propriétaire', + 'aboutCard.ownerField.value': 'Pas de propriétaire', + 'aboutCard.domainField.label': 'Domaine', + 'aboutCard.domainField.value': 'Pas de domaine', + 'aboutCard.systemField.label': 'Système', + 'aboutCard.systemField.value': 'Pas de système', + 'aboutCard.parentComponentField.label': 'Composant parent', + 'aboutCard.parentComponentField.value': 'Aucun composant parent', + 'aboutCard.typeField.label': 'Taper', + 'aboutCard.lifecycleField.label': 'Cycle de vie', + 'aboutCard.tagsField.label': 'Mots-clés', + 'aboutCard.tagsField.value': 'Aucune balise', + 'aboutCard.targetsField.label': 'Cibles', + 'searchResultItem.lifecycle': 'Cycle de vie', + 'searchResultItem.Owner': 'Propriétaire', + 'catalogTable.warningPanelTitle': 'Impossible de récupérer les entités du catalogue.', + 'catalogTable.viewActionTitle': 'Voir', + 'catalogTable.editActionTitle': 'Modifier', + 'catalogTable.starActionTitle': 'Ajouter aux favoris', + 'catalogTable.unStarActionTitle': 'Supprimer des favoris', + 'dependencyOfComponentsCard.title': 'Dépendance des composants', + 'dependencyOfComponentsCard.emptyMessage': 'Aucun composant ne dépend de ce composant', + 'dependsOnComponentsCard.title': 'Cela dépend des composants', + 'dependsOnComponentsCard.emptyMessage': 'Aucun composant n\'est une dépendance de ce composant', + 'dependsOnResourcesCard.title': 'Cela dépend des ressources', + 'dependsOnResourcesCard.emptyMessage': 'Aucune ressource n\'est une dépendance de ce composant', + 'entityContextMenu.copiedMessage': 'Copié!', + 'entityContextMenu.moreButtonTitle': 'Plus', + 'entityContextMenu.inspectMenuTitle': 'Inspecter l\'entité', + 'entityContextMenu.copyURLMenuTitle': 'Copier l\'URL de l\'entité', + 'entityContextMenu.unregisterMenuTitle': 'Désenregistrer l\'entité', + 'entityLabelsCard.title': 'Étiquettes', + 'entityLabelsCard.emptyDescription': 'Aucune étiquette définie pour cette entité. Vous pouvez ajouter des étiquettes à votre entité YAML comme indiqué dans l\'exemple en surbrillance ci-dessous :', + 'entityLabelsCard.readMoreButtonTitle': 'En savoir plus', + 'entityLabels.warningPanelTitle': 'Entité non trouvée', + 'entityLabels.ownerLabel': 'Propriétaire', + 'entityLabels.lifecycleLabel': 'Cycle de vie', + 'entityLinksCard.title': 'Links', + 'entityLinksCard.emptyDescription': 'Aucun lien défini pour cette entité. Vous pouvez ajouter des liens vers votre entité YAML comme indiqué dans l\'exemple en surbrillance ci-dessous :', + 'entityLinksCard.readMoreButtonTitle': 'En savoir plus', + 'entityNotFound.title': 'L\'entité n\'a pas été trouvée', + 'entityNotFound.description': 'Vous voulez nous aider à construire cela ? Consultez notre documentation de mise en route.', + 'entityNotFound.docButtonTitle': 'DOCUMENTS', + 'deleteEntity.dialogTitle': 'Êtes-vous sûr de vouloir supprimer cette entité ?', + 'deleteEntity.deleteButtonTitle': 'Supprimer', + 'deleteEntity.cancelButtonTitle': 'Annuler', + 'deleteEntity.description': 'Cette entité n\'est référencée par aucun emplacement et ne reçoit donc pas de mises à jour. Cliquez ici pour supprimer.', + 'entityProcessingErrorsDescription': 'L\'erreur ci-dessous provient de', + 'entityRelationWarningDescription': 'Cette entité a des relations avec d\'autres entités, qui ne peuvent pas être trouvées dans le catalogue. Les entités non trouvées sont : ', + 'hasComponentsCard.title': 'Contient des composants', + 'hasComponentsCard.emptyMessage': 'Aucun composant ne fait partie de ce système', + 'hasResourcesCard.title': 'Dispose de ressources', + 'hasResourcesCard.emptyMessage': 'Aucune ressource ne fait partie de ce système', + 'hasSubcomponentsCard.title': 'A des sous-composants', + 'hasSubcomponentsCard.emptyMessage': 'Aucun sous-composant ne fait partie de ce composant', + 'hasSubdomainsCard.title': 'A des sous-domaines', + 'hasSubdomainsCard.emptyMessage': 'Aucun sous-domaine ne fait partie de ce domaine', + 'hasSystemsCard.title': 'A des systèmes', + 'hasSystemsCard.emptyMessage': 'Aucun système ne fait partie de ce domaine', + 'relatedEntitiesCard.emptyHelpLinkTitle': 'Apprenez à changer cela', + 'systemDiagramCard.title': 'Diagramme du système', + 'systemDiagramCard.description': 'Utilisez le pincement et le zoom pour vous déplacer dans le diagramme.', + 'systemDiagramCard.edgeLabels.partOf': 'une partie de', + 'systemDiagramCard.edgeLabels.provides': 'fournit', + 'systemDiagramCard.edgeLabels.dependsOn': 'dépend de', + }, +}); diff --git a/packages/app/src/components/catalog/translations/it.ts b/packages/app/src/components/catalog/translations/it.ts new file mode 100644 index 0000000000..e095715e79 --- /dev/null +++ b/packages/app/src/components/catalog/translations/it.ts @@ -0,0 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { catalogTranslationRef } from '@backstage/plugin-catalog/alpha'; + +export default createTranslationMessages({ + ref: catalogTranslationRef, + full: false, + messages: { + 'indexPage.createButtonTitle': 'Self-service', + }, +}); diff --git a/packages/app/src/components/catalog/translations/ja.ts b/packages/app/src/components/catalog/translations/ja.ts new file mode 100644 index 0000000000..82b33b1d07 --- /dev/null +++ b/packages/app/src/components/catalog/translations/ja.ts @@ -0,0 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { catalogTranslationRef } from '@backstage/plugin-catalog/alpha'; + +export default createTranslationMessages({ + ref: catalogTranslationRef, + full: false, + messages: { + 'indexPage.createButtonTitle': 'セルフサービス', + }, +}); diff --git a/packages/app/src/translations/catalog-import/catalog-import.ts b/packages/app/src/translations/catalog-import/catalog-import.ts index 4a8c401815..e80bfa0864 100644 --- a/packages/app/src/translations/catalog-import/catalog-import.ts +++ b/packages/app/src/translations/catalog-import/catalog-import.ts @@ -5,5 +5,8 @@ export const catalogImportTranslations = createTranslationResource({ ref: catalogImportTranslationRef, translations: { en: () => import('./catalog-import-en'), + fr: () => import('./fr'), + it: () => import('./it'), + ja: () => import('./ja'), }, }); diff --git a/packages/app/src/translations/catalog-import/fr.ts b/packages/app/src/translations/catalog-import/fr.ts new file mode 100644 index 0000000000..86d438116d --- /dev/null +++ b/packages/app/src/translations/catalog-import/fr.ts @@ -0,0 +1,91 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { catalogImportTranslationRef } from '@backstage/plugin-catalog-import/alpha'; + +export default createTranslationMessages({ + ref: catalogImportTranslationRef, + full: false, + messages: { + 'defaultImportPage.headerTitle': 'Importer un dépôt Git existant', + 'importInfoCard.title': 'Importer un dépôt Git existant', + 'buttons.back': 'Arrière', + 'defaultImportPage.contentHeaderTitle': 'Commencez à suivre votre composant dans {{appTitle}}', + 'defaultImportPage.supportTitle': 'Commencez à suivre votre composant dans {{appTitle}} en l\'ajoutant au catalogue de logiciels.', + 'importInfoCard.deepLinkTitle': 'En savoir plus sur le catalogue de logiciels', + 'importInfoCard.linkDescription': 'Saisissez l\'URL de votre référentiel de code source pour l\'ajouter à {{appTitle}}.', + 'importInfoCard.fileLinkTitle': 'Lien vers un fichier d\'entité existant', + 'importInfoCard.examplePrefix': 'Exemple: ', + 'importInfoCard.fileLinkDescription': 'L\'assistant analyse le fichier, prévisualise les entités et les ajoute au catalogue {{appTitle}}.', + 'importInfoCard.githubIntegration.title': 'Lien vers un référentiel', + 'importInfoCard.githubIntegration.label': 'GitHub uniquement', + 'importInfoCard.exampleDescription': 'L\'assistant découvre tous les fichiers {{catalogFilename}} dans le référentiel, prévisualise les entités et les ajoute au catalogue {{appTitle}}.', + 'importInfoCard.preparePullRequestDescription': 'Si aucune entité n\'est trouvée, l\'assistant préparera une Pull Request qui ajoute un exemple de {{catalogFilename}} et prépare le catalogue {{appTitle}} pour charger toutes les entités dès que la Pull Request est fusionnée.', + 'importStepper.singleLocation.title': 'Sélectionner des emplacements', + 'importStepper.singleLocation.description': 'Lieux découverts : 1', + 'importStepper.multipleLocations.title': 'Sélectionner des emplacements', + 'importStepper.multipleLocations.description': 'Lieux découverts : {{length, number}}', + 'importStepper.noLocation.title': 'Créer une demande d\'extraction', + 'importStepper.noLocation.createPr.detailsTitle': 'Détails de la demande d\'extraction', + 'importStepper.noLocation.createPr.titleLabel': 'Titre de la demande d\'extraction', + 'importStepper.noLocation.createPr.titlePlaceholder': 'Ajouter des fichiers descripteurs d\'entités de catalogue Backstage', + 'importStepper.noLocation.createPr.bodyLabel': 'Corps de la demande d\'extraction', + 'importStepper.noLocation.createPr.bodyPlaceholder': 'Un texte descriptif avec prise en charge Markdown', + 'importStepper.noLocation.createPr.configurationTitle': 'Configuration de l\'entité', + 'importStepper.noLocation.createPr.componentNameLabel': 'Nom du composant créé', + 'importStepper.noLocation.createPr.componentNamePlaceholder': 'mon-composant', + 'importStepper.noLocation.createPr.ownerLoadingText': 'Chargement des groupes…', + 'importStepper.noLocation.createPr.ownerHelperText': 'Sélectionnez un propriétaire dans la liste ou entrez une référence à un groupe ou à un utilisateur', + 'importStepper.noLocation.createPr.ownerErrorHelperText': 'valeur requise', + 'importStepper.noLocation.createPr.ownerLabel': 'Propriétaire de l\'entité', + 'importStepper.noLocation.createPr.ownerPlaceholder': 'mon-groupe', + 'importStepper.noLocation.createPr.codeownersHelperText': 'AVERTISSEMENT : cette opération peut échouer si aucun fichier CODEOWNERS n\'est trouvé à l\'emplacement cible.', + 'importStepper.analyze.title': 'Sélectionnez l\'URL', + 'importStepper.prepare.title': 'Actions d\'importation', + 'importStepper.prepare.description': 'Facultatif', + 'importStepper.review.title': 'Revoir', + 'importStepper.finish.title': 'Finition', + 'stepFinishImportLocation.backButtonText': 'Enregistrer un autre', + 'stepFinishImportLocation.repository.title': 'La Pull Request suivante a été ouverte : ', + 'stepFinishImportLocation.repository.description': 'Vos entités seront importées dès que la Pull Request sera fusionnée.', + 'stepFinishImportLocation.locations.new': 'Les entités suivantes ont été ajoutées au catalogue :', + 'stepFinishImportLocation.locations.existing': 'Une actualisation a été déclenchée pour les emplacements suivants :', + 'stepFinishImportLocation.locations.viewButtonText': 'Afficher le composant', + 'stepFinishImportLocation.locations.backButtonText': 'Enregistrer un autre', + 'stepInitAnalyzeUrl.error.repository': 'Impossible de générer des entités pour votre référentiel', + 'stepInitAnalyzeUrl.error.locations': 'Il n\'y a aucune entité à cet endroit', + 'stepInitAnalyzeUrl.error.default': 'Résultat d\'analyse inconnu reçu de type {{type}}. Veuillez contacter l\'équipe d\'assistance.', + 'stepInitAnalyzeUrl.error.url': 'Doit commencer par http:// ou https://.', + 'stepInitAnalyzeUrl.urlHelperText': 'Saisissez le chemin complet vers votre fichier d\'entité pour commencer à suivre votre composant', + 'stepInitAnalyzeUrl.nextButtonText': 'Analyser', + 'stepPrepareCreatePullRequest.description': 'Vous avez entré un lien vers un référentiel {{integrationType}} mais aucun {{catalogFilename}} n\'a pu être trouvé. Utilisez ce formulaire pour ouvrir une Pull Request qui en crée une.', + 'stepPrepareCreatePullRequest.previewPr.title': 'Aperçu de la demande d\'extraction', + 'stepPrepareCreatePullRequest.previewPr.subheader': 'Créer une nouvelle Pull Request', + 'stepPrepareCreatePullRequest.previewCatalogInfo.title': 'Aperçu des entités', + 'stepPrepareCreatePullRequest.nextButtonText': 'Créer des relations publiques', + 'stepPrepareSelectLocations.locations.description': 'Sélectionnez un ou plusieurs emplacements présents dans votre dépôt git :', + 'stepPrepareSelectLocations.locations.selectAll': 'Sélectionner tout', + 'stepPrepareSelectLocations.existingLocations.description': 'Ces emplacements existent déjà dans le catalogue :', + 'stepPrepareSelectLocations.nextButtonText': 'Revoir', + 'stepReviewLocation.prepareResult.title': 'La Pull Request suivante a été ouverte : ', + 'stepReviewLocation.prepareResult.description': 'Vous pouvez déjà importer l\'emplacement et {{appTitle}} récupérera les entités dès que la Pull Request sera fusionnée.', + 'stepReviewLocation.catalog.exists': 'Les emplacements suivants existent déjà dans le catalogue :', + 'stepReviewLocation.catalog.new': 'Les entités suivantes seront ajoutées au catalogue :', + 'stepReviewLocation.refresh': 'Rafraîchir', + 'stepReviewLocation.import': 'Importer', + }, +}); diff --git a/packages/app/src/translations/catalog-import/it.ts b/packages/app/src/translations/catalog-import/it.ts new file mode 100644 index 0000000000..4154a95b38 --- /dev/null +++ b/packages/app/src/translations/catalog-import/it.ts @@ -0,0 +1,27 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { catalogImportTranslationRef } from '@backstage/plugin-catalog-import/alpha'; + +export default createTranslationMessages({ + ref: catalogImportTranslationRef, + full: false, + messages: { + 'defaultImportPage.headerTitle': 'Importa un repository Git esistente', + 'importInfoCard.title': 'Importa un repository Git esistente', + }, +}); diff --git a/packages/app/src/translations/catalog-import/ja.ts b/packages/app/src/translations/catalog-import/ja.ts new file mode 100644 index 0000000000..9199b066a1 --- /dev/null +++ b/packages/app/src/translations/catalog-import/ja.ts @@ -0,0 +1,27 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { catalogImportTranslationRef } from '@backstage/plugin-catalog-import/alpha'; + +export default createTranslationMessages({ + ref: catalogImportTranslationRef, + full: false, + messages: { + 'defaultImportPage.headerTitle': '既存の Git リポジトリーのインポート', + 'importInfoCard.title': '既存の Git リポジトリーのインポート', + }, +}); diff --git a/packages/app/src/translations/core-components/core-components.ts b/packages/app/src/translations/core-components/core-components.ts index 5bf8720e70..588beb8880 100644 --- a/packages/app/src/translations/core-components/core-components.ts +++ b/packages/app/src/translations/core-components/core-components.ts @@ -5,5 +5,8 @@ export const coreComponentsTranslations = createTranslationResource({ ref: coreComponentsTranslationRef, translations: { en: () => import('./core-components-en'), + fr: () => import('./fr'), + it: () => import('./it'), + ja: () => import('./ja'), }, }); diff --git a/packages/app/src/translations/core-components/fr.ts b/packages/app/src/translations/core-components/fr.ts new file mode 100644 index 0000000000..e6b5e84d69 --- /dev/null +++ b/packages/app/src/translations/core-components/fr.ts @@ -0,0 +1,78 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { coreComponentsTranslationRef } from '@backstage/core-components/alpha'; + +export default createTranslationMessages({ + ref: coreComponentsTranslationRef, + full: false, + messages: { + 'table.filter.placeholder': 'Tous les résultats', + 'table.body.emptyDataSourceMessage': 'Aucun enregistrement à afficher', + 'table.pagination.firstTooltip': 'Première page', + 'table.pagination.labelDisplayedRows': '{de}-{à} de {count}', + 'table.pagination.labelRowsSelect': 'rangées', + 'table.pagination.lastTooltip': 'Dernière page', + 'table.pagination.nextTooltip': 'Page suivante', + 'table.pagination.previousTooltip': 'Page précédente', + 'table.toolbar.search': 'Filtre', + 'alertDisplay.message_one': '({{ count }} message plus récent)', + 'alertDisplay.message_other': '({{ count }} messages plus récents)', + 'table.header.actions': 'Actes', + 'oauthRequestDialog.message': 'Connectez-vous pour autoriser {{appTitle}} à accéder aux API et identités de {{provider}}.', + 'signIn.title': 'Se connecter', + 'signIn.loginFailed': 'La connexion a échoué', + 'signIn.customProvider.title': 'Utilisateur personnalisé', + 'signIn.customProvider.subtitle': 'Saisissez votre propre identifiant utilisateur et vos informations d\'identification. Cette sélection ne sera pas enregistrée.', + 'signIn.customProvider.userId': 'ID de l\'utilisateur', + 'signIn.customProvider.tokenInvalid': 'Le jeton n\'est pas un jeton JWT OpenID Connect valide', + 'signIn.customProvider.continue': 'Continuer', + 'signIn.customProvider.idToken': 'Jeton d\'identification (facultatif)', + 'signIn.guestProvider.title': 'Invité', + 'signIn.guestProvider.subtitle': 'Entrez en tant qu\'utilisateur invité. Votre identité n\'aura pas été vérifiée, ce qui signifie que certaines fonctionnalités pourraient ne pas être disponibles.', + 'signIn.guestProvider.enter': 'Entrer', + 'skipToContent': 'Accéder au contenu', + 'copyTextButton.tooltipText': 'Texte copié dans le presse-papiers', + 'simpleStepper.reset': 'Réinitialiser', + 'simpleStepper.finish': 'Finition', + 'simpleStepper.next': 'Suivant', + 'simpleStepper.skip': 'Ignorer', + 'simpleStepper.back': 'Arrière', + 'errorPage.subtitle': 'ERREUR {{status}} : {{statusMessage}}', + 'errorPage.title': 'On dirait que quelqu\'un a laissé tomber le micro !', + 'errorPage.goBack': 'Retour', + 'errorPage.showMoreDetails': 'Afficher plus de détails', + 'errorPage.showLessDetails': 'Afficher moins de détails', + 'emptyState.missingAnnotation.title': 'Annotation manquante', + 'emptyState.missingAnnotation.actionTitle': 'Ajoutez l\'annotation à votre composant YAML comme indiqué dans l\'exemple en surbrillance ci-dessous :', + 'emptyState.missingAnnotation.readMore': 'En savoir plus', + 'supportConfig.default.title': 'Support non configuré', + 'supportConfig.default.linkTitle': 'Ajouter la clé de configuration « app.support »', + 'errorBoundary.title': 'Veuillez contacter {{slackChannel}} pour obtenir de l\'aide.', + 'oauthRequestDialog.title': 'Connexion requise', + 'oauthRequestDialog.authRedirectTitle': 'Cela déclenchera une redirection http vers la connexion OAuth.', + 'oauthRequestDialog.login': 'Connexion', + 'oauthRequestDialog.rejectAll': 'Tout rejeter', + 'supportButton.title': 'Support', + 'supportButton.close': 'Fermer', + 'table.filter.title': 'Filtres', + 'table.filter.clearAll': 'Tout effacer', + 'autoLogout.stillTherePrompt.title': 'Déconnexion en raison d\'inactivité', + 'autoLogout.stillTherePrompt.buttonText': 'Oui! Ne me déconnectez pas', + 'proxiedSignInPage.title': 'Vous ne semblez pas être connecté. Veuillez essayer de recharger la page du navigateur.', + }, +}); diff --git a/packages/app/src/translations/core-components/it.ts b/packages/app/src/translations/core-components/it.ts new file mode 100644 index 0000000000..bd48c73fac --- /dev/null +++ b/packages/app/src/translations/core-components/it.ts @@ -0,0 +1,38 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { coreComponentsTranslationRef } from '@backstage/core-components/alpha'; + +export default createTranslationMessages({ + ref: coreComponentsTranslationRef, + full: false, + messages: { + 'table.filter.placeholder': 'Tutti i risultati', + 'table.body.emptyDataSourceMessage': 'Nessun record da visualizzare', + 'table.pagination.firstTooltip': 'Prima pagina', + 'table.pagination.labelDisplayedRows': '{from}-{to} di {count}', + 'table.pagination.labelRowsSelect': 'righe', + 'table.pagination.lastTooltip': 'Ultima pagina', + 'table.pagination.nextTooltip': 'Pagina successiva', + 'table.pagination.previousTooltip': 'Pagina precedente', + 'table.toolbar.search': 'Filtra', + 'alertDisplay.message_one': '({{ count }} messaggio più recente)', + 'alertDisplay.message_other': '({{ count }} messaggi più recenti)', + 'table.header.actions': 'Azioni', + 'oauthRequestDialog.message': 'Accedere per consentire a {{appTitle}} di accedere alle API e alle identità di {{provider}}.', + }, +}); diff --git a/packages/app/src/translations/core-components/ja.ts b/packages/app/src/translations/core-components/ja.ts new file mode 100644 index 0000000000..68960dd3e4 --- /dev/null +++ b/packages/app/src/translations/core-components/ja.ts @@ -0,0 +1,38 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { coreComponentsTranslationRef } from '@backstage/core-components/alpha'; + +export default createTranslationMessages({ + ref: coreComponentsTranslationRef, + full: false, + messages: { + 'table.filter.placeholder': 'すべての結果', + 'table.body.emptyDataSourceMessage': '表示するレコードがありません', + 'table.pagination.firstTooltip': '最初のページ', + 'table.pagination.labelDisplayedRows': '{count} 件中 {from}-{to} 件目', + 'table.pagination.labelRowsSelect': '行', + 'table.pagination.lastTooltip': '最後のページ', + 'table.pagination.nextTooltip': '次のページ', + 'table.pagination.previousTooltip': '前のページ', + 'table.toolbar.search': 'フィルター', + 'alertDisplay.message_one': '({{ count }} 件の新しいメッセージ)', + 'alertDisplay.message_other': '({{ count }} 件の新しいメッセージ)', + 'table.header.actions': 'アクション', + 'oauthRequestDialog.message': '{{appTitle}} が {{provider}} API と ID にアクセスすることを許可するには、サインインしてください。', + }, +}); diff --git a/packages/app/src/translations/rhdh/fr.ts b/packages/app/src/translations/rhdh/fr.ts index 213ecf4cff..b1f99ab1b2 100644 --- a/packages/app/src/translations/rhdh/fr.ts +++ b/packages/app/src/translations/rhdh/fr.ts @@ -15,87 +15,76 @@ */ import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; - import { rhdhTranslationRef } from './ref'; export default createTranslationMessages({ ref: rhdhTranslationRef, - full: true, // False means that this is a partial translation + full: true, messages: { - // Default main menu items from consts.ts - 'menuItem.home': 'Accueil', - 'menuItem.myGroup_one': 'Mon Groupe', - 'menuItem.myGroup_other': 'Mes Groupes', + 'menuItem.home': 'Home', + 'menuItem.myGroup_one': 'Mon groupe', + 'menuItem.myGroup_other': 'Mes groupes', 'menuItem.catalog': 'Catalogue', 'menuItem.apis': 'APIs', - 'menuItem.learningPaths': "Parcours d'apprentissage", - 'menuItem.selfService': 'Libre-service', + 'menuItem.learningPaths': 'Learning Paths', + 'menuItem.selfService': 'Self-service', 'menuItem.userSettings': 'Paramètres utilisateur', 'menuItem.administration': 'Administration', - 'menuItem.extensions': 'Modules', - - // dynamic-plugins.default.main-menu-items - 'menuItem.clusters': 'Clusters', + 'menuItem.extensions': 'Extensions', + 'menuItem.clusters': 'Groupes', 'menuItem.rbac': 'RBAC', 'menuItem.bulkImport': 'Importation en masse', - 'menuItem.docs': 'Documentation', + 'menuItem.docs': 'Docs', 'menuItem.lighthouse': 'Lighthouse', - 'menuItem.techRadar': 'Radar technologique', + 'menuItem.techRadar': 'Tech Radar', 'menuItem.orchestrator': 'Orchestrateur', - 'menuItem.adoptionInsights': "Insights d'adoption", - - 'catalog.entityPage.overview.title': 'Aperçu', - 'catalog.entityPage.topology.title': 'Topologie', - 'catalog.entityPage.issues.title': 'Problèmes', - 'catalog.entityPage.pullRequests.title': 'Pull/Merge Requests', - 'catalog.entityPage.ci.title': 'CI', - 'catalog.entityPage.cd.title': 'CD', - 'catalog.entityPage.kubernetes.title': 'Kubernetes', - 'catalog.entityPage.imageRegistry.title': "Registre d'Images", - 'catalog.entityPage.monitoring.title': 'Surveillance', - 'catalog.entityPage.lighthouse.title': 'Lighthouse', - 'catalog.entityPage.api.title': 'API', - 'catalog.entityPage.dependencies.title': 'Dépendances', - 'catalog.entityPage.docs.title': 'Documentation', - 'catalog.entityPage.definition.title': 'Définition', - 'catalog.entityPage.diagram.title': 'Diagramme du Système', - 'catalog.entityPage.workflows.title': 'Flux de travail', - + 'menuItem.adoptionInsights': 'Adoption Insights', 'sidebar.menu': 'Menu', - 'sidebar.home': 'Accueil', - 'sidebar.homeLogo': "Logo d'accueil", - - // SignIn page translations - 'signIn.page.title': 'Sélectionner une méthode de connexion', + 'sidebar.home': 'Home', + 'sidebar.homeLogo': 'Logo de la maison', + 'signIn.page.title': 'Sélectionnez une méthode de connexion', 'signIn.providers.auth0.title': 'Auth0', - 'signIn.providers.auth0.message': 'Se connecter avec Auth0', + 'signIn.providers.auth0.message': 'Connectez-vous avec Auth0', 'signIn.providers.atlassian.title': 'Atlassian', - 'signIn.providers.atlassian.message': 'Se connecter avec Atlassian', + 'signIn.providers.atlassian.message': 'Connectez-vous avec Atlassian', 'signIn.providers.microsoft.title': 'Microsoft', - 'signIn.providers.microsoft.message': 'Se connecter avec Microsoft', + 'signIn.providers.microsoft.message': 'Connectez-vous avec Microsoft', 'signIn.providers.bitbucket.title': 'Bitbucket', - 'signIn.providers.bitbucket.message': 'Se connecter avec Bitbucket', - 'signIn.providers.bitbucketServer.title': 'Bitbucket Server', - 'signIn.providers.bitbucketServer.message': - 'Se connecter avec Bitbucket Server', + 'signIn.providers.bitbucket.message': 'Connectez-vous avec Bitbucket', + 'signIn.providers.bitbucketServer.title': 'Serveur Bitbucket', + 'signIn.providers.bitbucketServer.message': 'Connectez-vous à l\'aide de Bitbucket Server', 'signIn.providers.github.title': 'GitHub', - 'signIn.providers.github.message': 'Se connecter avec GitHub', + 'signIn.providers.github.message': 'Connectez-vous avec GitHub', 'signIn.providers.gitlab.title': 'GitLab', - 'signIn.providers.gitlab.message': 'Se connecter avec GitLab', + 'signIn.providers.gitlab.message': 'Connectez-vous avec GitLab', 'signIn.providers.google.title': 'Google', - 'signIn.providers.google.message': 'Se connecter avec Google', + 'signIn.providers.google.message': 'Connectez-vous avec Google', 'signIn.providers.oidc.title': 'OIDC', - 'signIn.providers.oidc.message': 'Se connecter avec OIDC', + 'signIn.providers.oidc.message': 'Connectez-vous avec OIDC', 'signIn.providers.okta.title': 'Okta', - 'signIn.providers.okta.message': 'Se connecter avec Okta', + 'signIn.providers.okta.message': 'Connectez-vous avec Okta', 'signIn.providers.onelogin.title': 'OneLogin', - 'signIn.providers.onelogin.message': 'Se connecter avec OneLogin', + 'signIn.providers.onelogin.message': 'Connectez-vous avec OneLogin', 'signIn.providers.saml.title': 'SAML', - 'signIn.providers.saml.message': 'Se connecter avec SAML', - - // App translations - 'app.scaffolder.title': 'Libre-service', - 'app.search.title': 'Rechercher', + 'signIn.providers.saml.message': 'Connectez-vous en utilisant SAML', + 'catalog.entityPage.overview.title': 'Vue d’ensemble', + 'catalog.entityPage.topology.title': 'Topologie', + 'catalog.entityPage.issues.title': 'Problèmes', + 'catalog.entityPage.pullRequests.title': 'Extraire/Merger les Demandes', + 'catalog.entityPage.ci.title': 'CI', + 'catalog.entityPage.cd.title': 'CD', + 'catalog.entityPage.kubernetes.title': 'Kubernetes', + 'catalog.entityPage.imageRegistry.title': 'Registre d’images', + 'catalog.entityPage.monitoring.title': 'Surveillance', + 'catalog.entityPage.lighthouse.title': 'Lighthouse', + 'catalog.entityPage.api.title': 'API', + 'catalog.entityPage.dependencies.title': 'Dépendances', + 'catalog.entityPage.docs.title': 'Docs', + 'catalog.entityPage.definition.title': 'Définition', + 'catalog.entityPage.diagram.title': 'Diagramme du système', + 'catalog.entityPage.workflows.title': 'Flux de travail', + 'app.scaffolder.title': 'Self-service', + 'app.search.title': 'Recherche', 'app.search.resultType': 'Type de résultat', 'app.search.softwareCatalog': 'Catalogue de logiciels', 'app.search.filters.kind': 'Type', @@ -104,21 +93,18 @@ export default createTranslationMessages({ 'app.search.filters.template': 'Modèle', 'app.search.filters.experimental': 'expérimental', 'app.search.filters.production': 'production', - 'app.learningPaths.title': "Parcours d'apprentissage", + 'app.learningPaths.title': 'Learning Paths', 'app.learningPaths.error.title': 'Impossible de récupérer les données.', 'app.learningPaths.error.unknownError': 'Erreur inconnue', 'app.userSettings.infoCard.title': 'Métadonnées RHDH', - 'app.userSettings.infoCard.metadataCopied': - 'Métadonnées copiées dans le presse-papiers', - 'app.userSettings.infoCard.copyMetadata': - 'Copier les métadonnées dans le presse-papiers', + 'app.userSettings.infoCard.metadataCopied': 'Métadonnées copiées dans le presse-papiers', + 'app.userSettings.infoCard.copyMetadata': 'Copier les métadonnées dans votre presse-papiers', 'app.userSettings.infoCard.showLess': 'Afficher moins', 'app.userSettings.infoCard.showMore': 'Afficher plus', 'app.errors.contactSupport': 'Contacter le support', 'app.errors.goBack': 'Retour', - 'app.errors.notFound.message': "Nous n'avons pas pu trouver cette page", - 'app.errors.notFound.additionalInfo': - 'La page que vous recherchez a peut-être été supprimée, renommée ou est temporairement indisponible.', - 'app.table.createdAt': 'Créé le', + 'app.errors.notFound.message': 'Nous n\'avons pas pu trouver cette page', + 'app.errors.notFound.additionalInfo': 'La page que vous recherchez a peut-être été supprimée, son nom a peut-être été modifié ou elle est temporairement indisponible.', + 'app.table.createdAt': 'Créé à', }, }); diff --git a/packages/app/src/translations/rhdh/index.ts b/packages/app/src/translations/rhdh/index.ts index 040a12b946..e48880daa9 100644 --- a/packages/app/src/translations/rhdh/index.ts +++ b/packages/app/src/translations/rhdh/index.ts @@ -27,6 +27,7 @@ export const rhdhTranslations = createTranslationResource({ de: () => import('./de') as any, fr: () => import('./fr') as any, it: () => import('./it') as any, + ja: () => import('./ja') as any, es: () => import('./es') as any, }, }); diff --git a/packages/app/src/translations/rhdh/it.ts b/packages/app/src/translations/rhdh/it.ts index ef888744a0..34a668f289 100644 --- a/packages/app/src/translations/rhdh/it.ts +++ b/packages/app/src/translations/rhdh/it.ts @@ -15,86 +15,76 @@ */ import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; - import { rhdhTranslationRef } from './ref'; export default createTranslationMessages({ ref: rhdhTranslationRef, - full: true, // False means that this is a partial translation + full: true, messages: { - // Default main menu items from consts.ts 'menuItem.home': 'Home', - 'menuItem.myGroup_one': 'Il Mio Gruppo', - 'menuItem.myGroup_other': 'I Miei Gruppi', + 'menuItem.myGroup_one': 'Il mio gruppo', + 'menuItem.myGroup_other': 'I miei gruppi', 'menuItem.catalog': 'Catalogo', 'menuItem.apis': 'API', - 'menuItem.learningPaths': 'Percorsi di Apprendimento', + 'menuItem.learningPaths': 'Percorsi di apprendimento', 'menuItem.selfService': 'Self-service', 'menuItem.userSettings': 'Impostazioni utente', 'menuItem.administration': 'Amministrazione', 'menuItem.extensions': 'Estensioni', - - // dynamic-plugins.default.main-menu-items 'menuItem.clusters': 'Cluster', 'menuItem.rbac': 'RBAC', - 'menuItem.bulkImport': 'Importazione in massa', - 'menuItem.docs': 'Documentazione', + 'menuItem.bulkImport': 'Importazione in blocco', + 'menuItem.docs': 'Documenti', 'menuItem.lighthouse': 'Lighthouse', - 'menuItem.techRadar': 'Radar tecnologico', - 'menuItem.orchestrator': 'Orchestratore', - 'menuItem.adoptionInsights': 'Insights di adozione', - - 'catalog.entityPage.overview.title': 'Panoramica', - 'catalog.entityPage.topology.title': 'Topologia', - 'catalog.entityPage.issues.title': 'Problemi', - 'catalog.entityPage.pullRequests.title': 'Pull/Merge Requests', - 'catalog.entityPage.ci.title': 'CI', - 'catalog.entityPage.cd.title': 'CD', - 'catalog.entityPage.kubernetes.title': 'Kubernetes', - 'catalog.entityPage.imageRegistry.title': 'Registro Immagini', - 'catalog.entityPage.monitoring.title': 'Monitoraggio', - 'catalog.entityPage.lighthouse.title': 'Lighthouse', - 'catalog.entityPage.api.title': 'API', - 'catalog.entityPage.dependencies.title': 'Dipendenze', - 'catalog.entityPage.docs.title': 'Documentazione', - 'catalog.entityPage.definition.title': 'Definizione', - 'catalog.entityPage.diagram.title': 'Diagramma del Sistema', - 'catalog.entityPage.workflows.title': 'Flussi di lavoro', - + 'menuItem.techRadar': 'Tech Radar', + 'menuItem.orchestrator': 'Orchestrator', + 'menuItem.adoptionInsights': 'Adoption Insights', 'sidebar.menu': 'Menu', 'sidebar.home': 'Home', - 'sidebar.homeLogo': 'Logo principale', - - // SignIn page translations - 'signIn.page.title': 'Seleziona un metodo di accesso', + 'sidebar.homeLogo': 'Logo Home', + 'signIn.page.title': 'Selezionare un metodo di accesso', 'signIn.providers.auth0.title': 'Auth0', - 'signIn.providers.auth0.message': 'Accedi con Auth0', + 'signIn.providers.auth0.message': 'Accesso tramite Auth0', 'signIn.providers.atlassian.title': 'Atlassian', - 'signIn.providers.atlassian.message': 'Accedi con Atlassian', + 'signIn.providers.atlassian.message': 'Accesso tramite Atlassian', 'signIn.providers.microsoft.title': 'Microsoft', - 'signIn.providers.microsoft.message': 'Accedi con Microsoft', + 'signIn.providers.microsoft.message': 'Accesso tramite Microsoft', 'signIn.providers.bitbucket.title': 'Bitbucket', - 'signIn.providers.bitbucket.message': 'Accedi con Bitbucket', + 'signIn.providers.bitbucket.message': 'Accesso tramite Bitbucket', 'signIn.providers.bitbucketServer.title': 'Bitbucket Server', - 'signIn.providers.bitbucketServer.message': 'Accedi con Bitbucket Server', + 'signIn.providers.bitbucketServer.message': 'Accesso tramite Bitbucket Server', 'signIn.providers.github.title': 'GitHub', - 'signIn.providers.github.message': 'Accedi con GitHub', + 'signIn.providers.github.message': 'Accesso tramite GitHub', 'signIn.providers.gitlab.title': 'GitLab', - 'signIn.providers.gitlab.message': 'Accedi con GitLab', + 'signIn.providers.gitlab.message': 'Accesso tramite GitLab', 'signIn.providers.google.title': 'Google', - 'signIn.providers.google.message': 'Accedi con Google', + 'signIn.providers.google.message': 'Accesso tramite Google', 'signIn.providers.oidc.title': 'OIDC', - 'signIn.providers.oidc.message': 'Accedi con OIDC', + 'signIn.providers.oidc.message': 'Accesso tramite OIDC', 'signIn.providers.okta.title': 'Okta', - 'signIn.providers.okta.message': 'Accedi con Okta', + 'signIn.providers.okta.message': 'Accesso tramite Okta', 'signIn.providers.onelogin.title': 'OneLogin', - 'signIn.providers.onelogin.message': 'Accedi con OneLogin', + 'signIn.providers.onelogin.message': 'Accesso tramite OneLogin', 'signIn.providers.saml.title': 'SAML', - 'signIn.providers.saml.message': 'Accedi con SAML', - - // App translations + 'signIn.providers.saml.message': 'Accesso tramite SAML', + 'catalog.entityPage.overview.title': 'Panoramica', + 'catalog.entityPage.topology.title': 'Topologia', + 'catalog.entityPage.issues.title': 'Problemi', + 'catalog.entityPage.pullRequests.title': 'Richieste di pull/merge', + 'catalog.entityPage.ci.title': 'CI', + 'catalog.entityPage.cd.title': 'CD', + 'catalog.entityPage.kubernetes.title': 'Kubernetes', + 'catalog.entityPage.imageRegistry.title': 'Registro delle immagini', + 'catalog.entityPage.monitoring.title': 'Monitoraggio', + 'catalog.entityPage.lighthouse.title': 'Lighthouse', + 'catalog.entityPage.api.title': 'API', + 'catalog.entityPage.dependencies.title': 'Dipendenze', + 'catalog.entityPage.docs.title': 'Documenti', + 'catalog.entityPage.definition.title': 'Definizione', + 'catalog.entityPage.diagram.title': 'Diagramma di sistema', + 'catalog.entityPage.workflows.title': 'Flussi di lavoro', 'app.scaffolder.title': 'Self-service', - 'app.search.title': 'Cerca', + 'app.search.title': 'Ricerca', 'app.search.resultType': 'Tipo di risultato', 'app.search.softwareCatalog': 'Catalogo software', 'app.search.filters.kind': 'Tipo', @@ -107,16 +97,14 @@ export default createTranslationMessages({ 'app.learningPaths.error.title': 'Impossibile recuperare i dati.', 'app.learningPaths.error.unknownError': 'Errore sconosciuto', 'app.userSettings.infoCard.title': 'Metadati RHDH', - 'app.userSettings.infoCard.metadataCopied': - 'Metadati copiati negli appunti', - 'app.userSettings.infoCard.copyMetadata': 'Copia metadati negli appunti', + 'app.userSettings.infoCard.metadataCopied': 'Metadati copiati negli appunti', + 'app.userSettings.infoCard.copyMetadata': 'Copia i metadati negli appunti', 'app.userSettings.infoCard.showLess': 'Mostra meno', - 'app.userSettings.infoCard.showMore': 'Mostra di più', - 'app.errors.contactSupport': 'Contatta il supporto', + 'app.userSettings.infoCard.showMore': 'Mostra altro', + 'app.errors.contactSupport': 'Contattare l\'assistenza', 'app.errors.goBack': 'Indietro', - 'app.errors.notFound.message': 'Non siamo riusciti a trovare quella pagina', - 'app.errors.notFound.additionalInfo': - 'La pagina che stai cercando potrebbe essere stata rimossa, rinominata o è temporaneamente non disponibile.', - 'app.table.createdAt': 'Creato il', + 'app.errors.notFound.message': 'Non è stato possibile trovare la pagina', + 'app.errors.notFound.additionalInfo': 'La pagina potrebbe essere stata rimossa, potrebbe aver cambiato nome o potrebbe non essere temporaneamente disponibile.', + 'app.table.createdAt': 'Creato alle', }, }); diff --git a/packages/app/src/translations/rhdh/ja.ts b/packages/app/src/translations/rhdh/ja.ts new file mode 100644 index 0000000000..74f5cca938 --- /dev/null +++ b/packages/app/src/translations/rhdh/ja.ts @@ -0,0 +1,110 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { rhdhTranslationRef } from './ref'; + +export default createTranslationMessages({ + ref: rhdhTranslationRef, + full: true, + messages: { + 'menuItem.home': 'ホーム', + 'menuItem.myGroup_one': 'マイグループ', + 'menuItem.myGroup_other': 'マイグループ', + 'menuItem.catalog': 'カタログ', + 'menuItem.apis': 'API', + 'menuItem.learningPaths': 'ラーニングパス', + 'menuItem.selfService': 'セルフサービス', + 'menuItem.userSettings': 'ユーザー設定', + 'menuItem.administration': '管理', + 'menuItem.extensions': '拡張機能', + 'menuItem.clusters': 'クラスター', + 'menuItem.rbac': 'RBAC', + 'menuItem.bulkImport': '一括インポート', + 'menuItem.docs': 'ドキュメント', + 'menuItem.lighthouse': 'Lighthouse', + 'menuItem.techRadar': 'Tech Radar', + 'menuItem.orchestrator': 'オーケストレーター', + 'menuItem.adoptionInsights': 'Adoption Insights', + 'sidebar.menu': 'メニュー', + 'sidebar.home': 'ホーム', + 'sidebar.homeLogo': 'ホームロゴ', + 'signIn.page.title': 'サインイン方法の選択', + 'signIn.providers.auth0.title': 'Auth0', + 'signIn.providers.auth0.message': 'Auth0 を使用してサインイン', + 'signIn.providers.atlassian.title': 'Atlassian', + 'signIn.providers.atlassian.message': 'Atlassian を使用してサインイン', + 'signIn.providers.microsoft.title': 'Microsoft', + 'signIn.providers.microsoft.message': 'Microsoft を使用してサインイン', + 'signIn.providers.bitbucket.title': 'Bitbucket', + 'signIn.providers.bitbucket.message': 'Bitbucket を使用してサインイン', + 'signIn.providers.bitbucketServer.title': 'Bitbucket Server', + 'signIn.providers.bitbucketServer.message': 'Bitbucket Server を使用してサインイン', + 'signIn.providers.github.title': 'GitHub', + 'signIn.providers.github.message': 'GitHub を使用してサインイン', + 'signIn.providers.gitlab.title': 'GitLab', + 'signIn.providers.gitlab.message': 'GitLab を使用してサインイン', + 'signIn.providers.google.title': 'Google', + 'signIn.providers.google.message': 'Google を使用してサインイン', + 'signIn.providers.oidc.title': 'OIDC', + 'signIn.providers.oidc.message': 'OIDC を使用してサインイン', + 'signIn.providers.okta.title': 'Okta', + 'signIn.providers.okta.message': 'Okta を使用してサインイン', + 'signIn.providers.onelogin.title': 'OneLogin', + 'signIn.providers.onelogin.message': 'OneLogin を使用してサインイン', + 'signIn.providers.saml.title': 'SAML', + 'signIn.providers.saml.message': 'SAML を使用してサインイン', + 'catalog.entityPage.overview.title': '概要', + 'catalog.entityPage.topology.title': 'トポロジー', + 'catalog.entityPage.issues.title': 'イシュー', + 'catalog.entityPage.pullRequests.title': 'プル/マージリクエスト', + 'catalog.entityPage.ci.title': 'CI', + 'catalog.entityPage.cd.title': 'CD', + 'catalog.entityPage.kubernetes.title': 'Kubernetes', + 'catalog.entityPage.imageRegistry.title': 'イメージレジストリー', + 'catalog.entityPage.monitoring.title': 'モニタリング', + 'catalog.entityPage.lighthouse.title': 'Lighthouse', + 'catalog.entityPage.api.title': 'API', + 'catalog.entityPage.dependencies.title': '依存関係', + 'catalog.entityPage.docs.title': 'ドキュメント', + 'catalog.entityPage.definition.title': '定義', + 'catalog.entityPage.diagram.title': 'システム図', + 'catalog.entityPage.workflows.title': 'ワークフロー', + 'app.scaffolder.title': 'セルフサービス', + 'app.search.title': '検索', + 'app.search.resultType': '結果タイプ', + 'app.search.softwareCatalog': 'ソフトウェアカタログ', + 'app.search.filters.kind': '種類', + 'app.search.filters.lifecycle': 'ライフサイクル', + 'app.search.filters.component': 'コンポーネント', + 'app.search.filters.template': 'テンプレート', + 'app.search.filters.experimental': '実験的', + 'app.search.filters.production': '実稼働', + 'app.learningPaths.title': 'ラーニングパス', + 'app.learningPaths.error.title': 'データを取得できませんでした。', + 'app.learningPaths.error.unknownError': '不明なエラー', + 'app.userSettings.infoCard.title': 'RHDH メタデータ', + 'app.userSettings.infoCard.metadataCopied': 'メタデータがクリップボードにコピーされました', + 'app.userSettings.infoCard.copyMetadata': 'メタデータをクリップボードにコピーする', + 'app.userSettings.infoCard.showLess': '簡易表示', + 'app.userSettings.infoCard.showMore': '詳細表示', + 'app.errors.contactSupport': 'サポートにお問い合わせください', + 'app.errors.goBack': '戻る', + 'app.errors.notFound.message': '該当するページが見つかりませんでした', + 'app.errors.notFound.additionalInfo': 'お探しのページは削除されたか、名前が変更されたか、一時的に利用できない可能性があります。', + 'app.table.createdAt': '作成日時', + }, +}); diff --git a/packages/app/src/translations/scaffolder/fr.ts b/packages/app/src/translations/scaffolder/fr.ts new file mode 100644 index 0000000000..c152ba8936 --- /dev/null +++ b/packages/app/src/translations/scaffolder/fr.ts @@ -0,0 +1,201 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { scaffolderTranslationRef } from '@backstage/plugin-scaffolder/alpha'; + +export default createTranslationMessages({ + ref: scaffolderTranslationRef, + full: false, + messages: { + 'templateListPage.contentHeader.registerExistingButtonTitle': 'Importer un dépôt Git existant', + 'aboutCard.launchTemplate': 'Modèle de lancement', + 'actionsPage.title': 'Actions installées', + 'actionsPage.pageTitle': 'Créer un nouveau composant', + 'actionsPage.subtitle': 'Il s\'agit de la collection de toutes les actions installées', + 'actionsPage.content.emptyState.title': 'Aucune information à afficher', + 'actionsPage.content.emptyState.description': 'Aucune action n\'est installée ou il y a eu un problème de communication avec le backend.', + 'actionsPage.content.searchFieldPlaceholder': 'Rechercher une action', + 'actionsPage.action.input': 'Saisir', + 'actionsPage.action.output': 'Sortir', + 'actionsPage.action.examples': 'Exemples', + 'fields.entityNamePicker.title': 'Nom', + 'fields.entityNamePicker.description': 'Nom unique du composant', + 'fields.entityPicker.title': 'Entité', + 'fields.entityPicker.description': 'Une entité du catalogue', + 'fields.entityTagsPicker.title': 'Mots-clés', + 'fields.entityTagsPicker.description': 'Ajoutez toutes les balises pertinentes, appuyez sur « Entrée » pour ajouter de nouvelles balises. Format valide : [a-z0-9+#] séparés par [-], au maximum 63 caractères', + 'fields.multiEntityPicker.title': 'Entité', + 'fields.multiEntityPicker.description': 'Une entité du catalogue', + 'fields.myGroupsPicker.title': 'Entité', + 'fields.myGroupsPicker.description': 'Une entité du catalogue', + 'fields.ownedEntityPicker.title': 'Entité', + 'fields.ownedEntityPicker.description': 'Une entité du catalogue', + 'fields.ownerPicker.title': 'Propriétaire', + 'fields.ownerPicker.description': 'Le propriétaire du composant', + 'fields.azureRepoPicker.organization.title': 'Organisation', + 'fields.azureRepoPicker.organization.description': 'L\'organisation à laquelle appartiendra ce dépôt', + 'fields.azureRepoPicker.project.title': 'Projet', + 'fields.azureRepoPicker.project.description': 'Le projet auquel ce dépôt appartiendra', + 'fields.bitbucketRepoPicker.workspaces.title': 'Espaces de travail autorisés', + 'fields.bitbucketRepoPicker.workspaces.inputTitle': 'Espaces de travail', + 'fields.bitbucketRepoPicker.workspaces.description': 'L\'espace de travail auquel ce dépôt appartiendra', + 'fields.bitbucketRepoPicker.project.title': 'Projets autorisés', + 'fields.bitbucketRepoPicker.project.inputTitle': 'Projets', + 'fields.bitbucketRepoPicker.project.description': 'Le projet auquel ce dépôt appartiendra', + 'fields.gerritRepoPicker.owner.title': 'Propriétaire', + 'fields.gerritRepoPicker.owner.description': 'Le propriétaire du projet (facultatif)', + 'fields.gerritRepoPicker.parent.title': 'Mère', + 'fields.gerritRepoPicker.parent.description': 'Le parent du projet auquel appartiendra le dépôt', + 'fields.giteaRepoPicker.owner.title': 'Propriétaire disponible', + 'fields.giteaRepoPicker.owner.inputTitle': 'Propriétaire', + 'fields.giteaRepoPicker.owner.description': 'Espace de noms Gitea auquel appartiendra ce dépôt. Il peut s’agir du nom d’une organisation, d’un groupe, d’un sous-groupe, d’un utilisateur ou du projet.', + 'fields.githubRepoPicker.owner.title': 'Propriétaire disponible', + 'fields.githubRepoPicker.owner.inputTitle': 'Propriétaire', + 'fields.githubRepoPicker.owner.description': 'L\'organisation, l\'utilisateur ou le projet auquel ce dépôt appartiendra', + 'fields.gitlabRepoPicker.owner.title': 'Propriétaire disponible', + 'fields.gitlabRepoPicker.owner.inputTitle': 'Propriétaire', + 'fields.gitlabRepoPicker.owner.description': 'Espace de noms GitLab auquel appartiendra ce référentiel. Il peut s’agir du nom d’une organisation, d’un groupe, d’un sous-groupe, d’un utilisateur ou du projet.', + 'fields.repoUrlPicker.host.title': 'Hôte', + 'fields.repoUrlPicker.host.description': 'L\'hôte où le référentiel sera créé', + 'fields.repoUrlPicker.repository.title': 'Dépôts disponibles', + 'fields.repoUrlPicker.repository.inputTitle': 'Dépôt', + 'fields.repoUrlPicker.repository.description': 'Le nom du référentiel', + 'listTaskPage.title': 'Liste des tâches du modèle', + 'listTaskPage.pageTitle': 'Modèles de tâches', + 'listTaskPage.subtitle': 'Toutes les tâches qui ont été commencées', + 'listTaskPage.content.emptyState.title': 'Aucune information à afficher', + 'listTaskPage.content.emptyState.description': 'Il n\'y a aucune tâche ou il y a eu un problème de communication avec le backend.', + 'listTaskPage.content.tableTitle': 'Tâches', + 'listTaskPage.content.tableCell.taskID': 'ID de tâche', + 'listTaskPage.content.tableCell.template': 'Modèle', + 'listTaskPage.content.tableCell.created': 'Créé', + 'listTaskPage.content.tableCell.owner': 'Propriétaire', + 'listTaskPage.content.tableCell.status': 'Statut', + 'ownerListPicker.title': 'Propriétaire de la tâche', + 'ownerListPicker.options.owned': 'Possédé', + 'ownerListPicker.options.all': 'Tous', + 'ongoingTask.title': 'Course de', + 'ongoingTask.pageTitle.hasTemplateName': 'Série de {{templateName}}', + 'ongoingTask.pageTitle.noTemplateName': 'Course d\'échafaudeurs', + 'ongoingTask.subtitle': 'Tâche {{taskId}}', + 'ongoingTask.cancelButtonTitle': 'Annuler', + 'ongoingTask.retryButtonTitle': 'Réessayer', + 'ongoingTask.startOverButtonTitle': 'Recommencer', + 'ongoingTask.hideLogsButtonTitle': 'Masquer les journaux', + 'ongoingTask.showLogsButtonTitle': 'Afficher les journaux', + 'ongoingTask.contextMenu.hideLogs': 'Masquer les journaux', + 'ongoingTask.contextMenu.showLogs': 'Afficher les journaux', + 'ongoingTask.contextMenu.hideButtonBar': 'Masquer la barre de boutons', + 'ongoingTask.contextMenu.retry': 'Réessayer', + 'ongoingTask.contextMenu.showButtonBar': 'Afficher la barre de boutons', + 'ongoingTask.contextMenu.startOver': 'Recommencer', + 'ongoingTask.contextMenu.cancel': 'Annuler', + 'templateEditorForm.stepper.emptyText': 'Il n\'y a aucun paramètre de spécification dans le modèle à prévisualiser.', + 'renderSchema.tableCell.name': 'Nom', + 'renderSchema.tableCell.title': 'Titre', + 'renderSchema.tableCell.description': 'Description', + 'renderSchema.tableCell.type': 'Taper', + 'renderSchema.undefined': 'Aucun schéma défini', + 'templatingExtensions.title': 'Extensions de modèles', + 'templatingExtensions.pageTitle': 'Extensions de modèles', + 'templatingExtensions.subtitle': 'Il s\'agit de la collection d\'extensions de modèles disponibles', + 'templatingExtensions.content.emptyState.title': 'Aucune information à afficher', + 'templatingExtensions.content.emptyState.description': 'Aucune extension de modèle n\'est disponible ou il y a eu un problème de communication avec le backend.', + 'templatingExtensions.content.searchFieldPlaceholder': 'Rechercher une extension', + 'templatingExtensions.content.filters.title': 'Filtres', + 'templatingExtensions.content.filters.notAvailable': 'Aucun filtre de modèle n\'est défini.', + 'templatingExtensions.content.filters.metadataAbsent': 'Les métadonnées du filtre ne sont pas disponibles', + 'templatingExtensions.content.filters.schema.input': 'Saisir', + 'templatingExtensions.content.filters.schema.arguments': 'Arguments', + 'templatingExtensions.content.filters.schema.output': 'Sortir', + 'templatingExtensions.content.filters.examples': 'Exemples', + 'templatingExtensions.content.functions.title': 'Fonctions', + 'templatingExtensions.content.functions.notAvailable': 'Aucune fonction de modèle globale n\'est définie.', + 'templatingExtensions.content.functions.metadataAbsent': 'Métadonnées de fonction indisponibles', + 'templatingExtensions.content.functions.schema.arguments': 'Arguments', + 'templatingExtensions.content.functions.schema.output': 'Sortir', + 'templatingExtensions.content.functions.examples': 'Exemples', + 'templatingExtensions.content.values.title': 'Valeurs', + 'templatingExtensions.content.values.notAvailable': 'Aucune valeur de modèle globale n\'est définie.', + 'templateTypePicker.title': 'Catégories', + 'templateIntroPage.title': 'Gérer les modèles', + 'templateIntroPage.subtitle': 'Modifiez, prévisualisez et essayez des modèles, des formulaires et des champs personnalisés', + 'templateFormPage.title': 'Éditeur de modèles', + 'templateFormPage.subtitle': 'Modifier, prévisualiser et tester des modèles de formulaires', + 'templateCustomFieldPage.title': 'Explorateur de champs personnalisés', + 'templateCustomFieldPage.subtitle': 'Modifier, prévisualiser et tester les champs personnalisés', + 'templateEditorPage.title': 'Éditeur de modèles', + 'templateEditorPage.subtitle': 'Modifier, prévisualiser et tester des modèles et des formulaires de modèles', + 'templateEditorPage.dryRunResults.title': 'Résultats de l\'essai à blanc', + 'templateEditorPage.dryRunResultsList.title': 'Résultat {{resultId}}', + 'templateEditorPage.dryRunResultsList.downloadButtonTitle': 'Télécharger au format .zip', + 'templateEditorPage.dryRunResultsList.deleteButtonTitle': 'Supprimer le résultat', + 'templateEditorPage.dryRunResultsView.tab.files': 'Fichiers', + 'templateEditorPage.dryRunResultsView.tab.log': 'Enregistrer', + 'templateEditorPage.dryRunResultsView.tab.output': 'Sortir', + 'templateEditorPage.taskStatusStepper.skippedStepTitle': 'Ignoré', + 'templateEditorPage.customFieldExplorer.selectFieldLabel': 'Choisissez une extension de champ personnalisée', + 'templateEditorPage.customFieldExplorer.fieldForm.title': 'Options de champ', + 'templateEditorPage.customFieldExplorer.fieldForm.applyButtonTitle': 'Appliquer', + 'templateEditorPage.customFieldExplorer.fieldPreview.title': 'Aperçu du terrain', + 'templateEditorPage.customFieldExplorer.preview.title': 'Spécifications du modèle', + 'templateEditorPage.templateEditorBrowser.closeConfirmMessage': 'Es-tu sûr? Les modifications non enregistrées seront perdues', + 'templateEditorPage.templateEditorBrowser.saveIconTooltip': 'Enregistrer tous les fichiers', + 'templateEditorPage.templateEditorBrowser.reloadIconTooltip': 'Recharger le répertoire', + 'templateEditorPage.templateEditorBrowser.closeIconTooltip': 'Fermer le répertoire', + 'templateEditorPage.templateEditorIntro.title': 'Commencez par choisir l\'une des options ci-dessous', + 'templateEditorPage.templateEditorIntro.loadLocal.title': 'Charger le répertoire des modèles', + 'templateEditorPage.templateEditorIntro.loadLocal.description': 'Chargez un répertoire de modèles local, vous permettant à la fois de modifier et d\'essayer d\'exécuter votre propre modèle.', + 'templateEditorPage.templateEditorIntro.loadLocal.unsupportedTooltip': 'Uniquement pris en charge dans certains navigateurs basés sur Chromium avec la page chargée via HTTPS', + 'templateEditorPage.templateEditorIntro.createLocal.title': 'Créer un nouveau modèle', + 'templateEditorPage.templateEditorIntro.createLocal.description': 'Créez un répertoire de modèles local, vous permettant à la fois de modifier et d\'essayer d\'exécuter votre propre modèle.', + 'templateEditorPage.templateEditorIntro.createLocal.unsupportedTooltip': 'Uniquement pris en charge dans certains navigateurs basés sur Chromium avec la page chargée via HTTPS', + 'templateEditorPage.templateEditorIntro.formEditor.title': 'Modèle de formulaire de terrain de jeu', + 'templateEditorPage.templateEditorIntro.formEditor.description': 'Prévisualisez et modifiez un modèle de formulaire, soit en utilisant un exemple de modèle, soit en chargeant un modèle à partir du catalogue.', + 'templateEditorPage.templateEditorIntro.fieldExplorer.title': 'Explorateur de champs personnalisés', + 'templateEditorPage.templateEditorIntro.fieldExplorer.description': 'Affichez et jouez avec les extensions de champs personnalisés installées disponibles.', + 'templateEditorPage.templateEditorTextArea.saveIconTooltip': 'Enregistrer le fichier', + 'templateEditorPage.templateEditorTextArea.refreshIconTooltip': 'Recharger le fichier', + 'templateEditorPage.templateEditorTextArea.emptyStateParagraph': 'Veuillez sélectionner une action dans le menu fichier.', + 'templateEditorPage.templateFormPreviewer.title': 'Charger le modèle existant', + 'templateListPage.title': 'Créer un nouveau composant', + 'templateListPage.subtitle': 'Créez de nouveaux composants logiciels à l\'aide de modèles standard dans votre organisation', + 'templateListPage.pageTitle': 'Créer un nouveau composant', + 'templateListPage.templateGroups.defaultTitle': 'Modèles', + 'templateListPage.templateGroups.otherTitle': 'Autres modèles', + 'templateListPage.contentHeader.supportButtonTitle': 'Créez de nouveaux composants logiciels à l’aide de modèles standard. Différents modèles créent différents types de composants (services, sites Web, documentation, ...).', + 'templateListPage.additionalLinksForEntity.viewTechDocsTitle': 'Voir TechDocs', + 'templateWizardPage.title': 'Créer un nouveau composant', + 'templateWizardPage.subtitle': 'Créez de nouveaux composants logiciels à l\'aide de modèles standard dans votre organisation', + 'templateWizardPage.pageTitle': 'Créer un nouveau composant', + 'templateWizardPage.pageContextMenu.editConfigurationTitle': 'Modifier la configuration', + 'templateEditorToolbar.customFieldExplorerTooltip': 'Explorateur de champs personnalisés', + 'templateEditorToolbar.installedActionsDocumentationTooltip': 'Documentation des actions installées', + 'templateEditorToolbar.templatingExtensionsDocumentationTooltip': 'Documentation des extensions de modèles', + 'templateEditorToolbar.addToCatalogButton': 'Publier', + 'templateEditorToolbar.addToCatalogDialogTitle': 'Publier les modifications', + 'templateEditorToolbar.addToCatalogDialogContent.stepsIntroduction': 'Suivez les instructions ci-dessous pour créer ou mettre à jour un modèle :', + 'templateEditorToolbar.addToCatalogDialogContent.stepsListItems': 'Enregistrez les fichiers de modèle dans un répertoire local Créez une demande d\'extraction vers un dépôt git nouveau ou existant Si le modèle existe déjà, les modifications seront reflétées dans le catalogue de logiciels une fois la demande d\'extraction fusionnée Mais si vous créez un nouveau modèle, suivez la documentation liée ci-dessous pour enregistrer le nouveau dépôt de modèles dans le catalogue de logiciels', + 'templateEditorToolbar.addToCatalogDialogActions.documentationButton': 'Accéder à la documentation', + 'templateEditorToolbar.addToCatalogDialogActions.documentationUrl': 'https://backstage.io/docs/features/software-templates/adding-templates/', + 'templateEditorToolbarFileMenu.button': 'Déposer', + 'templateEditorToolbarFileMenu.options.openDirectory': 'Ouvrir le répertoire des modèles', + 'templateEditorToolbarFileMenu.options.createDirectory': 'Créer un répertoire de modèles', + 'templateEditorToolbarFileMenu.options.closeEditor': 'Fermer l\'éditeur de modèles', + 'templateEditorToolbarTemplatesMenu.button': 'Modèles', + }, +}); diff --git a/packages/app/src/translations/scaffolder/it.ts b/packages/app/src/translations/scaffolder/it.ts new file mode 100644 index 0000000000..7cbe0097c0 --- /dev/null +++ b/packages/app/src/translations/scaffolder/it.ts @@ -0,0 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { scaffolderTranslationRef } from '@backstage/plugin-scaffolder/alpha'; + +export default createTranslationMessages({ + ref: scaffolderTranslationRef, + full: false, + messages: { + 'templateListPage.contentHeader.registerExistingButtonTitle': 'Importa un repository Git esistente', + }, +}); diff --git a/packages/app/src/translations/scaffolder/ja.ts b/packages/app/src/translations/scaffolder/ja.ts new file mode 100644 index 0000000000..9fe1b4a0b2 --- /dev/null +++ b/packages/app/src/translations/scaffolder/ja.ts @@ -0,0 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { scaffolderTranslationRef } from '@backstage/plugin-scaffolder/alpha'; + +export default createTranslationMessages({ + ref: scaffolderTranslationRef, + full: false, + messages: { + 'templateListPage.contentHeader.registerExistingButtonTitle': '既存の Git リポジトリーのインポート', + }, +}); diff --git a/packages/app/src/translations/scaffolder/scaffolder.ts b/packages/app/src/translations/scaffolder/scaffolder.ts index 5976ba6f80..22dc0f0d3c 100644 --- a/packages/app/src/translations/scaffolder/scaffolder.ts +++ b/packages/app/src/translations/scaffolder/scaffolder.ts @@ -5,5 +5,8 @@ export const scaffolderTranslations = createTranslationResource({ ref: scaffolderTranslationRef, translations: { en: () => import('./scaffolder-en'), + fr: () => import('./fr'), + it: () => import('./it'), + ja: () => import('./ja'), }, }); diff --git a/packages/app/src/translations/search/ja.ts b/packages/app/src/translations/search/ja.ts new file mode 100644 index 0000000000..b0d18b9193 --- /dev/null +++ b/packages/app/src/translations/search/ja.ts @@ -0,0 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { searchTranslationRef } from '@backstage/plugin-search/alpha'; + +export default createTranslationMessages({ + ref: searchTranslationRef, + full: false, + messages: { + 'sidebarSearchModal.title': '検索', + }, +}); diff --git a/packages/app/src/translations/search/search-fr.ts b/packages/app/src/translations/search/search-fr.ts index e0ebca0c94..b2f849a54d 100644 --- a/packages/app/src/translations/search/search-fr.ts +++ b/packages/app/src/translations/search/search-fr.ts @@ -1,12 +1,32 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; import { searchTranslationRef } from '@backstage/plugin-search/alpha'; -const fr = createTranslationMessages({ +export default createTranslationMessages({ ref: searchTranslationRef, full: false, messages: { 'sidebarSearchModal.title': 'Rechercher', + 'searchModal.viewFullResults': 'Voir les résultats complets', + 'searchType.allResults': 'Tous les résultats', + 'searchType.tabs.allTitle': 'Tous', + 'searchType.accordion.allTitle': 'Tous', + 'searchType.accordion.collapse': 'Effondrement', + 'searchType.accordion.numberOfResults': '{{number}} résultats', }, }); - -export default fr; diff --git a/packages/app/src/translations/search/search-it.ts b/packages/app/src/translations/search/search-it.ts index 0f2f395693..c69be20823 100644 --- a/packages/app/src/translations/search/search-it.ts +++ b/packages/app/src/translations/search/search-it.ts @@ -1,12 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; import { searchTranslationRef } from '@backstage/plugin-search/alpha'; -const it = createTranslationMessages({ +export default createTranslationMessages({ ref: searchTranslationRef, full: false, messages: { - 'sidebarSearchModal.title': 'Cerca', + 'sidebarSearchModal.title': 'Ricerca', }, }); - -export default it; diff --git a/packages/app/src/translations/search/search.ts b/packages/app/src/translations/search/search.ts index 606489d6f2..e2d1d142f9 100644 --- a/packages/app/src/translations/search/search.ts +++ b/packages/app/src/translations/search/search.ts @@ -7,6 +7,7 @@ export const searchTranslations = createTranslationResource({ en: () => import('./search-en'), de: () => import('./search-de'), fr: () => import('./search-fr'), + ja: () => import('./ja'), es: () => import('./search-es'), it: () => import('./search-it'), }, diff --git a/packages/app/src/translations/user-settings/ja.ts b/packages/app/src/translations/user-settings/ja.ts new file mode 100644 index 0000000000..74d1687cfe --- /dev/null +++ b/packages/app/src/translations/user-settings/ja.ts @@ -0,0 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; +import { userSettingsTranslationRef } from '@backstage/plugin-user-settings/alpha'; + +export default createTranslationMessages({ + ref: userSettingsTranslationRef, + full: false, + messages: { + 'sidebarTitle': '設定', + }, +}); diff --git a/packages/app/src/translations/user-settings/user-settings-fr.ts b/packages/app/src/translations/user-settings/user-settings-fr.ts index 87237e58a5..42450a77cc 100644 --- a/packages/app/src/translations/user-settings/user-settings-fr.ts +++ b/packages/app/src/translations/user-settings/user-settings-fr.ts @@ -1,12 +1,75 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; import { userSettingsTranslationRef } from '@backstage/plugin-user-settings/alpha'; -const fr = createTranslationMessages({ +export default createTranslationMessages({ ref: userSettingsTranslationRef, full: false, messages: { - sidebarTitle: 'Paramètres', + 'sidebarTitle': 'Paramètres', + 'languageToggle.title': 'Langue', + 'languageToggle.description': 'Changer la langue', + 'languageToggle.select': 'Sélectionnez la langue {{language}}', + 'themeToggle.title': 'Thème', + 'themeToggle.description': 'Changer le mode de thème', + 'themeToggle.select': 'Sélectionnez le thème {{theme}}', + 'themeToggle.selectAuto': 'Sélectionner le thème automatique', + 'themeToggle.names.light': 'Lumière', + 'themeToggle.names.dark': 'Sombre', + 'themeToggle.names.auto': 'Auto', + 'signOutMenu.title': 'Se déconnecter', + 'signOutMenu.moreIconTitle': 'plus', + 'pinToggle.title': 'Épingler la barre latérale', + 'pinToggle.description': 'Empêcher l\'effondrement de la barre latérale', + 'pinToggle.switchTitles.unpin': 'Détacher la barre latérale', + 'pinToggle.switchTitles.pin': 'Épingler la barre latérale', + 'pinToggle.ariaLabelTitle': 'Commutateur de barre latérale à broches', + 'identityCard.title': 'Identité des coulisses', + 'identityCard.noIdentityTitle': 'Aucune identité en coulisses', + 'identityCard.userEntity': 'Entité utilisateur', + 'identityCard.ownershipEntities': 'Entités propriétaires', + 'defaultProviderSettings.description': 'Fournit une authentification vers les API et les identités {{provider}}', + 'emptyProviders.title': 'Aucun fournisseur d\'authentification', + 'emptyProviders.description': 'Vous pouvez ajouter des fournisseurs d’authentification à Backstage, ce qui vous permet d’utiliser ces fournisseurs pour vous authentifier.', + 'emptyProviders.action.title': 'Ouvrez app-config.yaml et effectuez les modifications comme indiqué ci-dessous :', + 'emptyProviders.action.readMoreButtonTitle': 'En savoir plus', + 'providerSettingsItem.title.signIn': 'Connectez-vous à {{title}}', + 'providerSettingsItem.title.signOut': 'Se déconnecter de {{title}}', + 'providerSettingsItem.buttonTitle.signIn': 'Se connecter', + 'providerSettingsItem.buttonTitle.signOut': 'Se déconnecter', + 'authProviders.title': 'Fournisseurs disponibles', + 'defaultSettingsPage.tabsTitle.general': 'Général', + 'defaultSettingsPage.tabsTitle.authProviders': 'Fournisseurs d\'authentification', + 'defaultSettingsPage.tabsTitle.featureFlags': 'Drapeaux de fonctionnalités', + 'featureFlags.title': 'Drapeaux de fonctionnalités', + 'featureFlags.description': 'Veuillez actualiser la page lorsque vous activez ou désactivez les indicateurs de fonctionnalité.', + 'featureFlags.emptyFlags.title': 'Aucun indicateur de fonctionnalité', + 'featureFlags.emptyFlags.description': 'Les indicateurs de fonctionnalités permettent aux plugins d\'enregistrer des fonctionnalités dans Backstage pour que les utilisateurs puissent les accepter. Vous pouvez l\'utiliser pour diviser la logique dans votre code pour les tests A/B manuels, etc.', + 'featureFlags.emptyFlags.action.title': 'Un exemple de la manière d’ajouter un indicateur de fonctionnalité est mis en évidence ci-dessous :', + 'featureFlags.emptyFlags.action.readMoreButtonTitle': 'En savoir plus', + 'featureFlags.filterTitle': 'Filtre', + 'featureFlags.clearFilter': 'Effacer le filtre', + 'featureFlags.flagItem.title.disable': 'Désactiver', + 'featureFlags.flagItem.title.enable': 'Activer', + 'featureFlags.flagItem.subtitle.registeredInApplication': 'Enregistré dans l\'application', + 'featureFlags.flagItem.subtitle.registeredInPlugin': 'Enregistré dans le plugin {{pluginId}}', + 'settingsLayout.title': 'Paramètres', + 'profileCard.title': 'Profil', + 'appearanceCard.title': 'Apparence', }, }); - -export default fr; diff --git a/packages/app/src/translations/user-settings/user-settings-it.ts b/packages/app/src/translations/user-settings/user-settings-it.ts index 2cf4d71a32..89d29c8ff3 100644 --- a/packages/app/src/translations/user-settings/user-settings-it.ts +++ b/packages/app/src/translations/user-settings/user-settings-it.ts @@ -1,12 +1,26 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { createTranslationMessages } from '@backstage/core-plugin-api/alpha'; import { userSettingsTranslationRef } from '@backstage/plugin-user-settings/alpha'; -const it = createTranslationMessages({ +export default createTranslationMessages({ ref: userSettingsTranslationRef, full: false, messages: { - sidebarTitle: 'Impostazioni', + 'sidebarTitle': 'Impostazioni', }, }); - -export default it; diff --git a/packages/app/src/translations/user-settings/user-settings.ts b/packages/app/src/translations/user-settings/user-settings.ts index 27d8f52393..bd463e5b37 100644 --- a/packages/app/src/translations/user-settings/user-settings.ts +++ b/packages/app/src/translations/user-settings/user-settings.ts @@ -7,6 +7,7 @@ export const userSettingsTranslations = createTranslationResource({ en: () => import('./user-settings-en'), de: () => import('./user-settings-de'), fr: () => import('./user-settings-fr'), + ja: () => import('./ja'), es: () => import('./user-settings-es'), it: () => import('./user-settings-it'), }, diff --git a/pvc.yaml b/pvc.yaml new file mode 100644 index 0000000000..d7056a7f7c --- /dev/null +++ b/pvc.yaml @@ -0,0 +1,10 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: dynamic-plugins-root +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi \ No newline at end of file diff --git a/rbac-policy.csv b/rbac-policy.csv new file mode 100644 index 0000000000..f6875e85c4 --- /dev/null +++ b/rbac-policy.csv @@ -0,0 +1,20 @@ +p, role:default/team_a, catalog-entity, read, allow +p, role:default/team_a, policy-entity, read, allow +p, role:default/team_a, policy-entity, create, allow +g, user:default/team_a/ciiay, role:default/team_a + +p, role:default/team_a, bulk.import, use, allow + +p, role:default/team_a, catalog-entity, read, allow +p, role:default/team_a, policy-entity, read, allow +p, role:default/team_a, policy-entity, create, allow +g, user:default/team_a/rhdh-qe, role:default/rhdh-qe + +p, role:default/team_a, bulk.import, use, allow +p, role:default/rhdh-ui-test, bulk.import, use, allow + +p, role:default/admins, extension-plugin, read, allow +p, role:default/admins, extension-plugin, create, allow + +p, role:default/team_a, extensions-plugin, read, allow +p, role:default/team_a, extensions-plugin, create, allow \ No newline at end of file diff --git a/start-backend-debug.sh b/start-backend-debug.sh new file mode 100755 index 0000000000..2fcef6abb6 --- /dev/null +++ b/start-backend-debug.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# Red Hat Developer Hub Backend Debug Startup Script +# This script enables comprehensive debug logging for troubleshooting + +# Required environment variables +export ORGANIZATION_NAME="Red Hat Developer Hub" +export FULL_LOGO_WIDTH="120" +export PRIMARY_LIGHT_COLOR="#EE0000" +export HEADER_LIGHT_COLOR_1="#EE0000" +export HEADER_LIGHT_COLOR_2="#CC0000" +export NAV_INDICATOR_LIGHT_COLOR="#EE0000" +export PRIMARY_DARK_COLOR="#EE0000" +export HEADER_DARK_COLOR_1="#EE0000" +export HEADER_DARK_COLOR_2="#CC0000" +export NAV_INDICATOR_DARK_COLOR="#EE0000" +export JIRA_URL="https://jira.example.com" +export LIGHTHOUSE_BASEURL="http://localhost:3001" +export DYNATRACE_URL="https://dynatrace.example.com" +export PERMISSION_ENABLED="true" + +# Debug logging options +export LOG_LEVEL="debug" +export DEBUG="*" + +# Additional debug options for specific components +# Uncomment the ones you want to debug: +# export DEBUG="backstage:*" # All Backstage components +# export DEBUG="backstage:backend:*" # Backend only +# export DEBUG="backstage:catalog:*" # Catalog service +# export DEBUG="backstage:auth:*" # Authentication +# export DEBUG="backstage:scaffolder:*" # Scaffolder +# export DEBUG="backstage:search:*" # Search +# export DEBUG="backstage:proxy:*" # Proxy +# export DEBUG="backstage:permission:*" # Permissions +# export DEBUG="backstage:rbac:*" # RBAC +# export DEBUG="backstage:dynamic-plugins:*" # Dynamic plugins + +# Node.js debug options +export NODE_OPTIONS="--inspect=0.0.0.0:9229" + +# Winston logger debug +export WINSTON_LEVEL="debug" + +echo "Starting Red Hat Developer Hub backend with comprehensive debug logging..." +echo "Debug logs will be very verbose - use Ctrl+C to stop" +echo "Node.js inspector available at: http://localhost:9229" +echo "" + +yarn start-backend diff --git a/start-backend-with-env.sh b/start-backend-with-env.sh new file mode 100755 index 0000000000..771152de16 --- /dev/null +++ b/start-backend-with-env.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Red Hat Developer Hub Backend Startup Script +# This script sets the required environment variables and starts the backend + +export ORGANIZATION_NAME="Red Hat Developer Hub" +export FULL_LOGO_WIDTH="120" +export PRIMARY_LIGHT_COLOR="#EE0000" +export HEADER_LIGHT_COLOR_1="#EE0000" +export HEADER_LIGHT_COLOR_2="#CC0000" +export NAV_INDICATOR_LIGHT_COLOR="#EE0000" +export PRIMARY_DARK_COLOR="#EE0000" +export HEADER_DARK_COLOR_1="#EE0000" +export HEADER_DARK_COLOR_2="#CC0000" +export NAV_INDICATOR_DARK_COLOR="#EE0000" +export JIRA_URL="https://jira.example.com" +export LIGHTHOUSE_BASEURL="http://localhost:3001" +export DYNATRACE_URL="https://dynatrace.example.com" +export PERMISSION_ENABLED="true" + +# Enable debug logging +export LOG_LEVEL="debug" +export DEBUG="*" + +echo "Starting Red Hat Developer Hub backend with debug logging enabled..." +yarn start-backend + diff --git a/translations/community-plugins_v1.8_s3281-fr-C.json b/translations/community-plugins-reference-2025-12-05-fr-C.json similarity index 77% rename from translations/community-plugins_v1.8_s3281-fr-C.json rename to translations/community-plugins-reference-2025-12-05-fr-C.json index 06b36f2099..ab9696f2d4 100644 --- a/translations/community-plugins_v1.8_s3281-fr-C.json +++ b/translations/community-plugins-reference-2025-12-05-fr-C.json @@ -1,231 +1,240 @@ { - "plugin.topology": { + "plugin.acr": { "fr": { - "page.title": "Topologie", - "page.subtitle": "Visualisation de la topologie de la charge de travail Kubernetes", - "toolbar.cluster": "Cluster", - "toolbar.selectCluster": "Sélectionner un cluster", - "toolbar.displayOptions": "Options d'affichage", - "toolbar.currentDisplayOptions": "Options d'affichage actuelles", - "emptyState.noResourcesFound": "Aucune ressource trouvée", - "emptyState.noResourcesDescription": "Aucune ressource Kubernetes n’a été trouvée dans le cluster sélectionné.", - "permissions.missingPermission": "Autorisation manquante", - "permissions.missingPermissionDescription": "Pour afficher la topologie, votre administrateur doit vous accorder {{permissions}} {{permissionText}}.", - "permissions.missingPermissionDescription_plural": "Pour afficher la topologie, votre administrateur doit vous accorder {{permissions}} {{permissionText}}.", - "permissions.permission": "autorisation", - "permissions.permissions": "autorisations", - "permissions.goBack": "Retour", - "sideBar.details": "Détails", - "sideBar.resources": "Ressources", - "status.running": "En cours d'exécution", - "status.pending": "En attente", - "status.succeeded": "Réussi", - "status.failed": "Échoué", - "status.unknown": "Inconnu", - "status.terminating": "Terminer", - "status.crashLoopBackOff": "CrashLoopBackOff", - "status.error": "Erreur", - "status.warning": "Attention", - "status.ready": "Prêt", - "status.notReady": "Pas prêt", - "status.active": "Actif", - "status.inactive": "Inactif", - "status.updating": "Mise à jour", - "status.evicted": "Expulsé", - "status.cancelled": "Annulé", - "details.name": "Nom", - "details.namespace": "Espace de noms", - "details.labels": "Étiquettes", - "details.annotations": "Annotations", - "details.createdAt": "Créé", - "details.age": "Âge", - "details.replicas": "Répliques", - "details.availableReplicas": "Répliques disponibles", - "details.readyReplicas": "Répliques prêtes", - "details.updatedReplicas": "Répliques mises à jour", - "details.selector": "Sélecteur", - "details.strategy": "Stratégie", - "details.image": "Image", - "details.ports": "Ports", - "details.volumes": "Volumes", - "details.volumeMounts": "Montages de volume", - "details.environmentVariables": "Variables d'environnement", - "details.resourceRequirements": "Besoins en ressources", - "details.limits": "Limites", - "details.requests": "Demandes", - "details.cpu": "CPU", - "details.memory": "Mémoire", - "details.storage": "Stockage", - "details.noLabels": "Aucune étiquette", - "details.noAnnotations": "Aucune annotation", - "details.noOwner": "Pas de propriétaire", - "details.notAvailable": "Pas disponible", - "details.notConfigured": "Non configuré", - "details.updateStrategy": "Mettre à jour la stratégie", - "details.maxUnavailable": "Max indisponible", - "details.maxSurge": "Surtension maximale", - "details.progressDeadlineSeconds": "Délai de progression en secondes", - "details.minReadySeconds": "Minutes de disponibilité en secondes", - "details.desiredCompletions": "Complétions souhaitées", - "details.parallelism": "Parallélisme", - "details.activeDeadlineSeconds": "Secondes du délai actif", - "details.currentCount": "Nombre actuel", - "details.desiredCount": "Nombre souhaité", - "details.schedule": "Calendrier", - "details.concurrencyPolicy": "Politique de concurrence", - "details.startingDeadlineSeconds": "Délai de départ secondes", - "details.lastScheduleTime": "Dernière heure prévue", - "details.maxSurgeDescription": "{{maxSurge}} supérieur à {{replicas}} pod", - "details.maxUnavailableDescription": "{{maxUnavailable}} de {{replicas}} pod", - "logs.download": "Télécharger", - "logs.noLogsFound": "Aucun journal trouvé", - "logs.selectContainer": "Sélectionner le conteneur", - "logs.container": "Récipient", - "logs.pod": "Pod", - "logs.showPrevious": "Afficher le précédent", - "logs.follow": "Suivre", - "logs.refresh": "Rafraîchir", - "logs.timestamps": "Horodatages", - "logs.wrapLines": "Wrap Lines", - "logs.clearLogs": "Effacer les journaux", - "logs.logLevel": "Niveau de journalisation", - "logs.search": "Rechercher", - "logs.noMatchingLogs": "Aucun journal correspondant trouvé", - "resources.noResourcesFound": "Aucun {{resourceType}} trouvé pour cette ressource.", - "resources.showingLatest": "Affichage des derniers {{count}} {{resourceType}}", - "time.seconds": "secondes", - "time.minutes": "minutes", - "time.hours": "heures", - "time.days": "jours", - "events.type": "Taper", - "events.reason": "Raison", - "events.message": "Message", - "events.source": "Source", - "events.firstSeen": "Vu pour la première fois", - "events.lastSeen": "Vu pour la dernière fois", - "events.count": "Nombre", - "events.noEventsFound": "Aucun événement trouvé", - "filters.showLabels": "Afficher les étiquettes", - "filters.showPodCount": "Afficher le nombre de pods", - "filters.expandApplicationGroups": "Développer les groupes d'applications", - "filters.showConnectors": "Afficher les connecteurs", - "common.status": "Statut", - "common.owner": "Propriétaire", - "common.location": "Emplacement", - "common.viewLogs": "Afficher les journaux", - "bootOrder.summary": "Résumé de l'ordre de démarrage", - "bootOrder.emptySummary": "Aucun ordre de démarrage configuré", - "bootOrder.disk": "Disque", - "bootOrder.network": "Réseau", - "bootOrder.cdrom": "CD-ROM", - "vm.status.starting": "Départ", - "vm.status.stopping": "Arrêt", - "vm.status.stopped": "Arrêté", - "vm.status.paused": "En pause", - "vm.status.migrating": "Migration", - "vm.status.provisioning": "Provisionnement", - "vm.status.errorUnschedulable": "Erreur non programmable", - "vm.status.errorImagePull": "Extraction d'image d'erreur", - "vm.status.imageNotReady": "Image Non Prête", - "vm.status.waitingForVolumeBinding": "En attente de liaison de volume" + "page.title": "Azure Container Registry Repository: {{image}}", + "table.searchPlaceholder": "Filtre", + "table.labelRowsSelect": "Lignes", + "table.columns.tag": "Balise", + "table.columns.created": "Créé", + "table.columns.lastModified": "Dernière modification", + "table.columns.manifest": "Manifeste" } }, - "plugin.argocd": { + "plugin.adr": { "fr": { - "appStatus.appHealthStatus.Healthy": "En bon fonctionnement", - "appStatus.appHealthStatus.Suspended": "Suspendu", - "appStatus.appHealthStatus.Degraded": "Dégradé", - "appStatus.appHealthStatus.Progressing": "Progression", - "appStatus.appHealthStatus.Missing": "Manquant", - "appStatus.appHealthStatus.Unknown": "Inconnu", - "appStatus.appSyncStatus.Unknown": "Inconnu", - "appStatus.appSyncStatus.Synced": "Synchronisé", - "appStatus.appSyncStatus.OutOfSync": "Désynchronisation", - "common.appServer.title": "Il s'agit du cluster local sur lequel Argo CD est installé.", - "common.permissionAlert.alertTitle": "Autorisation requise", - "common.permissionAlert.alertText": "Pour afficher le plugin argocd, contactez votre administrateur pour qu'il vous donne l'autorisation argocd.view.read.", - "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.name": "Nom", - "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.kind": "Gentil", - "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.createdAt": "Créé à", - "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.syncStatus": "Statut de synchronisation", - "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.healthStatus": "État de fonctionnement", - "deploymentLifecycle.sidebar.resources.resourcesTable.ariaLabelledBy": "Ressources", - "deploymentLifecycle.sidebar.resources.resourcesTable.noneFound": "Aucune ressource trouvée", - "deploymentLifecycle.sidebar.resources.resourcesTableRow.ariaLabel": "développer la ligne", - "deploymentLifecycle.sidebar.resources.resource.deploymentHistory.bodyText": "Historique de déploiement", - "deploymentLifecycle.sidebar.resources.resource.deploymentHistoryCommit.deployedText": "déployé", - "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.title": "Images", - "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.tooltipText": "Voici les images de tous les déploiements dans l'application ArgoCD.", - "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.namespace": "Espace de noms", - "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.commit": "Valider", - "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.namespace": "Espace de noms", - "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.strategy": "Stratégie", - "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.status": "Statut", - "deploymentLifecycle.sidebar.resources.resource.resourceMetadata.namespace": "Espace de noms", - "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.iconButton.ariaLabel": "plus", - "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.refresh": "Rafraîchir", - "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.sync": "Synchroniser", - "deploymentLifecycle.sidebar.resources.resourcesSearchBar.placeholder": "Recherche par type", - "deploymentLifecycle.sidebar.resources.resourcesSearchBar.ariaLabel": "recherche claire", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SearchByName": "Nom", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Kind": "Gentil", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SyncStatus": "Statut de synchronisation", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.HealthStatus": "État de fonctionnement", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Unset": "Filtrer par", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.searchByNameInput": "Rechercher par nom", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusInput": "Filtrer par état de fonctionnement", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusInput": "Filtrer par statut de synchronisation", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.kindInput": "Filtrer par type", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.resourceFilters": "Filtres de ressources", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.syncStatus": "Statut de synchronisation", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.kind": "Kind", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Healthy": "En bon fonctionnement", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Suspended": "Suspendu", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Degraded": "Dégradé", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Progressing": "Progression", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Missing": "Manquant", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Unknown": "Inconnu", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Synced": "Synchronisé", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Unknown": "Inconnu", - "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.OutOfSync": "Désynchronisation", - "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.textPrimary": "Exécutions d'analyse", - "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.name": "Nom:", - "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.createdAt": "Créé à :", - "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.status": "Statut:", - "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.chipLabel": "Analyse", - "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.revision": "Révision", - "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.stable": "Stable", - "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.active": "Actif", - "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.preview": "Aperçu", - "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revision": "Révision", - "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.stable": "Stable", - "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.canary": "Canary", - "deploymentLifecycle.sidebar.rollouts.revisions.revisionImage.textPrimary": "Trafic vers l'image", - "deploymentLifecycle.sidebar.rollouts.rollOut.title": "Révisions", - "deploymentLifecycle.deploymentLifecycle.title": "Cycle de vie du déploiement", - "deploymentLifecycle.deploymentLifecycle.subtitle": "Examiner les composants/systèmes déployés dans l'espace de noms à l'aide du plugin ArgoCD", - "deploymentLifecycle.deploymentLifecycleCard.instance": "Exemple", - "deploymentLifecycle.deploymentLifecycleCard.server": "Serveur", - "deploymentLifecycle.deploymentLifecycleCard.namespace": "Espace de noms", - "deploymentLifecycle.deploymentLifecycleCard.commit": "Valider", - "deploymentLifecycle.deploymentLifecycleCard.tooltipText": "Le commit SHA indiqué ci-dessous est le dernier commit de la première source d'application définie.", - "deploymentLifecycle.deploymentLifecycleCard.resources": "Ressources", - "deploymentLifecycle.deploymentLifecycleCard.resourcesDeployed": "ressources déployées", - "deploymentLifecycle.deploymentLifecycleDrawer.iconButtonTitle": "Fermez le tiroir", - "deploymentLifecycle.deploymentLifecycleDrawer.instance": "Exemple", - "deploymentLifecycle.deploymentLifecycleDrawer.cluster": "Cluster", - "deploymentLifecycle.deploymentLifecycleDrawer.namespace": "Espace de noms", - "deploymentLifecycle.deploymentLifecycleDrawer.commit": "Valider", - "deploymentLifecycle.deploymentLifecycleDrawer.revision": "Révision", - "deploymentLifecycle.deploymentLifecycleDrawer.resources": "Ressources", - "deploymentLifecycle.deploymentLifecycleDrawer.instanceDefaultValue": "défaut", - "deploymentSummary.deploymentSummary.tableTitle": "Résumé du déploiement", - "deploymentSummary.deploymentSummary.columns.instance": "Exemple", - "deploymentSummary.deploymentSummary.columns.server": "Serveur", - "deploymentSummary.deploymentSummary.columns.revision": "Révision", - "deploymentSummary.deploymentSummary.columns.lastDeployed": "Dernier déploiement", - "deploymentSummary.deploymentSummary.columns.syncStatus": "Statut de synchronisation", - "deploymentSummary.deploymentSummary.columns.healthStatus": "État de fonctionnement" + "contentHeaderTitle": "Dossiers de décision d'architecture", + "failedToFetch": "Échec de la récupération des ADR", + "notFound": "Aucun effet indésirable n'a été trouvé" + } + }, + "plugin.announcements-react": { + "fr": { + "announcementForm.title": "Titre", + "announcementForm.excerpt": "Extrait", + "announcementForm.active": "Actif", + "announcementForm.submit": "Soumettre", + "announcementForm.editAnnouncement": "Modifier l'annonce", + "announcementForm.newAnnouncement": "Nouvelle annonce", + "announcementForm.startAt": "Date de début de l'annonce", + "announcementForm.untilDate": "Date de fin de l'annonce", + "announcementForm.onBehalfOf": "Au nom de", + "announcementForm.categoryInput.create": "Créer", + "announcementForm.categoryInput.label": "Catégorie", + "announcementForm.tagsInput.create": "Créer", + "announcementForm.tagsInput.label": "Mots-clés", + "announcementForm.tagsLabel": "Mots-clés", + "announcementsPage.newAnnouncement": "Nouvelle annonce", + "announcementsPage.genericNew": "Nouveau", + "announcementsPage.card.by": "Par", + "announcementsPage.card.in": "dans", + "announcementsPage.card.edit": "Modifier", + "announcementsPage.card.delete": "Supprimer", + "announcementsPage.card.occurred": "S'est produit ", + "announcementsPage.card.scheduled": "Programmé ", + "announcementsPage.card.today": "Aujourd'hui", + "announcementsPage.grid.announcementDeleted": "Annonce supprimée.", + "announcementsPage.contextMenu.admin": "Gérer les annonces", + "confirmDeleteDialog.title": "Voulez-vous vraiment supprimer ?", + "confirmDeleteDialog.cancel": "Annuler", + "confirmDeleteDialog.delete": "Supprimer", + "announcementsCard.seeAll": "Tout voir", + "announcementsCard.announcements": "Annonces", + "announcementsCard.new": "Nouveau", + "announcementsCard.in": "dans", + "announcementsCard.noAnnouncements": "Aucune annonce pour le moment, je veux", + "announcementsCard.addOne": "ajouter un", + "announcementsCard.occurred": "S'est produit", + "announcementsCard.scheduled": "Programmé", + "announcementsCard.today": "Aujourd'hui", + "announcementSearchResultListItem.published": "Publié", + "announcementSearchResultListItem.announcement": "Annonce", + "announcementsTimeline.noAnnouncements": "Aucune annonce", + "announcementsTimeline.error": "Erreur", + "categoriesForm.newCategory": "Nouvelle catégorie", + "categoriesForm.editCategory": "Modifier la catégorie", + "categoriesForm.titleLabel": "Titre", + "categoriesForm.submit": "Soumettre", + "categoriesTable.categoryDeleted": "Catégorie supprimée.", + "categoriesTable.slug": "Slug", + "categoriesTable.title": "Titre", + "categoriesTable.actions": "Actes", + "categoriesTable.addTooltip": "Ajouter", + "categoriesTable.noCategoriesFound": "Aucune catégorie trouvée.", + "categoriesPage.title": "Catégories", + "categoriesPage.subtitle": "Gérer les catégories d'annonces", + "tagsForm.newTag": "Nouvelle balise", + "tagsForm.editTag": "Modifier la balise", + "tagsForm.titleLabel": "Titre", + "tagsForm.submit": "Soumettre", + "tagsForm.errors.alreadyExists": "Une balise avec ce nom existe déjà.", + "tagsForm.errors.invalidTitle": "Le titre est obligatoire.", + "tagsForm.errors.tooLong": "Le titre dépasse la longueur maximale.", + "newTagDialog.createdMessage": "Balise créée.", + "newTagDialog.newTag": "Nouvelle balise", + "newTagDialog.title": "Titre", + "newTagDialog.cancelButton": "Annuler", + "newTagDialog.createButton": "Créer", + "tagsPage.title": "Mots-clés", + "tagsPage.subtitle": "Gérer les balises d'annonce", + "tagsTable.tagDeleted": "Balise supprimée.", + "tagsTable.slug": "Slug", + "tagsTable.title": "Titre", + "tagsTable.actions": "Actes", + "tagsTable.addTooltip": "Ajouter", + "tagsTable.noTagsFound": "Aucune balise trouvée.", + "createAnnouncementPage.alertMessage": "Annonce créée.", + "createAnnouncementPage.alertMessageWithNewCategory": "avec une nouvelle catégorie", + "editAnnouncementPage.updatedMessage": "Annonce mise à jour.", + "editAnnouncementPage.updatedMessageWithNewCategory": "avec une nouvelle catégorie", + "editAnnouncementPage.notFoundMessage": "Impossible de trouver l'annonce", + "editAnnouncementPage.edit": "Modifier", + "newAnnouncementBanner.markAsSeen": "Marquer comme vu", + "newCategoryDialog.createdMessage": "Catégorie créée.", + "newCategoryDialog.newCategory": "Nouvelle catégorie", + "newCategoryDialog.title": "Titre", + "newCategoryDialog.cancelButton": "Annuler", + "newCategoryDialog.createButton": "Créer", + "admin.adminPortal.announcementsLabels": "Annonces", + "admin.adminPortal.categoriesLabel": "Catégories", + "admin.adminPortal.tagsLabel": "Mots-clés", + "admin.adminPortal.title": "Portail d'administration pour les annonces", + "admin.adminPortal.subtitle": "Gérer les annonces et les catégories", + "admin.announcementsContent.alertMessage": "Annonce créée.", + "admin.announcementsContent.alertMessageWithNewCategory": "avec une nouvelle catégorie", + "admin.announcementsContent.cancelButton": "Annuler", + "admin.announcementsContent.createButton": "Créer une annonce", + "admin.announcementsContent.announcements": "Annonces", + "admin.announcementsContent.noAnnouncementsFound": "Aucune annonce trouvée", + "admin.announcementsContent.table.title": "Titre", + "admin.announcementsContent.table.body": "Contenu", + "admin.announcementsContent.table.publisher": "Éditeur", + "admin.announcementsContent.table.onBehalfOf": "Au nom de", + "admin.announcementsContent.table.category": "Catégorie", + "admin.announcementsContent.table.tags": "Mots-clés", + "admin.announcementsContent.table.status": "Statut", + "admin.announcementsContent.table.actions": "Actes", + "admin.announcementsContent.table.active": "Actif", + "admin.announcementsContent.table.inactive": "Inactif", + "admin.announcementsContent.table.created_at": "Créé", + "admin.announcementsContent.table.start_at": "Commencer", + "admin.announcementsContent.table.until_date": "Jusqu'à", + "admin.categoriesContent.createdMessage": "créé", + "admin.categoriesContent.deletedMessage": "Catégorie supprimée.", + "admin.categoriesContent.cancelButton": "Annuler", + "admin.categoriesContent.createButton": "Créer une catégorie", + "admin.categoriesContent.table.categoryDeleted": "Catégorie supprimée.", + "admin.categoriesContent.table.slug": "Slug", + "admin.categoriesContent.table.title": "Titre", + "admin.categoriesContent.table.actions": "Actes", + "admin.categoriesContent.table.addTooltip": "Ajouter", + "admin.categoriesContent.table.noCategoriesFound": "Aucune catégorie trouvée.", + "admin.tagsContent.createdMessage": "créé", + "admin.tagsContent.deletedMessage": "Balise supprimée.", + "admin.tagsContent.cancelButton": "Annuler", + "admin.tagsContent.createButton": "Créer une balise", + "admin.tagsContent.table.tagDeleted": "Balise supprimée.", + "admin.tagsContent.table.slug": "Slug", + "admin.tagsContent.table.title": "Titre", + "admin.tagsContent.table.actions": "Actes", + "admin.tagsContent.table.addTooltip": "Ajouter", + "admin.tagsContent.table.noTagsFound": "Aucune balise trouvée.", + "admin.tagsContent.errors.alreadyExists": "Une balise avec ce nom existe déjà." + } + }, + "plugin.bookmarks": { + "fr": { + "bookmarkViewer.newTab": "Ouvrir dans un nouvel onglet", + "bookmarkViewer.navButton.next": "Suivant", + "bookmarkViewer.navButton.previous": "Précédent", + "bookmarkViewer.mobileView.toc": "Table de contenu", + "bookmarkViewerFrame.devModeWarning": "Vous devrez peut-être recharger la page pour que l'iframe se charge correctement en mode développement", + "entityBookmarksContent.invalid.title": "Format de signets invalide", + "entityBookmarksContent.invalid.description": "Assurez-vous que vos signets sont correctement structurés.", + "entityBookmarksContent.notFound.title": "Aucun signet trouvé", + "entityBookmarksContent.notFound.description": "Ajoutez des signets aux métadonnées de votre entité pour les voir ici." + } + }, + "plugin.flux": { + "fr": { + "fluxContentCard.permissionAlert.title": "Autorisation requise", + "fluxContentCard.permissionAlert.message": "Le contenu de flux requiert une autorisation Kubernetes; contactez l'administrateur de votre portail pour qu'il vous accorde l'autorisation « kubernetes.clusters.read » et « kubernetes.resources.read »." + } + }, + "plugin.jfrog-artifactory": { + "fr": { + "page.title": "JFrog Artifactory repository: {{image}}", + "table.searchPlaceholder": "Filtre", + "table.labelRowsSelect": "Lignes", + "table.columns.version": "Version", + "table.columns.repositories": "Dépôts", + "table.columns.manifest": "Manifeste", + "table.columns.modified": "Modifié", + "table.columns.size": "Taille", + "table.emptyContent.message": "Aucune donnée n’a été ajouté pour l’instant,", + "table.emptyContent.learnMore": "apprenez comment ajouter des données.", + "manifest.sha256": "sha256" + } + }, + "plugin.linguist": { + "fr": { + "entityCard.title": "Langues", + "entityCard.noData": "Il n'y a actuellement aucune donnée linguistique pour cette entité." + } + }, + "plugin.nexus-repository-manager": { + "fr": { + "table.title": "Nexus Repository Manager: {{title}}", + "table.searchPlaceholder": "Filtre", + "table.labelRowsSelect": "Lignes", + "table.columns.version": "Version", + "table.columns.artifact": "Artifact", + "table.columns.repositoryType": "Type de référentiel", + "table.columns.checksum": "Checksum", + "table.columns.modified": "Modifié", + "table.columns.size": "Taille", + "table.emptyValue": "N/A", + "table.emptyContent.message": "Aucune donnée n’a été ajouté pour l’instant,", + "table.emptyContent.linkText": "apprenez comment ajouter des données.", + "entityContent.title": "Build Artifacts" + } + }, + "plugin.npm": { + "fr": { + "infoCard.title": "Paquet NPM {{packageName}}", + "infoCard.latestVersion": "Dernière version", + "infoCard.publishedAt": "Publié à", + "infoCard.license": "Licence", + "infoCard.description": "Description", + "infoCard.keywords": "Mots-clés", + "infoCard.registryName": "Nom du registre", + "infoCard.npmRepository": "référentiel NPM", + "infoCard.codeRepository": "Dépôt de code", + "infoCard.issueTracker": "Suivi des problèmes", + "infoCard.homepage": "Page d'accueil", + "releaseOverviewCard.title": "Balises actuelles", + "releaseOverviewCard.toolbar.searchPlaceholder": "Recherche", + "releaseOverviewCard.columns.tag": "Balise", + "releaseOverviewCard.columns.version": "Version", + "releaseOverviewCard.columns.published": "Publié", + "releaseTableCard.title": "Balises actuelles", + "releaseTableCard.toolbar.searchPlaceholder": "Recherche", + "releaseTableCard.columns.tag": "Balise", + "releaseTableCard.columns.version": "Version", + "releaseTableCard.columns.published": "Publié", + "versionHistoryCard.title": "Historique des versions", + "versionHistoryCard.toolbar.searchPlaceholder": "Recherche", + "versionHistoryCard.columns.version": "Version", + "versionHistoryCard.columns.published": "Publié" } }, "plugin.rbac": { @@ -274,11 +283,11 @@ "roleForm.review.reviewAndSave": "Révisez et enregistrez", "roleForm.review.nameDescriptionOwner": "Nom, description et propriétaire du rôle", "roleForm.steps.next": "Suivant", - "roleForm.steps.back": "Arrière", + "roleForm.steps.back": "Retour", "roleForm.steps.cancel": "Annuler", "roleForm.steps.reset": "Réinitialiser", "roleForm.steps.create": "Créer", - "roleForm.steps.update": "Mise à jour", + "roleForm.steps.save": "Sauvegarder", "roleForm.fields.name.label": "Nom", "roleForm.fields.name.helperText": "Entrez le nom du rôle", "roleForm.fields.description.label": "Description", @@ -301,9 +310,9 @@ "dialog.discard": "Ignorer", "dialog.cancel": "Annuler", "conditionalAccess.condition": "Condition", - "conditionalAccess.allOf": "Tout de", - "conditionalAccess.anyOf": "N'importe lequel", - "conditionalAccess.not": "Pas", + "conditionalAccess.allOf": "AllOf", + "conditionalAccess.anyOf": "AnyOf", + "conditionalAccess.not": "Aucun", "conditionalAccess.addNestedCondition": "Ajouter une condition imbriquée", "conditionalAccess.addRule": "Ajouter une règle", "conditionalAccess.nestedConditionTooltip": "Les conditions imbriquées sont des **règles à 1 couche dans une condition principale**. Il vous permet d'autoriser un accès approprié en utilisant des autorisations détaillées basées sur diverses conditions. Vous pouvez ajouter plusieurs conditions imbriquées.", @@ -315,7 +324,7 @@ "permissionPolicies.advancedPermissionsTooltip": "Utilisez des autorisations personnalisées avancées pour autoriser l’accès à des parties spécifiques du type de ressource sélectionné.", "permissionPolicies.pluginsSelected": "{{count}} plugins", "permissionPolicies.noPluginsSelected": "Aucun plugin sélectionné", - "permissionPolicies.search": "Rechercher", + "permissionPolicies.search": "Recherche", "permissionPolicies.noRecordsToDisplay": "Aucun enregistrement à afficher", "permissionPolicies.selectedPluginsAppearHere": "Les plugins sélectionnés apparaissent ici.", "permissionPolicies.selectPlugins": "Sélectionner les plugins", @@ -333,7 +342,7 @@ "common.csvFilename": "export-de-données.csv", "common.noMembers": "Aucun membre", "common.groups": "groupes", - "common.group": "Groupe", + "common.group": "groupe", "common.users": "utilisateurs", "common.user": "utilisateur", "common.use": "Utiliser", @@ -344,56 +353,389 @@ "common.selectUsersAndGroups": "Sélectionner les utilisateurs et les groupes", "common.clearSearch": "supprimer la recherche", "common.closeDrawer": "Fermez le tiroir", - "common.remove": "Retirer", + "common.remove": "Supprimer", "common.addRule": "Ajouter une règle", "common.selectRule": "Sélectionnez une règle", "common.rule": "Règle", "common.removeNestedCondition": "Supprimer la condition imbriquée", - "common.overview": "Aperçu", + "common.overview": "Vue d’ensemble", "common.about": "À propos", "common.description": "Description", "common.modifiedBy": "Modifié par", "common.lastModified": "Dernière modification", "common.owner": "Propriétaire", - "common.noUsersAndGroupsSelected": "Aucun utilisateur ni groupe sélectionné", - "common.selectedUsersAndGroupsAppearHere": "Les utilisateurs et groupes sélectionnés apparaissent ici.", - "common.name": "Nom", - "common.type": "Taper", - "common.members": "Membres", - "common.actions": "Actes", - "common.removeMember": "Supprimer le membre", - "common.delete": "Supprimer", - "common.deleteRole": "Supprimer le rôle", - "common.update": "Mise à jour", - "common.editRole": "Modifier le rôle", - "common.checkingPermissions": "Vérification des autorisations…", - "common.unauthorizedTo": "Non autorisé à {{action}}", - "common.performThisAction": "effectuer cette action", - "common.unableToCreatePermissionPolicies": "Impossible de créer les politiques d'autorisation.", - "common.unableToDeletePermissionPolicies": "Impossible de supprimer les politiques d'autorisation.", - "common.unableToRemoveConditions": "Impossible de supprimer les conditions du rôle.", - "common.unableToUpdateConditions": "Impossible de mettre à jour les conditions.", - "common.unableToAddConditions": "Impossible d'ajouter des conditions au rôle.", - "common.roleActionSuccessfully": "Rôle {{roleName}} {{action}} avec succès", - "common.unableToFetchRole": "Impossible de récupérer le rôle : {{error}}", - "common.unableToFetchMembers": "Impossible de récupérer les membres : {{error}}", - "common.roleAction": "rôle {{action}}", - "common.membersCount": "{{count}} membres", - "common.parentGroupCount": "{{count}} groupe parent", - "common.childGroupsCount": "{{count}} groupes enfants", - "common.searchAndSelectUsersGroups": "Recherchez et sélectionnez les utilisateurs et les groupes à ajouter. Les utilisateurs et groupes sélectionnés apparaîtront dans le tableau ci-dessous.", - "common.noUsersAndGroupsFound": "Aucun utilisateur ni groupe trouvé.", - "common.errorFetchingUserGroups": "Erreur lors de la récupération de l'utilisateur et des groupes : {{error}}", - "common.nameRequired": "Le nom est obligatoire", - "common.noMemberSelected": "Aucun membre sélectionné", - "common.noPluginSelected": "Aucun plugin sélectionné", - "common.pluginRequired": "Le plugin est requis", - "common.permissionRequired": "Une autorisation est requise", - "common.editCell": "Modifier", - "common.selectCell": "Sélectionner...", - "common.expandRow": "développer la ligne", - "common.configureAccessFor": "Configurer l'accès pour le", - "common.defaultResourceTypeVisible": "Par défaut, le type de ressource sélectionné est visible par tous les utilisateurs ajoutés. Si vous souhaitez restreindre ou accorder une autorisation à des règles de plugin spécifiques, sélectionnez-les et ajoutez les paramètres." + "common.noUsersAndGroupsSelected": "Aucun utilisateur ni groupe sélectionné", + "common.selectedUsersAndGroupsAppearHere": "Les utilisateurs et groupes sélectionnés apparaissent ici.", + "common.name": "Nom", + "common.type": "Type", + "common.members": "Membres", + "common.actions": "Actes", + "common.removeMember": "Supprimer le membre", + "common.delete": "Supprimer", + "common.deleteRole": "Supprimer le rôle", + "common.update": "Mise à jour", + "common.editRole": "Modifier le rôle", + "common.checkingPermissions": "Vérification des autorisations…", + "common.unauthorizedTo": "Non autorisé à {{action}}", + "common.performThisAction": "effectuer cette action", + "common.unableToCreatePermissionPolicies": "Impossible de créer les politiques d'autorisation.", + "common.unableToDeletePermissionPolicies": "Impossible de supprimer les politiques d'autorisation.", + "common.unableToRemoveConditions": "Impossible de supprimer les conditions du rôle.", + "common.unableToUpdateConditions": "Impossible de mettre à jour les conditions.", + "common.unableToAddConditions": "Impossible d'ajouter des conditions au rôle.", + "common.roleActionSuccessfully": "Rôle {{roleName}} {{action}} avec succès", + "common.unableToFetchRole": "Impossible de récupérer le rôle : {{error}}", + "common.unableToFetchMembers": "Impossible de récupérer les membres : {{error}}", + "common.roleAction": "rôle {{action}}", + "common.membersCount": "{{count}} membres", + "common.parentGroupCount": "{{count}} groupe parent", + "common.childGroupsCount": "{{count}} groupes enfants", + "common.searchAndSelectUsersGroups": "Recherchez et sélectionnez les utilisateurs et les groupes à ajouter. Les utilisateurs et groupes sélectionnés apparaîtront dans le tableau ci-dessous.", + "common.noUsersAndGroupsFound": "Aucun utilisateur ni groupe trouvé.", + "common.errorFetchingUserGroups": "Erreur lors de la récupération de l'utilisateur et des groupes : {{error}}", + "common.nameRequired": "Le nom est obligatoire", + "common.noMemberSelected": "Aucun membre sélectionné", + "common.noPluginSelected": "Aucun plugin sélectionné", + "common.pluginRequired": "Le plugin est requis", + "common.permissionRequired": "Une autorisation est requise", + "common.editCell": "Modifier...", + "common.selectCell": "Sélectionner...", + "common.expandRow": "développer la ligne", + "common.configureAccessFor": "Configurer l'accès pour le", + "common.defaultResourceTypeVisible": "Par défaut, le type de ressource sélectionné est visible par tous les utilisateurs ajoutés. Si vous souhaitez restreindre ou accorder une autorisation à des règles de plugin spécifiques, sélectionnez-les et ajoutez les paramètres.", + "roleForm.steps.update": "Mise à jour" + } + }, + "plugin.argocd": { + "fr": { + "appStatus.appHealthStatus.Healthy": "En bon fonctionnement", + "appStatus.appHealthStatus.Suspended": "Suspendu", + "appStatus.appHealthStatus.Degraded": "Dégradé", + "appStatus.appHealthStatus.Progressing": "Progression", + "appStatus.appHealthStatus.Missing": "Manquant", + "appStatus.appHealthStatus.Unknown": "Inconnu", + "appStatus.appSyncStatus.Unknown": "Inconnu", + "appStatus.appSyncStatus.Synced": "Synchronisé", + "appStatus.appSyncStatus.OutOfSync": "Désynchronisation", + "common.appServer.title": "Il s'agit du cluster local sur lequel Argo CD est installé.", + "common.permissionAlert.alertTitle": "Autorisation requise", + "common.permissionAlert.alertText": "Pour afficher le plugin argocd, contactez votre administrateur pour qu'il vous donne l'autorisation argocd.view.read.", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.name": "Nom", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.kind": "Type", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.createdAt": "Créé à", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.syncStatus": "Statut de synchronisation", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.healthStatus": "État de fonctionnement", + "deploymentLifecycle.sidebar.resources.resourcesTable.ariaLabelledBy": "Ressources", + "deploymentLifecycle.sidebar.resources.resourcesTable.noneFound": "Aucune ressource trouvée", + "deploymentLifecycle.sidebar.resources.resourcesTableRow.ariaLabel": "développer la ligne", + "deploymentLifecycle.sidebar.resources.resource.deploymentHistory.bodyText": "Historique de déploiement", + "deploymentLifecycle.sidebar.resources.resource.deploymentHistoryCommit.deployedText": "déployé", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.title": "Images", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.tooltipText": "Voici les images de tous les déploiements dans l'application ArgoCD.", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.namespace": "Espace de noms", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.commit": "Valider", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.namespace": "Espace de noms", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.strategy": "Stratégie", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.status": "Statut", + "deploymentLifecycle.sidebar.resources.resource.resourceMetadata.namespace": "Espace de noms", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.iconButton.ariaLabel": "davantage", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.refresh": "Rafraîchir", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.sync": "Synchroniser", + "deploymentLifecycle.sidebar.resources.resourcesSearchBar.placeholder": "Recherche par type", + "deploymentLifecycle.sidebar.resources.resourcesSearchBar.ariaLabel": "supprimer la recherche", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SearchByName": "Nom", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Kind": "Type", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SyncStatus": "Statut de synchronisation", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.HealthStatus": "État de fonctionnement", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Unset": "Filtrer par", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.searchByNameInput": "Rechercher par nom", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusInput": "Filtrer par état de fonctionnement", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusInput": "Filtrer par statut de synchronisation", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.kindInput": "Filtrer par type", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.resourceFilters": "Filtres de ressources", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.syncStatus": "Statut de synchronisation", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.kind": "Type", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Healthy": "En bon fonctionnement", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Suspended": "Suspendu", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Degraded": "Dégradé", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Progressing": "Progression", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Missing": "Manquant", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Unknown": "Inconnu", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Synced": "Synchronisé", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Unknown": "Inconnu", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.OutOfSync": "Désynchronisation", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.textPrimary": "Exécutions d'analyse", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.name": "Nom:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.createdAt": "Créé à :", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.status": "Statut:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.chipLabel": "Analyse", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.revision": "Révision", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.stable": "Stable", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.active": "Actif", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.preview": "Aperçu", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revision": "Révision", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.stable": "Stable", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.canary": "Canary", + "deploymentLifecycle.sidebar.rollouts.revisions.revisionImage.textPrimary": "Trafic vers l'image", + "deploymentLifecycle.sidebar.rollouts.rollOut.title": "Révisions", + "deploymentLifecycle.deploymentLifecycle.title": "Cycle de vie du déploiement", + "deploymentLifecycle.deploymentLifecycle.subtitle": "Examiner les composants/systèmes déployés dans l'espace de noms à l'aide du plugin ArgoCD", + "deploymentLifecycle.deploymentLifecycleCard.instance": "Exemple", + "deploymentLifecycle.deploymentLifecycleCard.server": "Serveur", + "deploymentLifecycle.deploymentLifecycleCard.namespace": "Espace de noms", + "deploymentLifecycle.deploymentLifecycleCard.commit": "Valider", + "deploymentLifecycle.deploymentLifecycleCard.tooltipText": "Le commit SHA indiqué ci-dessous est le dernier commit de la première source d'application définie.", + "deploymentLifecycle.deploymentLifecycleCard.resources": "Ressources", + "deploymentLifecycle.deploymentLifecycleCard.resourcesDeployed": "ressources déployées", + "deploymentLifecycle.deploymentLifecycleDrawer.iconButtonTitle": "Fermez le tiroir", + "deploymentLifecycle.deploymentLifecycleDrawer.instance": "Exemple", + "deploymentLifecycle.deploymentLifecycleDrawer.cluster": "Cluster", + "deploymentLifecycle.deploymentLifecycleDrawer.namespace": "Espace de noms", + "deploymentLifecycle.deploymentLifecycleDrawer.commit": "Valider", + "deploymentLifecycle.deploymentLifecycleDrawer.revision": "Révision", + "deploymentLifecycle.deploymentLifecycleDrawer.resources": "Ressources", + "deploymentLifecycle.deploymentLifecycleDrawer.instanceDefaultValue": "défaut", + "deploymentSummary.deploymentSummary.tableTitle": "Résumé du déploiement", + "deploymentSummary.deploymentSummary.columns.instance": "Exemple", + "deploymentSummary.deploymentSummary.columns.server": "Serveur", + "deploymentSummary.deploymentSummary.columns.revision": "Révision", + "deploymentSummary.deploymentSummary.columns.lastDeployed": "Dernier déploiement", + "deploymentSummary.deploymentSummary.columns.syncStatus": "Statut de synchronisation", + "deploymentSummary.deploymentSummary.columns.healthStatus": "État de fonctionnement" + } + }, + "plugin.sonarqube": { + "fr": { + "title": "Tableau de bord SonarQube", + "sonarQubeCard.title": "Qualité du code", + "sonarQubeCard.deepLinkTitle": "Voir davantage", + "sonarQubeCard.emptyState.title": "Aucune information à afficher", + "sonarQubeCard.emptyState.description": "Il n'y a pas de projet SonarQube avec la clé '{{ projectTitle }}', vérifiez que le projet existe et les autorisations.", + "sonarQubeCard.noSonarQubeError.hasAnnotation": "Il n'y a pas de projet SonarQube avec la clé « {{project}} »", + "sonarQubeCard.noSonarQubeError.noAnnotation": "Aucune annotation SonarQube trouvée", + "sonarQubeCard.bugReportRatingCardTitle": "Bugs", + "sonarQubeCard.vulnerabilitiesRatingCardTitle": "Vulnérabilités", + "sonarQubeCard.codeSmellsRatingCardTitle": "Code Odeurs", + "sonarQubeCard.hotspotsReviewedTitle": "Points d'accès examinés", + "sonarQubeCard.coverageRatingCardTitle": "Couverture", + "sonarQubeCard.duplicationsRatingCard": "Duplications", + "sonarQubeCard.qualityBadgeLabel.notComputed": "Non calculé", + "sonarQubeCard.qualityBadgeLabel.gatePassed": "Porte franchie", + "sonarQubeCard.qualityBadgeLabel.gateFailed": "Porte défectueuse", + "sonarQubeCard.qualityBadgeTooltip": "Afficher le tableau de bord SonarQube", + "sonarQubeTable.columnsTitle.name": "Nom", + "sonarQubeTable.columnsTitle.qualityGate": "Porte de la qualité", + "sonarQubeTable.columnsTitle.lastAnalysis": "Dernière analyse", + "sonarQubeTable.columnsTitle.bugs": "Bugs", + "sonarQubeTable.columnsTitle.vulnerabilities": "Vulnérabilités", + "sonarQubeTable.columnsTitle.codeSmells": "Code Odeurs", + "sonarQubeTable.columnsTitle.hotspotsReviewed": "Points d'accès examinés", + "sonarQubeTable.columnsTitle.coverage": "Couverture", + "sonarQubeTable.columnsTitle.duplications": "Duplications" + } + }, + "plugin.tekton": { + "fr": { + "errorPanel.title": "Un problème est survenu lors de la récupération des objets Kubernetes", + "errorPanel.description": "Un problème est survenu lors de la récupération de certaines ressources Kubernetes pour l'entité : {{entityName}}. Cela pourrait signifier que la carte de rapport d’erreur n’est pas complètement précise.", + "permissionAlert.title": "Autorisation requise", + "permissionAlert.description": "Pour afficher les exécutions de pipelines Tekton, contactez votre administrateur pour qu'il vous accorde les autorisations suivantes : {{permissions}}.", + "statusSelector.label": "Statut", + "clusterSelector.label": "Cluster", + "tableExpandCollapse.collapseAll": "Tout Réduire", + "tableExpandCollapse.expandAll": "Tout Développer", + "pipelineVisualization.emptyState.description": "Aucune exécution de pipeline à visualiser", + "pipelineVisualization.noTasksDescription": "Cette exécution de pipeline n'a aucune tâche à visualiser", + "pipelineVisualization.stepList.finallyTaskTitle": "Enfin la tâche", + "pipelineRunList.title": "Pipelines", + "pipelineRunList.noPipelineRuns": "Aucune exécution de pipeline trouvée", + "pipelineRunList.searchBarPlaceholder": "Rechercher", + "pipelineRunList.rowActions.viewParamsAndResults": "Afficher les Paramètres et les Résultats", + "pipelineRunList.rowActions.viewLogs": "Afficher les journaux", + "pipelineRunList.rowActions.unauthorizedViewLogs": "Non autorisé à consulter les journaux", + "pipelineRunList.rowActions.viewSBOM": "Voir SBOM", + "pipelineRunList.rowActions.SBOMNotApplicable": "La vue SBOM n'est pas applicable pour ce PipelineRun", + "pipelineRunList.rowActions.viewOutput": "Afficher la sortie", + "pipelineRunList.rowActions.outputNotApplicable": "La vue de sortie n'est pas applicable pour ce PipelineRun", + "pipelineRunList.vulnerabilitySeverityTitle.critical": "Critique", + "pipelineRunList.vulnerabilitySeverityTitle.high": "Haut", + "pipelineRunList.vulnerabilitySeverityTitle.medium": "Moyen", + "pipelineRunList.vulnerabilitySeverityTitle.low": "Faible", + "pipelineRunList.tableHeaderTitle.name": "NOM", + "pipelineRunList.tableHeaderTitle.vulnerabilities": "VULNÉRABILITÉS", + "pipelineRunList.tableHeaderTitle.status": "STATUT", + "pipelineRunList.tableHeaderTitle.taskStatus": "STATUT DE LA TÂCHE", + "pipelineRunList.tableHeaderTitle.startTime": "COMMENCÉ", + "pipelineRunList.tableHeaderTitle.duration": "DURÉE", + "pipelineRunList.tableHeaderTitle.actions": "ACTES", + "pipelineRunList.tablePagination.rowsPerPageOptionLabel": "{{num}} lignes", + "pipelineRunLogs.title": "Journaux d'exécution de pipeline", + "pipelineRunLogs.noLogs": "Aucun journal trouvé", + "pipelineRunLogs.downloader.downloadTaskLogs": "Télécharger", + "pipelineRunLogs.downloader.downloadPipelineRunLogs": "Télécharger tous les journaux de tâches", + "pipelineRunLogs.podLogsDownloadLink.title": "Télécharger", + "pipelineRunLogs.podLogsDownloadLink.downloading": "téléchargement des journaux", + "pipelineRunLogs.taskStatusStepper.skipped": "Ignoré", + "pipelineRunOutput.title": "Sortie de PipelineRun", + "pipelineRunOutput.noOutput": "Aucune sortie", + "pipelineRunStatus.All": "Tous", + "pipelineRunStatus.Cancelling": "Annulation", + "pipelineRunStatus.Succeeded": "Réussi", + "pipelineRunStatus.Failed": "Échoué", + "pipelineRunStatus.Running": "En cours d'exécution", + "pipelineRunStatus.In Progress": "En cours", + "pipelineRunStatus.FailedToStart": "Échec du démarrage", + "pipelineRunStatus.PipelineNotStarted": "PipelineNotStarted", + "pipelineRunStatus.Skipped": "Ignoré", + "pipelineRunStatus.Cancelled": "Annulé", + "pipelineRunStatus.Pending": "En attente", + "pipelineRunStatus.Idle": "Inactif", + "pipelineRunStatus.Other": "Autre", + "pipelineRunDuration.lessThanSec": "moins d'une seconde", + "pipelineRunDuration.hour_one": "{{count}} heure", + "pipelineRunDuration.hour_other": "{{count}} heures", + "pipelineRunDuration.minute_one": "{{count}} minute", + "pipelineRunDuration.minute_other": "{{count}} minutes", + "pipelineRunDuration.second_one": "{{count}} seconde", + "pipelineRunDuration.second_other": "{{count}} secondes", + "pipelineRunParamsAndResults.title": "PipelineRun Paramètres et Résultats", + "pipelineRunParamsAndResults.noParams": "Aucun paramètre trouvé", + "pipelineRunParamsAndResults.noResults": "Aucun résultat trouvé", + "pipelineRunParamsAndResults.params": "Paramètres", + "pipelineRunParamsAndResults.results": "Résultats", + "pipelineRunParamsAndResults.outputTableColumn.name": "Nom", + "pipelineRunParamsAndResults.outputTableColumn.value": "Valeur" + } + }, + "plugin.topology": { + "fr": { + "page.title": "Topologie", + "page.subtitle": "Visualisation de la topologie de la charge de travail Kubernetes", + "toolbar.cluster": "Cluster", + "toolbar.selectCluster": "Sélectionner un cluster", + "toolbar.displayOptions": "Options d'affichage", + "toolbar.currentDisplayOptions": "Options d'affichage actuelles", + "emptyState.noResourcesFound": "Aucune ressource trouvée", + "emptyState.noResourcesDescription": "Aucune ressource Kubernetes n’a été trouvée dans le cluster sélectionné.", + "permissions.missingPermission": "Autorisation manquante", + "permissions.missingPermissionDescription": "Pour afficher la topologie, votre administrateur doit vous accorder {{permissions}} {{permissionText}}.", + "permissions.missingPermissionDescription_plural": "Pour afficher la topologie, votre administrateur doit vous accorder {{permissions}} {{permissionText}}.", + "permissions.permission": "autorisation", + "permissions.permissions": "autorisations", + "permissions.goBack": "Retour", + "sideBar.details": "Détails", + "sideBar.resources": "Ressources", + "status.running": "En cours d'exécution", + "status.pending": "En attente", + "status.succeeded": "Réussi", + "status.failed": "Échoué", + "status.unknown": "Inconnu", + "status.terminating": "Terminer", + "status.crashLoopBackOff": "CrashLoopBackOff", + "status.error": "Erreur", + "status.warning": "Attention", + "status.ready": "Prêt", + "status.notReady": "Pas prêt", + "status.active": "Actif", + "status.inactive": "Inactif", + "status.updating": "Mise à jour", + "status.evicted": "Expulsé", + "status.cancelled": "Annulé", + "details.name": "Nom", + "details.namespace": "Espace de noms", + "details.labels": "Étiquettes", + "details.annotations": "Annotations", + "details.createdAt": "Créé", + "details.age": "Âge", + "details.replicas": "Répliques", + "details.availableReplicas": "Répliques disponibles", + "details.readyReplicas": "Répliques prêtes", + "details.updatedReplicas": "Répliques mises à jour", + "details.selector": "Sélecteur", + "details.strategy": "Stratégie", + "details.image": "Image", + "details.ports": "Ports", + "details.volumes": "Volumes", + "details.volumeMounts": "Montages de volume", + "details.environmentVariables": "Variables d'environnement", + "details.resourceRequirements": "Besoins en ressources", + "details.limits": "Limites", + "details.requests": "Demandes", + "details.cpu": "CPU", + "details.memory": "Mémoire", + "details.storage": "Stockage", + "details.noLabels": "Aucune étiquette", + "details.noAnnotations": "Aucune annotation", + "details.noOwner": "Pas de propriétaire", + "details.notAvailable": "Non disponible", + "details.notConfigured": "Non configuré", + "details.updateStrategy": "Mettre à jour la stratégie", + "details.maxUnavailable": "Max indisponible", + "details.maxSurge": "Surtension maximale", + "details.progressDeadlineSeconds": "Délai de progression en secondes", + "details.minReadySeconds": "Minutes de disponibilité en secondes", + "details.desiredCompletions": "Complétions souhaitées", + "details.parallelism": "Parallélisme", + "details.activeDeadlineSeconds": "Secondes du délai actif", + "details.currentCount": "Nombre actuel", + "details.desiredCount": "Nombre souhaité", + "details.schedule": "Calendrier", + "details.concurrencyPolicy": "Politique de concurrence", + "details.startingDeadlineSeconds": "Délai de départ secondes", + "details.lastScheduleTime": "Dernière heure prévue", + "details.maxSurgeDescription": "{{maxSurge}} supérieur à {{replicas}} pod", + "details.maxUnavailableDescription": "{{maxUnavailable}} de {{replicas}} pod", + "logs.download": "Télécharger", + "logs.noLogsFound": "Aucun journal trouvé", + "logs.selectContainer": "Sélectionner le conteneur", + "logs.container": "Récipient", + "logs.pod": "Pod", + "logs.showPrevious": "Afficher le précédent", + "logs.follow": "Suivre", + "logs.refresh": "Rafraîchir", + "logs.timestamps": "Horodatages", + "logs.wrapLines": "Wrap Lines", + "logs.clearLogs": "Effacer les journaux", + "logs.logLevel": "Niveau de journalisation", + "logs.search": "Recherche", + "logs.noMatchingLogs": "Aucun journal correspondant trouvé", + "resources.noResourcesFound": "Aucun {{resourceType}} trouvé pour cette ressource.", + "resources.showingLatest": "Affichage des derniers {{count}} {{resourceType}}", + "time.seconds": "secondes", + "time.minutes": "minutes", + "time.hours": "heures", + "time.days": "jours", + "events.type": "Type", + "events.reason": "Raison", + "events.message": "Message", + "events.source": "Source", + "events.firstSeen": "Vu pour la première fois", + "events.lastSeen": "Vu pour la dernière fois", + "events.count": "Nombre", + "events.noEventsFound": "Aucun événement trouvé", + "filters.showLabels": "Afficher les étiquettes", + "filters.showPodCount": "Afficher le nombre de pods", + "filters.expandApplicationGroups": "Développer les groupes d'applications", + "filters.showConnectors": "Afficher les connecteurs", + "common.status": "Statut", + "common.owner": "Propriétaire", + "common.location": "Emplacement", + "common.viewLogs": "Afficher les journaux", + "bootOrder.summary": "Résumé de l'ordre de démarrage", + "bootOrder.emptySummary": "Aucun ordre de démarrage configuré", + "bootOrder.disk": "Disque", + "bootOrder.network": "Réseau", + "bootOrder.cdrom": "CD-ROM", + "vm.status.starting": "Départ", + "vm.status.stopping": "Arrêt", + "vm.status.stopped": "Arrêté", + "vm.status.paused": "En pause", + "vm.status.migrating": "Migration", + "vm.status.provisioning": "Provisionnement", + "vm.status.errorUnschedulable": "Erreur non programmable", + "vm.status.errorImagePull": "Extraction d'image d'erreur", + "vm.status.imageNotReady": "Image Non Prête", + "vm.status.waitingForVolumeBinding": "En attente de liaison de volume" } }, "plugin.npm.translation-ref": { @@ -425,7 +767,7 @@ "versionHistoryCard.columns.published": "Publié" } }, - "announcements": { + "plugin.announcements": { "fr": { "announcementForm.title": "Titre", "announcementForm.excerpt": "Extrait", @@ -560,124 +902,5 @@ "admin.tagsContent.table.noTagsFound": "Aucune balise trouvée.", "admin.tagsContent.errors.alreadyExists": "Une balise avec ce nom existe déjà." } - }, - "sonarqube": { - "fr": { - "title": "Tableau de bord SonarQube", - "sonarQubeCard.title": "Qualité du code", - "sonarQubeCard.deepLinkTitle": "Voir plus", - "sonarQubeCard.emptyState.title": "Aucune information à afficher", - "sonarQubeCard.emptyState.description": "Il n'y a pas de projet SonarQube avec la clé '{{ projectTitle }}', vérifiez que le projet existe et les autorisations.", - "sonarQubeCard.noSonarQubeError.hasAnnotation": "Il n'y a pas de projet SonarQube avec la clé « {{project}} »", - "sonarQubeCard.noSonarQubeError.noAnnotation": "Aucune annotation SonarQube trouvée", - "sonarQubeCard.bugReportRatingCardTitle": "Bugs", - "sonarQubeCard.vulnerabilitiesRatingCardTitle": "Vulnérabilités", - "sonarQubeCard.codeSmellsRatingCardTitle": "Code Odeurs", - "sonarQubeCard.hotspotsReviewedTitle": "Points d'accès examinés", - "sonarQubeCard.coverageRatingCardTitle": "Couverture", - "sonarQubeCard.duplicationsRatingCard": "Duplications", - "sonarQubeCard.qualityBadgeLabel.notComputed": "Non calculé", - "sonarQubeCard.qualityBadgeLabel.gatePassed": "Porte franchie", - "sonarQubeCard.qualityBadgeLabel.gateFailed": "Porte défectueuse", - "sonarQubeCard.qualityBadgeTooltip": "Afficher le tableau de bord SonarQube", - "sonarQubeTable.columnsTitle.name": "Nom", - "sonarQubeTable.columnsTitle.qualityGate": "Porte de la qualité", - "sonarQubeTable.columnsTitle.lastAnalysis": "Dernière analyse", - "sonarQubeTable.columnsTitle.bugs": "Bugs", - "sonarQubeTable.columnsTitle.vulnerabilities": "Vulnérabilités", - "sonarQubeTable.columnsTitle.codeSmells": "Code Odeurs", - "sonarQubeTable.columnsTitle.hotspotsReviewed": "Points d'accès examinés", - "sonarQubeTable.columnsTitle.coverage": "Couverture", - "sonarQubeTable.columnsTitle.duplications": "Duplications" - } - }, - "tekton": { - "fr": { - "errorPanel.title": "Un problème est survenu lors de la récupération des objets Kubernetes", - "errorPanel.description": "Un problème est survenu lors de la récupération de certaines ressources Kubernetes pour l'entité : {{entityName}}. Cela pourrait signifier que la carte de rapport d’erreur n’est pas complètement précise.", - "permissionAlert.title": "Autorisation requise", - "permissionAlert.description": "Pour afficher les exécutions de pipelines Tekton, contactez votre administrateur pour qu'il vous accorde les autorisations suivantes : {{permissions}}.", - "statusSelector.label": "Statut", - "tableExpandCollapse.collapseAll": "Réduire tout", - "tableExpandCollapse.expandAll": "Développer tout", - "pipelineVisualization.emptyState.description": "Aucune exécution de pipeline à visualiser", - "pipelineVisualization.noTasksDescription": "Cette exécution de pipeline n'a aucune tâche à visualiser", - "pipelineVisualization.stepList.finallyTaskTitle": "Enfin la tâche", - "pipelineRunList.title": "Pipelines", - "pipelineRunList.noPipelineRuns": "Aucune exécution de pipeline trouvée", - "pipelineRunList.searchBarPlaceholder": "Rechercher", - "pipelineRunList.rowActions.viewLogs": "Afficher les journaux", - "pipelineRunList.rowActions.unauthorizedViewLogs": "Non autorisé à consulter les journaux", - "pipelineRunList.rowActions.viewSBOM": "Voir SBOM", - "pipelineRunList.rowActions.SBOMNotApplicable": "La vue SBOM n'est pas applicable pour ce PipelineRun", - "pipelineRunList.rowActions.viewOutput": "Afficher la sortie", - "pipelineRunList.rowActions.outputNotApplicable": "La vue de sortie n'est pas applicable pour ce PipelineRun", - "pipelineRunList.vulnerabilitySeverityTitle.critical": "Critique", - "pipelineRunList.vulnerabilitySeverityTitle.high": "Haut", - "pipelineRunList.vulnerabilitySeverityTitle.medium": "Moyen", - "pipelineRunList.vulnerabilitySeverityTitle.low": "Faible", - "pipelineRunList.tableHeaderTitle.name": "NOM", - "pipelineRunList.tableHeaderTitle.vulnerabilities": "VULNÉRABILITÉS", - "pipelineRunList.tableHeaderTitle.status": "STATUT", - "pipelineRunList.tableHeaderTitle.taskStatus": "STATUT DE LA TÂCHE", - "pipelineRunList.tableHeaderTitle.startTime": "COMMENCÉ", - "pipelineRunList.tableHeaderTitle.duration": "DURÉE", - "pipelineRunList.tableHeaderTitle.actions": "ACTES", - "pipelineRunLogs.title": "Journaux d'exécution de pipeline", - "pipelineRunLogs.noLogs": "Aucun journal trouvé", - "pipelineRunLogs.downloader.downloadTaskLogs": "Télécharger", - "pipelineRunLogs.downloader.downloadPipelineRunLogs": "Télécharger tous les journaux de tâches", - "pipelineRunLogs.podLogsDownloadLink.title": "Télécharger", - "pipelineRunLogs.podLogsDownloadLink.downloading": "téléchargement des journaux", - "pipelineRunLogs.taskStatusStepper.skipped": "Ignoré", - "pipelineRunOutput.title": "Sortie de PipelineRun", - "pipelineRunOutput.noOutput": "Aucune sortie", - "pipelineRunStatus.All": "Tous", - "pipelineRunStatus.Cancelling": "Annulation", - "pipelineRunStatus.Succeeded": "Réussi", - "pipelineRunStatus.Failed": "Échoué", - "pipelineRunStatus.Running": "En cours d'exécution", - "pipelineRunStatus.In Progress": "En cours", - "pipelineRunStatus.FailedToStart": "Échec du démarrage", - "pipelineRunStatus.PipelineNotStarted": "PipelineNotStarted", - "pipelineRunStatus.Skipped": "Ignoré", - "pipelineRunStatus.Cancelled": "Annulé", - "pipelineRunStatus.Pending": "En attente", - "pipelineRunStatus.Idle": "Inactif", - "pipelineRunStatus.Other": "Autre", - "pipelineRunDuration.lessThanSec": "moins d'une seconde", - "pipelineRunDuration.hour_one": "{{count}} heure", - "pipelineRunDuration.hour_other": "{{count}} heures", - "pipelineRunDuration.minute_one": "{{count}} minute", - "pipelineRunDuration.minute_other": "{{count}} minutes", - "pipelineRunDuration.second_one": "{{count}} seconde", - "pipelineRunDuration.second_other": "{{count}} secondes" - } - }, - "linguist": { - "fr": { - "entityCard.title": "Langues", - "entityCard.noData": "Il n'y a actuellement aucune donnée linguistique pour cette entité." - } - }, - "bookmarks": { - "fr": { - "bookmarkViewer.newTab": "Ouvrir dans un nouvel onglet", - "bookmarkViewer.navButton.next": "Suivant", - "bookmarkViewer.navButton.previous": "Précédent", - "bookmarkViewer.mobileView.toc": "Table des matières", - "bookmarkViewerFrame.devModeWarning": "Vous devrez peut-être recharger la page pour que l'iframe se charge correctement en mode développement", - "entityBookmarksContent.invalid.title": "Format de signets invalide", - "entityBookmarksContent.invalid.description": "Assurez-vous que vos signets sont correctement structurés.", - "entityBookmarksContent.notFound.title": "Aucun signet trouvé", - "entityBookmarksContent.notFound.description": "Ajoutez des signets aux métadonnées de votre entité pour les voir ici." - } - }, - "adr": { - "fr": { - "contentHeaderTitle": "Dossiers de décision d'architecture", - "failedToFetch": "Échec de la récupération des ADR", - "notFound": "Aucun effet indésirable n'a été trouvé" - } } -} +} \ No newline at end of file diff --git a/translations/community-plugins-reference-2025-12-05-it-C.json b/translations/community-plugins-reference-2025-12-05-it-C.json new file mode 100644 index 0000000000..dc9048fee4 --- /dev/null +++ b/translations/community-plugins-reference-2025-12-05-it-C.json @@ -0,0 +1,740 @@ +{ + "plugin.acr": { + "it": { + "page.title": "Repository del Registro Azure Container: {{image}}", + "table.searchPlaceholder": "Filtra", + "table.labelRowsSelect": "Righe", + "table.columns.tag": "Tag", + "table.columns.created": "Creato", + "table.columns.lastModified": "Ultima modifica", + "table.columns.manifest": "Manifest" + } + }, + "plugin.adr": { + "it": { + "contentHeaderTitle": "Architecture Decision Records", + "failedToFetch": "Impossibile recuperare gli ADR", + "notFound": "Nessun ADR trovato" + } + }, + "plugin.announcements-react": { + "it": { + "announcementForm.title": "Titolo", + "announcementForm.excerpt": "Estratto", + "announcementForm.active": "Attivo", + "announcementForm.submit": "Invia", + "announcementForm.editAnnouncement": "Modifica annuncio", + "announcementForm.newAnnouncement": "Nuovo annuncio", + "announcementForm.startAt": "Data di inizio dell'annuncio", + "announcementForm.untilDate": "Data di fine dell'annuncio", + "announcementForm.onBehalfOf": "Per conto di", + "announcementForm.categoryInput.create": "Crea", + "announcementForm.categoryInput.label": "Categoria", + "announcementForm.tagsInput.create": "Crea", + "announcementForm.tagsInput.label": "Tag", + "announcementForm.tagsLabel": "Tag", + "announcementsPage.newAnnouncement": "Nuovo annuncio", + "announcementsPage.genericNew": "Nuovo", + "announcementsPage.card.by": "Di", + "announcementsPage.card.in": "in", + "announcementsPage.card.edit": "Modifica", + "announcementsPage.card.delete": "Elimina", + "announcementsPage.card.occurred": "Avvenuto ", + "announcementsPage.card.scheduled": "Programmato ", + "announcementsPage.card.today": "Oggi", + "announcementsPage.grid.announcementDeleted": "Annuncio eliminato.", + "announcementsPage.contextMenu.admin": "Gestione annunci", + "confirmDeleteDialog.title": "Eliminare?", + "confirmDeleteDialog.cancel": "Cancella", + "confirmDeleteDialog.delete": "Elimina", + "announcementsCard.seeAll": "Vedi tutto", + "announcementsCard.announcements": "Annunci", + "announcementsCard.new": "Nuovo", + "announcementsCard.in": "in", + "announcementsCard.noAnnouncements": "Nessun annuncio presente, desidero", + "announcementsCard.addOne": "aggiungerne uno", + "announcementsCard.occurred": "Avvenuto", + "announcementsCard.scheduled": "Programmato", + "announcementsCard.today": "Oggi", + "announcementSearchResultListItem.published": "Pubblicato", + "announcementSearchResultListItem.announcement": "Annuncio", + "announcementsTimeline.noAnnouncements": "Nessun annuncio", + "announcementsTimeline.error": "Errore", + "categoriesForm.newCategory": "Nuova categoria", + "categoriesForm.editCategory": "Modifica categoria", + "categoriesForm.titleLabel": "Titolo", + "categoriesForm.submit": "Invia", + "categoriesTable.categoryDeleted": "Categoria eliminata.", + "categoriesTable.slug": "Campo dati dinamico", + "categoriesTable.title": "Titolo", + "categoriesTable.actions": "Azioni", + "categoriesTable.addTooltip": "Aggiungi", + "categoriesTable.noCategoriesFound": "Nessuna categoria trovata.", + "categoriesPage.title": "Categorie", + "categoriesPage.subtitle": "Gestire le categorie degli annunci", + "tagsForm.newTag": "Nuova tag", + "tagsForm.editTag": "Modifica tag", + "tagsForm.titleLabel": "Titolo", + "tagsForm.submit": "Invia", + "tagsForm.errors.alreadyExists": "Esiste già una tag con questo nome.", + "tagsForm.errors.invalidTitle": "Il titolo è obbligatorio.", + "tagsForm.errors.tooLong": "Il titolo supera la lunghezza massima.", + "newTagDialog.createdMessage": "Tag creata.", + "newTagDialog.newTag": "Nuova tag", + "newTagDialog.title": "Titolo", + "newTagDialog.cancelButton": "Cancella", + "newTagDialog.createButton": "Crea", + "tagsPage.title": "Tag", + "tagsPage.subtitle": "Gestire le tag degli annunci", + "tagsTable.tagDeleted": "Tag eliminata.", + "tagsTable.slug": "Campo dati dinamico", + "tagsTable.title": "Titolo", + "tagsTable.actions": "Azioni", + "tagsTable.addTooltip": "Aggiungi", + "tagsTable.noTagsFound": "Nessuna tag trovata.", + "createAnnouncementPage.alertMessage": "Annuncio creato.", + "createAnnouncementPage.alertMessageWithNewCategory": "con nuova categoria", + "editAnnouncementPage.updatedMessage": "Annuncio aggiornato.", + "editAnnouncementPage.updatedMessageWithNewCategory": "con nuova categoria", + "editAnnouncementPage.notFoundMessage": "Impossibile trovare l'annuncio", + "editAnnouncementPage.edit": "Modifica", + "newAnnouncementBanner.markAsSeen": "Segna come visto", + "newCategoryDialog.createdMessage": "Categoria creata.", + "newCategoryDialog.newCategory": "Nuova categoria", + "newCategoryDialog.title": "Titolo", + "newCategoryDialog.cancelButton": "Cancella", + "newCategoryDialog.createButton": "Crea", + "admin.adminPortal.announcementsLabels": "Annunci", + "admin.adminPortal.categoriesLabel": "Categorie", + "admin.adminPortal.tagsLabel": "Tag", + "admin.adminPortal.title": "Portale di amministrazione per annunci", + "admin.adminPortal.subtitle": "Gestire annunci e categorie", + "admin.announcementsContent.alertMessage": "Annuncio creato.", + "admin.announcementsContent.alertMessageWithNewCategory": "con nuova categoria", + "admin.announcementsContent.cancelButton": "Cancella", + "admin.announcementsContent.createButton": "Crea annuncio", + "admin.announcementsContent.announcements": "Annunci", + "admin.announcementsContent.noAnnouncementsFound": "Nessun annuncio trovato", + "admin.announcementsContent.table.title": "Titolo", + "admin.announcementsContent.table.body": "Corpo", + "admin.announcementsContent.table.publisher": "Editore", + "admin.announcementsContent.table.onBehalfOf": "Per conto di", + "admin.announcementsContent.table.category": "Categoria", + "admin.announcementsContent.table.tags": "Tag", + "admin.announcementsContent.table.status": "Stato", + "admin.announcementsContent.table.actions": "Azioni", + "admin.announcementsContent.table.active": "Attivo", + "admin.announcementsContent.table.inactive": "Inattivo", + "admin.announcementsContent.table.created_at": "Creato", + "admin.announcementsContent.table.start_at": "Inizia", + "admin.announcementsContent.table.until_date": "Fino", + "admin.categoriesContent.createdMessage": "creato", + "admin.categoriesContent.deletedMessage": "Categoria eliminata.", + "admin.categoriesContent.cancelButton": "Cancella", + "admin.categoriesContent.createButton": "Crea categoria", + "admin.categoriesContent.table.categoryDeleted": "Categoria eliminata.", + "admin.categoriesContent.table.slug": "Campo dati dinamico", + "admin.categoriesContent.table.title": "Titolo", + "admin.categoriesContent.table.actions": "Azioni", + "admin.categoriesContent.table.addTooltip": "Aggiungi", + "admin.categoriesContent.table.noCategoriesFound": "Nessuna categoria trovata.", + "admin.tagsContent.createdMessage": "creato", + "admin.tagsContent.deletedMessage": "Tag eliminata.", + "admin.tagsContent.cancelButton": "Cancella", + "admin.tagsContent.createButton": "Crea tag", + "admin.tagsContent.table.tagDeleted": "Tag eliminata.", + "admin.tagsContent.table.slug": "Campo dati dinamico", + "admin.tagsContent.table.title": "Titolo", + "admin.tagsContent.table.actions": "Azioni", + "admin.tagsContent.table.addTooltip": "Aggiungi", + "admin.tagsContent.table.noTagsFound": "Nessuna tag trovata.", + "admin.tagsContent.errors.alreadyExists": "Esiste già una tag con questo nome." + } + }, + "plugin.bookmarks": { + "it": { + "bookmarkViewer.newTab": "Apri in una nuova scheda", + "bookmarkViewer.navButton.next": "Successivo", + "bookmarkViewer.navButton.previous": "Precedente", + "bookmarkViewer.mobileView.toc": "Sommario", + "bookmarkViewerFrame.devModeWarning": "Potrebbe essere necessario ricaricare la pagina affinché l'iframe venga caricato correttamente in modalità di sviluppo", + "entityBookmarksContent.invalid.title": "Formato segnalibri non valido", + "entityBookmarksContent.invalid.description": "Verificare che i segnalibri siano strutturati correttamente.", + "entityBookmarksContent.notFound.title": "Nessun segnalibro trovato", + "entityBookmarksContent.notFound.description": "Aggiungere segnalibri ai metadati dell'entità per visualizzarli qui." + } + }, + "plugin.flux": { + "it": { + "fluxContentCard.permissionAlert.title": "Autorizzazione richiesta", + "fluxContentCard.permissionAlert.message": "Il contenuto Flux richiede l'autorizzazione sugli oggetti Kubernetes. Contattare l'amministratore del portale per ottenere le autorizzazioni 'kubernetes.clusters.read' e 'kubernetes.resources.read'." + } + }, + "plugin.jfrog-artifactory": { + "it": { + "page.title": "Repository JFrog Artifactory: {{image}}", + "table.searchPlaceholder": "Filtra", + "table.labelRowsSelect": "Righe", + "table.columns.version": "Versione", + "table.columns.repositories": "Repository", + "table.columns.manifest": "Manifest", + "table.columns.modified": "Modificato", + "table.columns.size": "Dimensione", + "table.emptyContent.message": "Nessun dato è stato ancora aggiunto,", + "table.emptyContent.learnMore": "scopri come aggiungere dati.", + "manifest.sha256": "sha256" + } + }, + "plugin.linguist": { + "it": { + "entityCard.title": "Lingue", + "entityCard.noData": "Al momento non sono disponibili dati linguistici per questa entità." + } + }, + "plugin.nexus-repository-manager": { + "it": { + "table.title": "Gestore del repository Nexus: {{title}}", + "table.searchPlaceholder": "Filtra", + "table.labelRowsSelect": "Righe", + "table.columns.version": "Versione", + "table.columns.artifact": "Artefatto", + "table.columns.repositoryType": "Tipo di repository", + "table.columns.checksum": "Checksum", + "table.columns.modified": "Modificato", + "table.columns.size": "Dimensione", + "table.emptyValue": "N/D", + "table.emptyContent.message": "Nessun dato è stato ancora aggiunto,", + "table.emptyContent.linkText": "scopri come aggiungere dati", + "entityContent.title": "Costruire artefatti" + } + }, + "plugin.npm": { + "it": { + "infoCard.title": "Pacchetto NPM {{packageName}}", + "infoCard.latestVersion": "Ultima versione", + "infoCard.publishedAt": "Pubblicato il", + "infoCard.license": "Licenza", + "infoCard.description": "Descrizione", + "infoCard.keywords": "Parole chiave", + "infoCard.registryName": "Nome registro", + "infoCard.npmRepository": "Repository NPM", + "infoCard.codeRepository": "Repository di codice", + "infoCard.issueTracker": "Tracker dei problemi", + "infoCard.homepage": "Pagina iniziale", + "releaseOverviewCard.title": "Tag attuali", + "releaseOverviewCard.toolbar.searchPlaceholder": "Ricerca", + "releaseOverviewCard.columns.tag": "Tag", + "releaseOverviewCard.columns.version": "Versione", + "releaseOverviewCard.columns.published": "Pubblicato", + "releaseTableCard.title": "Tag attuali", + "releaseTableCard.toolbar.searchPlaceholder": "Ricerca", + "releaseTableCard.columns.tag": "Tag", + "releaseTableCard.columns.version": "Versione", + "releaseTableCard.columns.published": "Pubblicato", + "versionHistoryCard.title": "Cronologia delle versioni", + "versionHistoryCard.toolbar.searchPlaceholder": "Ricerca", + "versionHistoryCard.columns.version": "Versione", + "versionHistoryCard.columns.published": "Pubblicato" + } + }, + "plugin.rbac": { + "it": { + "page.title": "RBAC", + "page.createRole": "Crea ruolo", + "page.editRole": "Modifica ruolo", + "table.searchPlaceholder": "Filtra", + "table.labelRowsSelect": "Righe", + "table.title": "Tutti i ruoli", + "table.titleWithCount": "Tutti i ruoli ({{count}})", + "table.headers.name": "Nome", + "table.headers.usersAndGroups": "Utenti e gruppi", + "table.headers.accessiblePlugins": "Plugin accessibili", + "table.headers.actions": "Azioni", + "table.emptyContent": "Nessun record trovato", + "toolbar.createButton": "Crea", + "toolbar.warning.title": "Impossibile creare il ruolo.", + "toolbar.warning.message": "Per abilitare il pulsante Crea/Modifica ruolo, verificare che gli utenti/gruppi richiesti siano disponibili nel catalogo perché non è possibile creare un ruolo senza utenti/gruppi; inoltre il ruolo associato all'utente deve disporre dei criteri di autorizzazione menzionati qui.", + "toolbar.warning.linkText": "qui", + "toolbar.warning.note": "Nota", + "toolbar.warning.noteText": "Anche dopo aver inserito utenti/gruppi nel catalogo e applicato le autorizzazioni precedenti, se il pulsante Crea/Modifica è ancora disabilitato, contattare l'amministratore poiché potrebbero essere presenti limitazioni condizionali all'accesso al pulsante Crea/Modifica.", + "errors.notFound": "Non trovato", + "errors.unauthorized": "Nessuna autorizzazione a creare un ruolo", + "errors.rbacDisabled": "Abilitare il plugin backend RBAC per utilizzare questa funzionalità.", + "errors.rbacDisabledInfo": "Per abilitare RBAC, impostare `permission.enabled` su `true` nel file app-config.", + "errors.fetchRoles": "Si è verificato un errore durante il recupero dei ruoli", + "errors.fetchRole": "Si è verificato un errore durante il recupero del ruolo", + "errors.fetchPoliciesErr": "Errore durante il recupero dei criteri. {{error}}", + "errors.fetchPolicies": "Si è verificato un problema durante il recupero delle policy di autorizzazione", + "errors.fetchPlugins": "Errore durante il recupero dei plugin. {{error}}", + "errors.fetchConditionalPermissionPolicies": "Errore durante il recupero dei criteri di autorizzazione condizionale. {{error}}", + "errors.fetchConditions": "Si è verificato un errore durante il recupero delle condizioni del ruolo", + "errors.fetchUsersAndGroups": "Si è verificato un problema durante il recupero degli utenti e dei gruppi", + "errors.createRole": "Impossibile creare il ruolo.", + "errors.editRole": "Impossibile modificare il ruolo.", + "errors.deleteRole": "Impossibile eliminare il ruolo.", + "errors.roleCreatedSuccess": "Il ruolo è stato creato correttamente ma non è possibile aggiungere criteri di autorizzazione al ruolo.", + "errors.roleCreatedConditionsSuccess": "Ruolo creato correttamente ma non è possibile aggiungere condizioni al ruolo.", + "roleForm.titles.createRole": "Crea ruolo", + "roleForm.titles.editRole": "Modifica ruolo", + "roleForm.titles.nameAndDescription": "Inserire il nome e la descrizione del ruolo", + "roleForm.titles.usersAndGroups": "Aggiungi utenti e gruppi", + "roleForm.titles.permissionPolicies": "Aggiungi criteri di autorizzazione", + "roleForm.review.reviewAndCreate": "Rivedi e crea", + "roleForm.review.reviewAndSave": "Rivedi e salva", + "roleForm.review.nameDescriptionOwner": "Nome, descrizione e proprietario del ruolo", + "roleForm.steps.next": "Successivo", + "roleForm.steps.back": "Indietro", + "roleForm.steps.cancel": "Cancella", + "roleForm.steps.reset": "Reset", + "roleForm.steps.create": "Crea", + "roleForm.steps.save": "Salva", + "roleForm.fields.name.label": "Nome", + "roleForm.fields.name.helperText": "Inserire il nome del ruolo", + "roleForm.fields.description.label": "Descrizione", + "roleForm.fields.description.helperText": "Inserire una breve descrizione del ruolo (finalità del ruolo)", + "roleForm.fields.owner.label": "Proprietario", + "roleForm.fields.owner.helperText": "Facoltativo: inserire un utente o un gruppo che avrà l'autorizzazione a modificare questo ruolo e a creare ruoli aggiuntivi. Nel passaggio successivo, specificare quali utenti possono assegnare ai loro ruoli e a quali plugin possono concedere l'accesso. Se vuoto, l'autore viene assegnato automaticamente al momento della creazione.", + "deleteDialog.title": "Elimina ruolo", + "deleteDialog.question": "Eliminare questo ruolo?", + "deleteDialog.confirmation": "Eliminare il ruolo **{{roleName}}**? L'eliminazione di questo ruolo è irreversibile e ne rimuoverà la funzionalità dal sistema. Procedere con cautela. I **{{members}}** associati a questo ruolo perderanno l'accesso a tutti i **{{permissions}} criteri di autorizzazione** specificati in questo ruolo.", + "deleteDialog.roleNameLabel": "Nome ruolo", + "deleteDialog.roleNameHelper": "Digitare il nome del ruolo per confermare", + "deleteDialog.deleteButton": "Elimina", + "deleteDialog.cancelButton": "Cancella", + "deleteDialog.successMessage": "Ruolo {{roleName}} eliminato correttamente", + "snackbar.success": "Attività riuscita", + "dialog.cancelRoleCreation": "Annulla la creazione del ruolo", + "dialog.exitRoleCreation": "Abbandonare la creazione del ruolo?", + "dialog.exitRoleEditing": "Abbandonare la modifica del ruolo?", + "dialog.exitWarning": "\n\nAbbandonando questa pagina, le informazioni immesse vengono eliminate definitivamente. Uscire?", + "dialog.discard": "Annulla", + "dialog.cancel": "Cancella", + "conditionalAccess.condition": "Condizione", + "conditionalAccess.allOf": "Tutti", + "conditionalAccess.anyOf": "QualunqueDi", + "conditionalAccess.not": "Non", + "conditionalAccess.addNestedCondition": "Aggiungi condizione nidificata", + "conditionalAccess.addRule": "Aggiungi regola", + "conditionalAccess.nestedConditionTooltip": "Le condizioni nidificate sono **regole a un livello all'interno di una condizione principale**. Permette di concedere l'accesso appropriato utilizzando autorizzazioni dettagliate basate su varie condizioni. È possibile aggiungere più condizioni nidificate.", + "conditionalAccess.nestedConditionExample": "Ad esempio, è possibile consentire l'accesso a tutti i tipi di entità nella condizione principale e utilizzare una condizione nidificata per limitare l'accesso alle entità di proprietà dell'utente.", + "permissionPolicies.helperText": "Per impostazione predefinita, agli utenti non è concesso l'accesso ad alcun plugin. Per concedere l'accesso all'utente, selezionare i plugin da abilitare. Quindi, selezionare le azioni per cui concedere l'autorizzazione all'utente.", + "permissionPolicies.allPlugins": "Tutti i plugin ({{count}})", + "permissionPolicies.errorFetchingPolicies": "Errore durante il recupero dei criteri di autorizzazione: {{error}}", + "permissionPolicies.resourceTypeTooltip": "tipo di risorsa: {{resourceType}}", + "permissionPolicies.advancedPermissionsTooltip": "Utilizza autorizzazioni personalizzate avanzate per consentire l'accesso a parti specifiche del tipo di risorsa selezionato.", + "permissionPolicies.pluginsSelected": "{{count}} plugin", + "permissionPolicies.noPluginsSelected": "Nessun plugin selezionato", + "permissionPolicies.search": "Ricerca", + "permissionPolicies.noRecordsToDisplay": "Nessun record da visualizzare.", + "permissionPolicies.selectedPluginsAppearHere": "I plugin selezionati vengono visualizzati qui.", + "permissionPolicies.selectPlugins": "Selezionare i plugin", + "permissionPolicies.noPluginsFound": "Nessun plugin trovato.", + "permissionPolicies.plugin": "Plugin", + "permissionPolicies.permission": "Autorizzazione", + "permissionPolicies.policies": "Criteri", + "permissionPolicies.conditional": "Condizionale", + "permissionPolicies.rules": "regole", + "permissionPolicies.rule": "regola", + "permissionPolicies.permissionPolicies": "Criteri di autorizzazione", + "permissionPolicies.permissions": "autorizzazioni", + "common.noResults": "Nessun risultato per questo intervallo di date.", + "common.exportCSV": "Esporta CSV", + "common.csvFilename": "data-export.csv", + "common.noMembers": "Nessun membro", + "common.groups": "gruppi", + "common.group": "gruppo", + "common.users": "utenti", + "common.user": "utente", + "common.use": "Utilizza", + "common.refresh": "Aggiorna", + "common.edit": "Modifica", + "common.unauthorizedToEdit": "Non autorizzato a modificare", + "common.noRecordsFound": "Nessun record trovato", + "common.selectUsersAndGroups": "Selezionare utenti e gruppi", + "common.clearSearch": "cancella ricerca", + "common.closeDrawer": "Chiudi il riquadro", + "common.remove": "Rimuovi", + "common.addRule": "Aggiungi regola", + "common.selectRule": "Selezionare una regola", + "common.rule": "Regola", + "common.removeNestedCondition": "Rimuovi condizione nidificata", + "common.overview": "Panoramica", + "common.about": "Informazioni", + "common.description": "Descrizione", + "common.modifiedBy": "Modificato da", + "common.lastModified": "Ultima modifica", + "common.owner": "Proprietario", + "common.noUsersAndGroupsSelected": "Nessun utente e gruppo selezionato", + "common.selectedUsersAndGroupsAppearHere": "Qui vengono visualizzati gli utenti e i gruppi selezionati.", + "common.name": "Nome", + "common.type": "Tipo", + "common.members": "Membri", + "common.actions": "Azioni", + "common.removeMember": "Rimuovi membro", + "common.delete": "Elimina", + "common.deleteRole": "Elimina ruolo", + "common.update": "Aggiorna", + "common.editRole": "Modifica ruolo", + "common.checkingPermissions": "Controllo delle autorizzazioni in corso…", + "common.unauthorizedTo": "Non autorizzato a {{action}}", + "common.performThisAction": "eseguire questa azione", + "common.unableToCreatePermissionPolicies": "Impossibile creare i criteri di autorizzazione.", + "common.unableToDeletePermissionPolicies": "Impossibile eliminare i criteri di autorizzazione.", + "common.unableToRemoveConditions": "Impossibile rimuovere le condizioni dal ruolo.", + "common.unableToUpdateConditions": "Impossibile aggiornare le condizioni.", + "common.unableToAddConditions": "Impossibile aggiungere condizioni al ruolo.", + "common.roleActionSuccessfully": "Ruolo {{roleName}} {{action}} eseguito correttamente", + "common.unableToFetchRole": "Impossibile recuperare il ruolo: {{error}}", + "common.unableToFetchMembers": "Impossibile recuperare i membri: {{error}}", + "common.roleAction": "ruolo {{azione}}", + "common.membersCount": "{{count}} membri", + "common.parentGroupCount": "{{count}} gruppo padre", + "common.childGroupsCount": "{{count}} gruppi figlio", + "common.searchAndSelectUsersGroups": "Per cercare e selezionare gli utenti e i gruppi da aggiungere. Gli utenti e i gruppi selezionati appariranno nella tabella sottostante.", + "common.noUsersAndGroupsFound": "Nessun utente e gruppo trovato.", + "common.errorFetchingUserGroups": "Errore durante il recupero di utenti e gruppi: {{error}}", + "common.nameRequired": "Il nome è obbligatorio", + "common.noMemberSelected": "Nessun membro selezionato", + "common.noPluginSelected": "Nessun plugin selezionato", + "common.pluginRequired": "Il plugin è obbligatorio", + "common.permissionRequired": "L'autorizzazione è obbligatoria", + "common.editCell": "Modifica...", + "common.selectCell": "Seleziona...", + "common.expandRow": "espandi riga", + "common.configureAccessFor": "Configurare l'accesso per il", + "common.defaultResourceTypeVisible": "Per impostazione predefinita, il tipo di risorsa selezionato è visibile a tutti gli utenti aggiunti. Per limitare o concedere autorizzazioni a regole specifiche del plugin, selezionarle e aggiungere i parametri." + } + }, + "plugin.argocd": { + "it": { + "appStatus.appHealthStatus.Healthy": "Integro", + "appStatus.appHealthStatus.Suspended": "Sospeso", + "appStatus.appHealthStatus.Degraded": "Degradato", + "appStatus.appHealthStatus.Progressing": "In avanzamento", + "appStatus.appHealthStatus.Missing": "Mancante", + "appStatus.appHealthStatus.Unknown": "Sconosciuto", + "appStatus.appSyncStatus.Unknown": "Sconosciuto", + "appStatus.appSyncStatus.Synced": "Sincronizzato", + "appStatus.appSyncStatus.OutOfSync": "Non sincronizzato", + "common.appServer.title": "Questo è il cluster locale in cui è installato Argo CD.", + "common.permissionAlert.alertTitle": "Autorizzazione richiesta", + "common.permissionAlert.alertText": "Per visualizzare il plugin argocd, contattare l'amministratore per ottenere l'autorizzazione argocd.view.read.", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.name": "Nome", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.kind": "Tipo", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.createdAt": "Creato alle", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.syncStatus": "Stato della sincronizzazione", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.healthStatus": "Stato di integrità", + "deploymentLifecycle.sidebar.resources.resourcesTable.ariaLabelledBy": "Risorse", + "deploymentLifecycle.sidebar.resources.resourcesTable.noneFound": "Nessuna risorsa trovata", + "deploymentLifecycle.sidebar.resources.resourcesTableRow.ariaLabel": "espandi riga", + "deploymentLifecycle.sidebar.resources.resource.deploymentHistory.bodyText": "Cronologia delle distribuzioni", + "deploymentLifecycle.sidebar.resources.resource.deploymentHistoryCommit.deployedText": "distribuito", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.title": "Immagini", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.tooltipText": "Queste sono le immagini per tutte le distribuzioni nell'applicazione ArgoCD.", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.namespace": "Spazio dei nomi", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.commit": "Commit", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.namespace": "Spazio dei nomi", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.strategy": "Strategia", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.status": "Stato", + "deploymentLifecycle.sidebar.resources.resource.resourceMetadata.namespace": "Spazio dei nomi", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.iconButton.ariaLabel": "altro", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.refresh": "Aggiorna", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.sync": "Sincronizzazione", + "deploymentLifecycle.sidebar.resources.resourcesSearchBar.placeholder": "Cerca per tipo", + "deploymentLifecycle.sidebar.resources.resourcesSearchBar.ariaLabel": "cancella ricerca", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SearchByName": "Nome", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Kind": "Tipo", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SyncStatus": "Stato della sincronizzazione", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.HealthStatus": "Stato di integrità", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Unset": "Filtra per", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.searchByNameInput": "Cerca per nome", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusInput": "Filtra per Stato di integrità", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusInput": "Filtra per stato della sincronizzazione", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.kindInput": "Filtra per tipo", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.resourceFilters": "Filtri delle risorse", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.syncStatus": "Stato della sincronizzazione", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.kind": "Tipo", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Healthy": "Integro", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Suspended": "Sospeso", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Degraded": "Degradato", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Progressing": "In avanzamento", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Missing": "Mancante", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Unknown": "Sconosciuto", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Synced": "Sincronizzato", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Unknown": "Sconosciuto", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.OutOfSync": "Non sincronizzato", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.textPrimary": "Cicli di analisi", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.name": "Nome:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.createdAt": "Creato alle:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.status": "Stato:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.chipLabel": "Analisi", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.revision": "Revisione", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.stable": "Stabile", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.active": "Attivo", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.preview": "Anteprima", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revision": "Revisione", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.stable": "Stabile", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.canary": "Canary", + "deploymentLifecycle.sidebar.rollouts.revisions.revisionImage.textPrimary": "Traffico verso l'immagine", + "deploymentLifecycle.sidebar.rollouts.rollOut.title": "Revisioni", + "deploymentLifecycle.deploymentLifecycle.title": "Ciclo di vita della distribuzione", + "deploymentLifecycle.deploymentLifecycle.subtitle": "Esaminare i componenti/sistemi distribuiti nello spazio dei nomi utilizzando il plug-in ArgoCD", + "deploymentLifecycle.deploymentLifecycleCard.instance": "Istanza", + "deploymentLifecycle.deploymentLifecycleCard.server": "Server", + "deploymentLifecycle.deploymentLifecycleCard.namespace": "Spazio dei nomi", + "deploymentLifecycle.deploymentLifecycleCard.commit": "Commit", + "deploymentLifecycle.deploymentLifecycleCard.tooltipText": "Il commit SHA mostrato di seguito è l'ultimo commit dalla prima sorgente dell'applicazione definita.", + "deploymentLifecycle.deploymentLifecycleCard.resources": "Risorse", + "deploymentLifecycle.deploymentLifecycleCard.resourcesDeployed": "risorse distribuite", + "deploymentLifecycle.deploymentLifecycleDrawer.iconButtonTitle": "Chiudi il riquadro", + "deploymentLifecycle.deploymentLifecycleDrawer.instance": "Istanza", + "deploymentLifecycle.deploymentLifecycleDrawer.cluster": "Cluster", + "deploymentLifecycle.deploymentLifecycleDrawer.namespace": "Spazio dei nomi", + "deploymentLifecycle.deploymentLifecycleDrawer.commit": "Commit", + "deploymentLifecycle.deploymentLifecycleDrawer.revision": "Revisione", + "deploymentLifecycle.deploymentLifecycleDrawer.resources": "Risorse", + "deploymentLifecycle.deploymentLifecycleDrawer.instanceDefaultValue": "predefinito", + "deploymentSummary.deploymentSummary.tableTitle": "Riepilogo della distribuzione", + "deploymentSummary.deploymentSummary.columns.instance": "Istanza", + "deploymentSummary.deploymentSummary.columns.server": "Server", + "deploymentSummary.deploymentSummary.columns.revision": "Revisione", + "deploymentSummary.deploymentSummary.columns.lastDeployed": "Ultima distribuzione", + "deploymentSummary.deploymentSummary.columns.syncStatus": "Stato della sincronizzazione", + "deploymentSummary.deploymentSummary.columns.healthStatus": "Stato di integrità" + } + }, + "plugin.sonarqube": { + "it": { + "title": "Pannello di controllo SonarQube", + "sonarQubeCard.title": "Qualità del codice", + "sonarQubeCard.deepLinkTitle": "Visualizza altro", + "sonarQubeCard.emptyState.title": "Nessuna informazione da visualizzare", + "sonarQubeCard.emptyState.description": "Non esiste alcun progetto SonarQube con chiave '{{ projectTitle }}', verificare che il progetto esista e che abbia le autorizzazioni.", + "sonarQubeCard.noSonarQubeError.hasAnnotation": "Non esiste alcun progetto SonarQube con chiave '{{project}}'", + "sonarQubeCard.noSonarQubeError.noAnnotation": "Nessuna annotazione SonarQube trovata", + "sonarQubeCard.bugReportRatingCardTitle": "Bug", + "sonarQubeCard.vulnerabilitiesRatingCardTitle": "Vulnerabilità", + "sonarQubeCard.codeSmellsRatingCardTitle": "Possibili errori nel codice", + "sonarQubeCard.hotspotsReviewedTitle": "Hotspot rivisti", + "sonarQubeCard.coverageRatingCardTitle": "Copertura", + "sonarQubeCard.duplicationsRatingCard": "Duplicazioni", + "sonarQubeCard.qualityBadgeLabel.notComputed": "Non elaborato", + "sonarQubeCard.qualityBadgeLabel.gatePassed": "Gate superato", + "sonarQubeCard.qualityBadgeLabel.gateFailed": "Gate non riuscito", + "sonarQubeCard.qualityBadgeTooltip": "Visualizza il pannello di controllo di SonarQube", + "sonarQubeTable.columnsTitle.name": "Nome", + "sonarQubeTable.columnsTitle.qualityGate": "Quality Gate", + "sonarQubeTable.columnsTitle.lastAnalysis": "Ultima analisi", + "sonarQubeTable.columnsTitle.bugs": "Bug", + "sonarQubeTable.columnsTitle.vulnerabilities": "Vulnerabilità", + "sonarQubeTable.columnsTitle.codeSmells": "Possibili errori nel codice", + "sonarQubeTable.columnsTitle.hotspotsReviewed": "Hotspot rivisti", + "sonarQubeTable.columnsTitle.coverage": "Copertura", + "sonarQubeTable.columnsTitle.duplications": "Duplicazioni" + } + }, + "plugin.tekton": { + "it": { + "errorPanel.title": "Si è verificato un problema durante il recupero degli oggetti Kubernetes", + "errorPanel.description": "Si è verificato un problema durante il recupero di alcune risorse Kubernetes per l'entità: {{entityName}}. Potrebbe significare che la scheda Segnalazione errori non è del tutto precisa.", + "permissionAlert.title": "Autorizzazione richiesta", + "permissionAlert.description": "Per visualizzare le esecuzioni delle pipeline Tekton, contattare l'amministratore per ottenere le seguenti autorizzazioni: {{permissions}}.", + "statusSelector.label": "Stato", + "clusterSelector.label": "Cluster", + "tableExpandCollapse.collapseAll": "Comprimi tutto", + "tableExpandCollapse.expandAll": "Espandi tutto", + "pipelineVisualization.emptyState.description": "Nessuna esecuzione della pipeline da visualizzare", + "pipelineVisualization.noTasksDescription": "Questa esecuzione della pipeline non ha attività da visualizzare", + "pipelineVisualization.stepList.finallyTaskTitle": "Attività finale", + "pipelineRunList.title": "Esecuzioni di pipeline", + "pipelineRunList.noPipelineRuns": "Nessuna esecuzione di pipeline trovata", + "pipelineRunList.searchBarPlaceholder": "Ricerca", + "pipelineRunList.rowActions.viewParamsAndResults": "Visualizza parametri e risultati", + "pipelineRunList.rowActions.viewLogs": "Visualizza registri", + "pipelineRunList.rowActions.unauthorizedViewLogs": "Non autorizzato a visualizzare i registri", + "pipelineRunList.rowActions.viewSBOM": "Visualizza SBOM", + "pipelineRunList.rowActions.SBOMNotApplicable": "Visualizza SBOM non è applicabile a questa PipelineRun", + "pipelineRunList.rowActions.viewOutput": "Visualizza output", + "pipelineRunList.rowActions.outputNotApplicable": "Visualizza output non è applicabile a questa PipelineRun", + "pipelineRunList.vulnerabilitySeverityTitle.critical": "Critica", + "pipelineRunList.vulnerabilitySeverityTitle.high": "Alta", + "pipelineRunList.vulnerabilitySeverityTitle.medium": "Media", + "pipelineRunList.vulnerabilitySeverityTitle.low": "Bassa", + "pipelineRunList.tableHeaderTitle.name": "NOME", + "pipelineRunList.tableHeaderTitle.vulnerabilities": "VULNERABILITÀ", + "pipelineRunList.tableHeaderTitle.status": "STATO", + "pipelineRunList.tableHeaderTitle.taskStatus": "STATO DELL'ATTIVITÀ", + "pipelineRunList.tableHeaderTitle.startTime": "Iniziata", + "pipelineRunList.tableHeaderTitle.duration": "DURATA", + "pipelineRunList.tableHeaderTitle.actions": "AZIONI", + "pipelineRunList.tablePagination.rowsPerPageOptionLabel": "{{num}} righe", + "pipelineRunLogs.title": "Registri PipelineRun", + "pipelineRunLogs.noLogs": "Nessun registro trovato", + "pipelineRunLogs.downloader.downloadTaskLogs": "Scaricamento", + "pipelineRunLogs.downloader.downloadPipelineRunLogs": "Scarica tutti i registri delle attività", + "pipelineRunLogs.podLogsDownloadLink.title": "Scaricamento", + "pipelineRunLogs.podLogsDownloadLink.downloading": "download dei registri in corso", + "pipelineRunLogs.taskStatusStepper.skipped": "Ignorato", + "pipelineRunOutput.title": "Output di PipelineRun", + "pipelineRunOutput.noOutput": "Nessun output", + "pipelineRunStatus.All": "Tutto", + "pipelineRunStatus.Cancelling": "Annullamento", + "pipelineRunStatus.Succeeded": "Riuscito", + "pipelineRunStatus.Failed": "Non riuscito", + "pipelineRunStatus.Running": "In esecuzione", + "pipelineRunStatus.In Progress": "In corso", + "pipelineRunStatus.FailedToStart": "Impossibile avviare", + "pipelineRunStatus.PipelineNotStarted": "Pipeline non avviata", + "pipelineRunStatus.Skipped": "Ignorato", + "pipelineRunStatus.Cancelled": "Annullato", + "pipelineRunStatus.Pending": "In pausa", + "pipelineRunStatus.Idle": "Inattivo", + "pipelineRunStatus.Other": "Altro", + "pipelineRunDuration.lessThanSec": "meno di un secondo", + "pipelineRunDuration.hour_one": "{{count}} ora", + "pipelineRunDuration.hour_other": "{{count}} ore", + "pipelineRunDuration.minute_one": "{{count}} minuto", + "pipelineRunDuration.minute_other": "{{count}} minuti", + "pipelineRunDuration.second_one": "{{count}} secondo", + "pipelineRunDuration.second_other": "{{count}} secondi", + "pipelineRunParamsAndResults.title": "Parametri e risultati di PipelineRun", + "pipelineRunParamsAndResults.noParams": "Nessun parametro trovato", + "pipelineRunParamsAndResults.noResults": "Nessun risultato trovato", + "pipelineRunParamsAndResults.params": "Parametri", + "pipelineRunParamsAndResults.results": "Risultati", + "pipelineRunParamsAndResults.outputTableColumn.name": "Nome", + "pipelineRunParamsAndResults.outputTableColumn.value": "Valore" + } + }, + "plugin.topology": { + "it": { + "page.title": "Topologia", + "page.subtitle": "Visualizzazione della topologia del carico di lavoro di Kubernetes", + "toolbar.cluster": "Cluster", + "toolbar.selectCluster": "Selezionare Cluster", + "toolbar.displayOptions": "Opzioni di visualizzazione", + "toolbar.currentDisplayOptions": "Opzioni di visualizzazione correnti", + "emptyState.noResourcesFound": "Nessuna risorsa trovata", + "emptyState.noResourcesDescription": "Nessuna risorsa Kubernetes trovata nel cluster selezionato.", + "permissions.missingPermission": "Autorizzazione mancante", + "permissions.missingPermissionDescription": "Per visualizzare la topologia, l'amministratore deve concedere {{permissions}} {{permissionText}}.", + "permissions.missingPermissionDescription_plural": "Per visualizzare la topologia, l'amministratore deve concedere {{permissions}} {{permissionText}}.", + "permissions.permission": "autorizzazione", + "permissions.permissions": "autorizzazioni", + "permissions.goBack": "Indietro", + "sideBar.details": "Dettagli", + "sideBar.resources": "Risorse", + "status.running": "In esecuzione", + "status.pending": "In pausa", + "status.succeeded": "Riuscito", + "status.failed": "Non riuscito", + "status.unknown": "Sconosciuto", + "status.terminating": "Termine", + "status.crashLoopBackOff": "CrashLoopBackOff", + "status.error": "Errore", + "status.warning": "Avviso", + "status.ready": "Pronto", + "status.notReady": "Non pronto", + "status.active": "Attivo", + "status.inactive": "Inattivo", + "status.updating": "Aggiornamento", + "status.evicted": "Rimosso", + "status.cancelled": "Annullato", + "details.name": "Nome", + "details.namespace": "Spazio dei nomi", + "details.labels": "Etichette", + "details.annotations": "Annotazioni", + "details.createdAt": "Creato", + "details.age": "Età", + "details.replicas": "Repliche", + "details.availableReplicas": "Repliche disponibili", + "details.readyReplicas": "Repliche pronte", + "details.updatedReplicas": "Repliche aggiornate", + "details.selector": "Selettore", + "details.strategy": "Strategia", + "details.image": "Immagine", + "details.ports": "Porte", + "details.volumes": "Volumi", + "details.volumeMounts": "Montaggi del volume", + "details.environmentVariables": "Variabili d'ambiente", + "details.resourceRequirements": "Requisiti delle risorse", + "details.limits": "Limiti", + "details.requests": "Richieste", + "details.cpu": "CPU", + "details.memory": "Memoria", + "details.storage": "Archiviazione", + "details.noLabels": "Nessuna etichetta", + "details.noAnnotations": "Nessuna annotazione", + "details.noOwner": "Nessun proprietario", + "details.notAvailable": "Non disponibile", + "details.notConfigured": "Non configurato", + "details.updateStrategy": "Aggiornare la strategia", + "details.maxUnavailable": "Max non disponibile", + "details.maxSurge": "Sovratensione massima", + "details.progressDeadlineSeconds": "Secondi alla scadenza progressivi", + "details.minReadySeconds": "Secondi min alla preparazione", + "details.desiredCompletions": "Completamenti desiderati", + "details.parallelism": "Parallelismo", + "details.activeDeadlineSeconds": "Secondi alla scadenza attivi", + "details.currentCount": "Conteggio attuale", + "details.desiredCount": "Conteggio desiderato", + "details.schedule": "Programma", + "details.concurrencyPolicy": "Politica di concorrenza", + "details.startingDeadlineSeconds": "Secondi all'avvio della scadenza", + "details.lastScheduleTime": "Ultimo orario previsto", + "details.maxSurgeDescription": "{{maxSurge}} maggiore di {{replicas}} pod", + "details.maxUnavailableDescription": "{{maxUnavailable}} di {{replicas}} pod", + "logs.download": "Scaricamento", + "logs.noLogsFound": "Nessun registro trovato", + "logs.selectContainer": "Selezionare container", + "logs.container": "Container", + "logs.pod": "Pod", + "logs.showPrevious": "Mostra precedente", + "logs.follow": "Segui", + "logs.refresh": "Aggiorna", + "logs.timestamps": "Timestamp", + "logs.wrapLines": "A capo", + "logs.clearLogs": "Cancella registri", + "logs.logLevel": "Livello di registro", + "logs.search": "Ricerca", + "logs.noMatchingLogs": "Nessun registro corrispondente trovato", + "resources.noResourcesFound": "Nessun {{resourceType}} trovato per questa risorsa.", + "resources.showingLatest": "Visualizzazione degli ultimi {{count}} {{resourceType}}", + "time.seconds": "secondi", + "time.minutes": "minuti", + "time.hours": "ore", + "time.days": "giorni", + "events.type": "Tipo", + "events.reason": "Motivo", + "events.message": "Messaggio", + "events.source": "Sorgente", + "events.firstSeen": "Primo accesso", + "events.lastSeen": "Ultimo accesso", + "events.count": "Conteggio", + "events.noEventsFound": "Nessun evento trovato", + "filters.showLabels": "Mostra etichette", + "filters.showPodCount": "Mostra conteggio pod", + "filters.expandApplicationGroups": "Espandi gruppi di applicazioni", + "filters.showConnectors": "Mostra connettori", + "common.status": "Stato", + "common.owner": "Proprietario", + "common.location": "Posizione", + "common.viewLogs": "Visualizza registri", + "bootOrder.summary": "Riepilogo dell'ordine di avvio", + "bootOrder.emptySummary": "Nessun ordine di avvio configurato", + "bootOrder.disk": "Disco", + "bootOrder.network": "Rete", + "bootOrder.cdrom": "CD-ROM", + "vm.status.starting": "Avvio", + "vm.status.stopping": "Arresto", + "vm.status.stopped": "Arrestato", + "vm.status.paused": "In pausa", + "vm.status.migrating": "Migrazione", + "vm.status.provisioning": "Provisioning", + "vm.status.errorUnschedulable": "ErrorUnschedulable", + "vm.status.errorImagePull": "ErrorImagePull", + "vm.status.imageNotReady": "ImageNotReady", + "vm.status.waitingForVolumeBinding": "WaitingForVolumeBinding" + } + } +} \ No newline at end of file diff --git a/translations/community-plugins-reference-2025-12-05-ja-C.json b/translations/community-plugins-reference-2025-12-05-ja-C.json new file mode 100644 index 0000000000..0931288c82 --- /dev/null +++ b/translations/community-plugins-reference-2025-12-05-ja-C.json @@ -0,0 +1,740 @@ +{ + "plugin.acr": { + "ja": { + "page.title": "Azure Container Registry リポジトリー: {{image}}", + "table.searchPlaceholder": "フィルター", + "table.labelRowsSelect": "行", + "table.columns.tag": "タグ", + "table.columns.created": "作成済み", + "table.columns.lastModified": "最終更新", + "table.columns.manifest": "マニフェスト" + } + }, + "plugin.adr": { + "ja": { + "contentHeaderTitle": "アーキテクチャー決定レコード", + "failedToFetch": "ADR の取得に失敗しました", + "notFound": "ADR が見つかりません" + } + }, + "plugin.announcements-react": { + "ja": { + "announcementForm.title": "タイトル", + "announcementForm.excerpt": "抜粋", + "announcementForm.active": "アクティブ", + "announcementForm.submit": "送信", + "announcementForm.editAnnouncement": "お知らせの編集", + "announcementForm.newAnnouncement": "新しいお知らせ", + "announcementForm.startAt": "お知らせ開始日", + "announcementForm.untilDate": "お知らせ終了日", + "announcementForm.onBehalfOf": "発信元", + "announcementForm.categoryInput.create": "作成", + "announcementForm.categoryInput.label": "カテゴリー", + "announcementForm.tagsInput.create": "作成", + "announcementForm.tagsInput.label": "タグ", + "announcementForm.tagsLabel": "タグ", + "announcementsPage.newAnnouncement": "新しいお知らせ", + "announcementsPage.genericNew": "新規", + "announcementsPage.card.by": "By", + "announcementsPage.card.in": "in", + "announcementsPage.card.edit": "編集", + "announcementsPage.card.delete": "削除", + "announcementsPage.card.occurred": "実施済み ", + "announcementsPage.card.scheduled": "スケジュール済み ", + "announcementsPage.card.today": "今日", + "announcementsPage.grid.announcementDeleted": "お知らせを削除しました。", + "announcementsPage.contextMenu.admin": "アナウンスの管理", + "confirmDeleteDialog.title": "削除してもよろしいですか?", + "confirmDeleteDialog.cancel": "キャンセル", + "confirmDeleteDialog.delete": "削除", + "announcementsCard.seeAll": "すべて表示", + "announcementsCard.announcements": "お知らせ", + "announcementsCard.new": "新規", + "announcementsCard.in": "in", + "announcementsCard.noAnnouncements": "まだお知らせはありません。", + "announcementsCard.addOne": "追加しますか", + "announcementsCard.occurred": "実施済み", + "announcementsCard.scheduled": "スケジュール済み", + "announcementsCard.today": "今日", + "announcementSearchResultListItem.published": "公開済み", + "announcementSearchResultListItem.announcement": "お知らせ", + "announcementsTimeline.noAnnouncements": "お知らせなし", + "announcementsTimeline.error": "エラー", + "categoriesForm.newCategory": "新しいカテゴリー", + "categoriesForm.editCategory": "カテゴリーの編集", + "categoriesForm.titleLabel": "タイトル", + "categoriesForm.submit": "送信", + "categoriesTable.categoryDeleted": "カテゴリーが削除されました。", + "categoriesTable.slug": "スラッグ", + "categoriesTable.title": "タイトル", + "categoriesTable.actions": "アクション", + "categoriesTable.addTooltip": "追加", + "categoriesTable.noCategoriesFound": "カテゴリーが見つかりません。", + "categoriesPage.title": "カテゴリー", + "categoriesPage.subtitle": "お知らせのカテゴリーの管理", + "tagsForm.newTag": "新しいタグ", + "tagsForm.editTag": "タグの編集", + "tagsForm.titleLabel": "タイトル", + "tagsForm.submit": "送信", + "tagsForm.errors.alreadyExists": "この名前のタグはすでに存在します。", + "tagsForm.errors.invalidTitle": "タイトルは必須です。", + "tagsForm.errors.tooLong": "タイトルが最大長を超えています。", + "newTagDialog.createdMessage": "タグが作成されました。", + "newTagDialog.newTag": "新しいタグ", + "newTagDialog.title": "タイトル", + "newTagDialog.cancelButton": "キャンセル", + "newTagDialog.createButton": "作成", + "tagsPage.title": "タグ", + "tagsPage.subtitle": "お知らせのタグの管理", + "tagsTable.tagDeleted": "タグが削除されました。", + "tagsTable.slug": "スラッグ", + "tagsTable.title": "タイトル", + "tagsTable.actions": "アクション", + "tagsTable.addTooltip": "追加", + "tagsTable.noTagsFound": "タグが見つかりません。", + "createAnnouncementPage.alertMessage": "お知らせを作成しました。", + "createAnnouncementPage.alertMessageWithNewCategory": "新しいカテゴリー", + "editAnnouncementPage.updatedMessage": "お知らせを更新しました。", + "editAnnouncementPage.updatedMessageWithNewCategory": "新しいカテゴリー", + "editAnnouncementPage.notFoundMessage": "お知らせが見つかりません", + "editAnnouncementPage.edit": "編集", + "newAnnouncementBanner.markAsSeen": "既読としてマーク", + "newCategoryDialog.createdMessage": "カテゴリーが作成されました。", + "newCategoryDialog.newCategory": "新しいカテゴリー", + "newCategoryDialog.title": "タイトル", + "newCategoryDialog.cancelButton": "キャンセル", + "newCategoryDialog.createButton": "作成", + "admin.adminPortal.announcementsLabels": "お知らせ", + "admin.adminPortal.categoriesLabel": "カテゴリー", + "admin.adminPortal.tagsLabel": "タグ", + "admin.adminPortal.title": "お知らせ用の管理ポータル", + "admin.adminPortal.subtitle": "お知らせとカテゴリーの管理", + "admin.announcementsContent.alertMessage": "お知らせを作成しました。", + "admin.announcementsContent.alertMessageWithNewCategory": "新しいカテゴリー", + "admin.announcementsContent.cancelButton": "キャンセル", + "admin.announcementsContent.createButton": "お知らせの作成", + "admin.announcementsContent.announcements": "お知らせ", + "admin.announcementsContent.noAnnouncementsFound": "お知らせが見つかりません", + "admin.announcementsContent.table.title": "タイトル", + "admin.announcementsContent.table.body": "ボディー", + "admin.announcementsContent.table.publisher": "公開元", + "admin.announcementsContent.table.onBehalfOf": "発信元", + "admin.announcementsContent.table.category": "カテゴリー", + "admin.announcementsContent.table.tags": "タグ", + "admin.announcementsContent.table.status": "ステータス", + "admin.announcementsContent.table.actions": "アクション", + "admin.announcementsContent.table.active": "アクティブ", + "admin.announcementsContent.table.inactive": "非アクティブ", + "admin.announcementsContent.table.created_at": "作成済み", + "admin.announcementsContent.table.start_at": "開始日", + "admin.announcementsContent.table.until_date": "終了日", + "admin.categoriesContent.createdMessage": "作成済み", + "admin.categoriesContent.deletedMessage": "カテゴリーが削除されました。", + "admin.categoriesContent.cancelButton": "キャンセル", + "admin.categoriesContent.createButton": "カテゴリーの作成", + "admin.categoriesContent.table.categoryDeleted": "カテゴリーが削除されました。", + "admin.categoriesContent.table.slug": "スラッグ", + "admin.categoriesContent.table.title": "タイトル", + "admin.categoriesContent.table.actions": "アクション", + "admin.categoriesContent.table.addTooltip": "追加", + "admin.categoriesContent.table.noCategoriesFound": "カテゴリーが見つかりません。", + "admin.tagsContent.createdMessage": "作成済み", + "admin.tagsContent.deletedMessage": "タグが削除されました。", + "admin.tagsContent.cancelButton": "キャンセル", + "admin.tagsContent.createButton": "タグの作成", + "admin.tagsContent.table.tagDeleted": "タグが削除されました。", + "admin.tagsContent.table.slug": "スラッグ", + "admin.tagsContent.table.title": "タイトル", + "admin.tagsContent.table.actions": "アクション", + "admin.tagsContent.table.addTooltip": "追加", + "admin.tagsContent.table.noTagsFound": "タグが見つかりません。", + "admin.tagsContent.errors.alreadyExists": "この名前のタグはすでに存在します。" + } + }, + "plugin.bookmarks": { + "ja": { + "bookmarkViewer.newTab": "新しいタブで開く", + "bookmarkViewer.navButton.next": "次へ", + "bookmarkViewer.navButton.previous": "前へ", + "bookmarkViewer.mobileView.toc": "目次", + "bookmarkViewerFrame.devModeWarning": "開発モードでは、iframe を正しく読み込むためにページを再読み込みする必要がある場合があります", + "entityBookmarksContent.invalid.title": "ブックマークの形式が無効です", + "entityBookmarksContent.invalid.description": "ブックマークの構造が正しいことを確認してください。", + "entityBookmarksContent.notFound.title": "ブックマークが見つかりません", + "entityBookmarksContent.notFound.description": "エンティティーのメタデータにブックマークを追加すると、ここに表示されます。" + } + }, + "plugin.flux": { + "ja": { + "fluxContentCard.permissionAlert.title": "権限が必要", + "fluxContentCard.permissionAlert.message": "Flux コンテンツが Kubernetes オブジェクトに対する認可を必要としています。ポータル管理者に連絡して、kubernetes.clusters.read および kubernetes.resources.read 権限を付与してもらうよう依頼してください。" + } + }, + "plugin.jfrog-artifactory": { + "ja": { + "page.title": "JFrog Artifactory リポジトリー: {{image}}", + "table.searchPlaceholder": "フィルター", + "table.labelRowsSelect": "行", + "table.columns.version": "バージョン", + "table.columns.repositories": "リポジトリー", + "table.columns.manifest": "マニフェスト", + "table.columns.modified": "更新済み", + "table.columns.size": "サイズ", + "table.emptyContent.message": "まだデータが追加されていません。", + "table.emptyContent.learnMore": "データの追加方法をご覧ください。", + "manifest.sha256": "sha256" + } + }, + "plugin.linguist": { + "ja": { + "entityCard.title": "言語", + "entityCard.noData": "現在、このエンティティーの言語データはありません。" + } + }, + "plugin.nexus-repository-manager": { + "ja": { + "table.title": "Nexus Repository Manager: {{title}}", + "table.searchPlaceholder": "フィルター", + "table.labelRowsSelect": "行", + "table.columns.version": "バージョン", + "table.columns.artifact": "アーティファクト", + "table.columns.repositoryType": "リポジトリータイプ", + "table.columns.checksum": "チェックサム", + "table.columns.modified": "更新済み", + "table.columns.size": "サイズ", + "table.emptyValue": "該当なし", + "table.emptyContent.message": "まだデータが追加されていません。", + "table.emptyContent.linkText": "データの追加方法をご覧ください", + "entityContent.title": "ビルドアーティファクト" + } + }, + "plugin.npm": { + "ja": { + "infoCard.title": "NPM パッケージ {{packageName}}", + "infoCard.latestVersion": "最新バージョン", + "infoCard.publishedAt": "公開日時", + "infoCard.license": "ライセンス", + "infoCard.description": "説明", + "infoCard.keywords": "キーワード", + "infoCard.registryName": "レジストリー名", + "infoCard.npmRepository": "NPM リポジトリー", + "infoCard.codeRepository": "コードリポジトリー", + "infoCard.issueTracker": "イシュートラッカー", + "infoCard.homepage": "ホームページ", + "releaseOverviewCard.title": "現在のタグ", + "releaseOverviewCard.toolbar.searchPlaceholder": "検索", + "releaseOverviewCard.columns.tag": "タグ", + "releaseOverviewCard.columns.version": "バージョン", + "releaseOverviewCard.columns.published": "公開済み", + "releaseTableCard.title": "現在のタグ", + "releaseTableCard.toolbar.searchPlaceholder": "検索", + "releaseTableCard.columns.tag": "タグ", + "releaseTableCard.columns.version": "バージョン", + "releaseTableCard.columns.published": "公開済み", + "versionHistoryCard.title": "バージョン履歴", + "versionHistoryCard.toolbar.searchPlaceholder": "検索", + "versionHistoryCard.columns.version": "バージョン", + "versionHistoryCard.columns.published": "公開済み" + } + }, + "plugin.rbac": { + "ja": { + "page.title": "RBAC", + "page.createRole": "ロールの作成", + "page.editRole": "ロールの編集", + "table.searchPlaceholder": "フィルター", + "table.labelRowsSelect": "行", + "table.title": "すべてのロール", + "table.titleWithCount": "すべてのロール ({{count}})", + "table.headers.name": "名前", + "table.headers.usersAndGroups": "ユーザーとグループ", + "table.headers.accessiblePlugins": "アクセス可能なプラグイン", + "table.headers.actions": "アクション", + "table.emptyContent": "レコードが見つかりません", + "toolbar.createButton": "作成", + "toolbar.warning.title": "ロールを作成できません。", + "toolbar.warning.message": "ロールの作成/編集ボタンを有効にするには、必要なユーザー/グループがカタログで利用可能であることを確認してください。ユーザー/グループがないと、ロールを作成できないためです。また、ユーザーに関連付けられているロールには、次のリンク先に記載されている権限ポリシーが必要です こちら。", + "toolbar.warning.linkText": "こちら", + "toolbar.warning.note": "注記", + "toolbar.warning.noteText": "カタログにユーザー/グループを取り込み、上記の権限を適用した後でも作成/編集ボタンが無効な場合は、管理者に問い合わせてください。作成/編集ボタンへのアクセスが条件付きで制限されている可能性があります。", + "errors.notFound": "見つかりません", + "errors.unauthorized": "ロールを作成する権限がありません", + "errors.rbacDisabled": "この機能を使用するには、RBAC バックエンドプラグインを有効にしてください。", + "errors.rbacDisabledInfo": "RBAC を有効にするには、app-config ファイルで `permission.enabled` を `true` に設定します。", + "errors.fetchRoles": "ロールの取得中に問題が発生しました", + "errors.fetchRole": "ロールの取得中に問題が発生しました", + "errors.fetchPoliciesErr": "ポリシーの取得中にエラーが発生しました。{{error}}", + "errors.fetchPolicies": "権限ポリシーの取得中に問題が発生しました", + "errors.fetchPlugins": "プラグインの取得中にエラーが発生しました。{{error}}", + "errors.fetchConditionalPermissionPolicies": "条件付き権限ポリシーの取得中にエラーが発生しました。{{error}}", + "errors.fetchConditions": "ロール条件の取得中に問題が発生しました", + "errors.fetchUsersAndGroups": "ユーザーとグループの取得中に問題が発生しました", + "errors.createRole": "ロールを作成できません。", + "errors.editRole": "ロールを編集できません。", + "errors.deleteRole": "ロールを削除できません。", + "errors.roleCreatedSuccess": "ロールが正常に作成されましたが、ロールに権限ポリシーを追加できません。", + "errors.roleCreatedConditionsSuccess": "ロールは正常に作成されましたが、ロールに条件を追加できません。", + "roleForm.titles.createRole": "ロールの作成", + "roleForm.titles.editRole": "ロールの編集", + "roleForm.titles.nameAndDescription": "ロールの名前と説明を入力してください", + "roleForm.titles.usersAndGroups": "ユーザーとグループの追加", + "roleForm.titles.permissionPolicies": "権限ポリシーの追加", + "roleForm.review.reviewAndCreate": "確認および作成", + "roleForm.review.reviewAndSave": "確認および保存", + "roleForm.review.nameDescriptionOwner": "ロールの名前、説明、および所有者", + "roleForm.steps.next": "次へ", + "roleForm.steps.back": "戻る", + "roleForm.steps.cancel": "キャンセル", + "roleForm.steps.reset": "リセット", + "roleForm.steps.create": "作成", + "roleForm.steps.save": "保存", + "roleForm.fields.name.label": "名前", + "roleForm.fields.name.helperText": "ロールの名前を入力してください", + "roleForm.fields.description.label": "説明", + "roleForm.fields.description.helperText": "ロールについての簡単な説明を入力してください (ロールの目的)", + "roleForm.fields.owner.label": "所有者", + "roleForm.fields.owner.helperText": "任意: このロールを編集する権限と追加のロールを作成する権限を持つユーザーまたはグループを入力してください。どのユーザーを自分のロールに割り当て可能にするか、どのプラグインへのアクセスを許可するかは、次のステップで設定します。空白のままにすると、作成時に作成者が自動的に割り当てられます。", + "deleteDialog.title": "ロールの削除", + "deleteDialog.question": "このロールを削除しますか?", + "deleteDialog.confirmation": "ロール **{{roleName}}** を削除してもよろしいですか?このロールの削除は取り消せません。その機能もシステムから削除されます。慎重に操作してください。このロールに関連付けられている **{{members}}** が、このロールに指定されているすべての **{{permissions}} 権限ポリシー** にアクセスできなくなります。", + "deleteDialog.roleNameLabel": "ロール名", + "deleteDialog.roleNameHelper": "確定するにはロールの名前を入力してください", + "deleteDialog.deleteButton": "削除", + "deleteDialog.cancelButton": "キャンセル", + "deleteDialog.successMessage": "ロール {{roleName}} が正常に削除されました", + "snackbar.success": "成功", + "dialog.cancelRoleCreation": "ロールの作成のキャンセル", + "dialog.exitRoleCreation": "ロールの作成を終了しますか?", + "dialog.exitRoleEditing": "ロールの編集を終了しますか?", + "dialog.exitWarning": "\n\nこのページを終了すると、入力した情報が完全に破棄されます。終了してもよろしいですか?", + "dialog.discard": "破棄", + "dialog.cancel": "キャンセル", + "conditionalAccess.condition": "条件", + "conditionalAccess.allOf": "AllOf", + "conditionalAccess.anyOf": "AnyOf", + "conditionalAccess.not": "Not", + "conditionalAccess.addNestedCondition": "ネストされた条件の追加", + "conditionalAccess.addRule": "ルールの追加", + "conditionalAccess.nestedConditionTooltip": "ネストされた条件とは、**メインの条件の中にある 1 階層分のルール** のことです。さまざまな条件に基づく詳細な権限を使用して、適切なアクセスを許可できます。ネストされた条件は複数追加できます。", + "conditionalAccess.nestedConditionExample": "たとえば、メインの条件ですべてのエンティティータイプへのアクセスを許可し、ネストされた条件でユーザーが所有するエンティティーへのアクセスを制限できます。", + "permissionPolicies.helperText": "デフォルトでは、ユーザーにはどのプラグインへのアクセスも許可されません。ユーザーのアクセスを許可するには、有効にするプラグインを選択します。その後、ユーザーに許可するアクションを選択します。", + "permissionPolicies.allPlugins": "すべてのプラグイン ({{count}})", + "permissionPolicies.errorFetchingPolicies": "権限ポリシーの取得中にエラーが発生しました: {{error}}", + "permissionPolicies.resourceTypeTooltip": "リソースタイプ: {{resourceType}}", + "permissionPolicies.advancedPermissionsTooltip": "詳細にカスタマイズした権限を使用して、選択したリソースタイプの特定の部分へのアクセスを許可します。", + "permissionPolicies.pluginsSelected": "{{count}} 個のプラグイン", + "permissionPolicies.noPluginsSelected": "プラグインが選択されていません", + "permissionPolicies.search": "検索", + "permissionPolicies.noRecordsToDisplay": "表示するレコードがありません。", + "permissionPolicies.selectedPluginsAppearHere": "選択したプラグインがここに表示されます。", + "permissionPolicies.selectPlugins": "プラグインの選択", + "permissionPolicies.noPluginsFound": "プラグインが見つかりません。", + "permissionPolicies.plugin": "プラグイン", + "permissionPolicies.permission": "権限", + "permissionPolicies.policies": "ポリシー", + "permissionPolicies.conditional": "条件付き", + "permissionPolicies.rules": "ルール", + "permissionPolicies.rule": "ルール", + "permissionPolicies.permissionPolicies": "権限ポリシー", + "permissionPolicies.permissions": "権限", + "common.noResults": "この日付範囲の結果はありません。", + "common.exportCSV": "CSV エクスポート", + "common.csvFilename": "data-export.csv", + "common.noMembers": "メンバーがありません", + "common.groups": "グループ", + "common.group": "グループ", + "common.users": "ユーザー", + "common.user": "ユーザー", + "common.use": "使用", + "common.refresh": "更新", + "common.edit": "編集", + "common.unauthorizedToEdit": "編集権限がありません", + "common.noRecordsFound": "レコードが見つかりません", + "common.selectUsersAndGroups": "ユーザーとグループの選択", + "common.clearSearch": "検索のクリア", + "common.closeDrawer": "ドロワーを閉じる", + "common.remove": "削除", + "common.addRule": "ルールの追加", + "common.selectRule": "ルールの選択", + "common.rule": "ルール", + "common.removeNestedCondition": "ネストされた条件の削除", + "common.overview": "概要", + "common.about": "概要", + "common.description": "説明", + "common.modifiedBy": "更新者", + "common.lastModified": "最終更新", + "common.owner": "所有者", + "common.noUsersAndGroupsSelected": "ユーザーとグループが選択されていません", + "common.selectedUsersAndGroupsAppearHere": "選択したユーザーとグループがここに表示されます。", + "common.name": "名前", + "common.type": "タイプ", + "common.members": "メンバー", + "common.actions": "アクション", + "common.removeMember": "メンバーの削除", + "common.delete": "削除", + "common.deleteRole": "ロールの削除", + "common.update": "更新", + "common.editRole": "ロールの編集", + "common.checkingPermissions": "権限を確認しています…", + "common.unauthorizedTo": "{{action}} 権限がありません", + "common.performThisAction": "このアクションの実行", + "common.unableToCreatePermissionPolicies": "権限ポリシーを作成できません。", + "common.unableToDeletePermissionPolicies": "権限ポリシーを削除できません。", + "common.unableToRemoveConditions": "ロールから条件を削除できません。", + "common.unableToUpdateConditions": "条件を更新できません。", + "common.unableToAddConditions": "ロールに条件を追加できません。", + "common.roleActionSuccessfully": "ロール {{roleName}} {{action}} が正常に実行されました", + "common.unableToFetchRole": "ロールを取得できません: {{error}}", + "common.unableToFetchMembers": "メンバーを取得できません: {{error}}", + "common.roleAction": "ロールの {{action}}", + "common.membersCount": "{{count}} 人のメンバー", + "common.parentGroupCount": "{{count}} 個の親グループ", + "common.childGroupsCount": "{{count}} 個の子グループ", + "common.searchAndSelectUsersGroups": "追加するユーザーとグループを検索して選択します。選択したユーザーとグループは下の表に表示されます。", + "common.noUsersAndGroupsFound": "ユーザーとグループが見つかりません。", + "common.errorFetchingUserGroups": "ユーザーとグループの取得中にエラーが発生しました: {{error}}", + "common.nameRequired": "名前は必須です", + "common.noMemberSelected": "メンバーが選択されていません", + "common.noPluginSelected": "プラグインが選択されていません", + "common.pluginRequired": "プラグインが必要です", + "common.permissionRequired": "権限が必要です", + "common.editCell": "編集...", + "common.selectCell": "選択...", + "common.expandRow": "行を展開", + "common.configureAccessFor": "以下に対するアクセス権を設定", + "common.defaultResourceTypeVisible": "デフォルトでは、選択したリソースタイプが、追加されたすべてのユーザーに表示されます。特定のプラグインルールに対する権限を制限または付与する場合は、そのルールを選択してパラメーターを追加してください。" + } + }, + "plugin.argocd": { + "ja": { + "appStatus.appHealthStatus.Healthy": "健全", + "appStatus.appHealthStatus.Suspended": "一時停止中", + "appStatus.appHealthStatus.Degraded": "デグレード", + "appStatus.appHealthStatus.Progressing": "進行中", + "appStatus.appHealthStatus.Missing": "なし", + "appStatus.appHealthStatus.Unknown": "不明", + "appStatus.appSyncStatus.Unknown": "不明", + "appStatus.appSyncStatus.Synced": "同期済み", + "appStatus.appSyncStatus.OutOfSync": "同期なし", + "common.appServer.title": "これは、Argo CD がインストールされているローカルクラスターです。", + "common.permissionAlert.alertTitle": "権限が必要", + "common.permissionAlert.alertText": "argocd プラグインを表示するには、管理者に連絡して argocd.view.read 権限を付与してもらうよう依頼してください。", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.name": "名前", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.kind": "種類", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.createdAt": "作成日時", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.syncStatus": "同期ステータス", + "deploymentLifecycle.sidebar.resources.resourcesColumnHeader.healthStatus": "健全性ステータス", + "deploymentLifecycle.sidebar.resources.resourcesTable.ariaLabelledBy": "リソース", + "deploymentLifecycle.sidebar.resources.resourcesTable.noneFound": "リソースが見つかりません", + "deploymentLifecycle.sidebar.resources.resourcesTableRow.ariaLabel": "行を展開", + "deploymentLifecycle.sidebar.resources.resource.deploymentHistory.bodyText": "デプロイメント履歴", + "deploymentLifecycle.sidebar.resources.resource.deploymentHistoryCommit.deployedText": "デプロイ済み", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.title": "イメージ", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.metadataItemWithTooltip.tooltipText": "これらは、ArgoCD アプリケーションの全デプロイメントで使用されているイメージです。", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.namespace": "Namespace", + "deploymentLifecycle.sidebar.resources.resource.deploymentMetadata.commit": "コミット", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.namespace": "Namespace", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.strategy": "ストラテジー", + "deploymentLifecycle.sidebar.resources.resource.rolloutMetadata.status": "ステータス", + "deploymentLifecycle.sidebar.resources.resource.resourceMetadata.namespace": "Namespace", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.iconButton.ariaLabel": "詳細", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.refresh": "更新", + "deploymentLifecycle.sidebar.resources.resourcesKebabMenuOptions.sync": "同期", + "deploymentLifecycle.sidebar.resources.resourcesSearchBar.placeholder": "種類で検索", + "deploymentLifecycle.sidebar.resources.resourcesSearchBar.ariaLabel": "検索のクリア", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SearchByName": "名前", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Kind": "種類", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.SyncStatus": "同期ステータス", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.HealthStatus": "健全性ステータス", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.Unset": "フィルタリング条件", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.searchByNameInput": "名前で検索", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusInput": "健全性ステータスでフィルタリング", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusInput": "同期ステータスでフィルタリング", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.kindInput": "種類でフィルタリング", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.resourceFilters": "リソースフィルター", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.syncStatus": "同期ステータス", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.ariaLabels.kind": "種類", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Healthy": "健全", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Suspended": "一時停止中", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Degraded": "デグレード", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Progressing": "進行中", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Missing": "なし", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.healthStatusSelectOptions.Unknown": "不明", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Synced": "同期済み", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.Unknown": "不明", + "deploymentLifecycle.sidebar.resources.filters.resourcesFilterBy.syncStatusSelectOptions.OutOfSync": "同期なし", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.textPrimary": "分析実行", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.name": "名前:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.createdAt": "作成日時:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.status": "ステータス:", + "deploymentLifecycle.sidebar.rollouts.revisions.analysisRuns.analysisRuns.chipLabel": "分析", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.revision": "リビジョン", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.stable": "安定", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.active": "アクティブ", + "deploymentLifecycle.sidebar.rollouts.revisions.blueGreenRevision.preview": "プレビュー", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revision": "リビジョン", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.stable": "安定", + "deploymentLifecycle.sidebar.rollouts.revisions.canaryRevision.revisionType.canary": "カナリア", + "deploymentLifecycle.sidebar.rollouts.revisions.revisionImage.textPrimary": "イメージへのトラフィック", + "deploymentLifecycle.sidebar.rollouts.rollOut.title": "リビジョン", + "deploymentLifecycle.deploymentLifecycle.title": "デプロイメントライフサイクル", + "deploymentLifecycle.deploymentLifecycle.subtitle": "ArgoCD プラグインを使用して、namespace にデプロイされたコンポーネント/システムをレビューします", + "deploymentLifecycle.deploymentLifecycleCard.instance": "インスタンス", + "deploymentLifecycle.deploymentLifecycleCard.server": "サーバー", + "deploymentLifecycle.deploymentLifecycleCard.namespace": "Namespace", + "deploymentLifecycle.deploymentLifecycleCard.commit": "コミット", + "deploymentLifecycle.deploymentLifecycleCard.tooltipText": "下に表示されているコミット SHA は、最初に定義されたアプリケーションソースの最新のコミットです。", + "deploymentLifecycle.deploymentLifecycleCard.resources": "リソース", + "deploymentLifecycle.deploymentLifecycleCard.resourcesDeployed": "デプロイ済みリソース", + "deploymentLifecycle.deploymentLifecycleDrawer.iconButtonTitle": "ドロワーを閉じる", + "deploymentLifecycle.deploymentLifecycleDrawer.instance": "インスタンス", + "deploymentLifecycle.deploymentLifecycleDrawer.cluster": "クラスター", + "deploymentLifecycle.deploymentLifecycleDrawer.namespace": "Namespace", + "deploymentLifecycle.deploymentLifecycleDrawer.commit": "コミット", + "deploymentLifecycle.deploymentLifecycleDrawer.revision": "リビジョン", + "deploymentLifecycle.deploymentLifecycleDrawer.resources": "リソース", + "deploymentLifecycle.deploymentLifecycleDrawer.instanceDefaultValue": "デフォルト", + "deploymentSummary.deploymentSummary.tableTitle": "デプロイメントの概要", + "deploymentSummary.deploymentSummary.columns.instance": "インスタンス", + "deploymentSummary.deploymentSummary.columns.server": "サーバー", + "deploymentSummary.deploymentSummary.columns.revision": "リビジョン", + "deploymentSummary.deploymentSummary.columns.lastDeployed": "最終デプロイメント", + "deploymentSummary.deploymentSummary.columns.syncStatus": "同期ステータス", + "deploymentSummary.deploymentSummary.columns.healthStatus": "健全性ステータス" + } + }, + "plugin.sonarqube": { + "ja": { + "title": "SonarQube ダッシュボード", + "sonarQubeCard.title": "コード品質", + "sonarQubeCard.deepLinkTitle": "詳細の表示", + "sonarQubeCard.emptyState.title": "表示する情報がありません", + "sonarQubeCard.emptyState.description": "キー '{{ projectTitle }}' を持つ SonarQube プロジェクトがありません。プロジェクトの存在と権限を確認してください。", + "sonarQubeCard.noSonarQubeError.hasAnnotation": "キー '{{project}}' を持つ SonarQube プロジェクトがありません", + "sonarQubeCard.noSonarQubeError.noAnnotation": "SonarQube アノテーションが見つかりません", + "sonarQubeCard.bugReportRatingCardTitle": "バグ", + "sonarQubeCard.vulnerabilitiesRatingCardTitle": "脆弱性", + "sonarQubeCard.codeSmellsRatingCardTitle": "コードスメル", + "sonarQubeCard.hotspotsReviewedTitle": "レビュー済みのホットスポット", + "sonarQubeCard.coverageRatingCardTitle": "カバレッジ", + "sonarQubeCard.duplicationsRatingCard": "重複", + "sonarQubeCard.qualityBadgeLabel.notComputed": "未判定", + "sonarQubeCard.qualityBadgeLabel.gatePassed": "ゲート合格", + "sonarQubeCard.qualityBadgeLabel.gateFailed": "ゲート不合格", + "sonarQubeCard.qualityBadgeTooltip": "SonarQube ダッシュボードを表示します", + "sonarQubeTable.columnsTitle.name": "名前", + "sonarQubeTable.columnsTitle.qualityGate": "品質ゲート", + "sonarQubeTable.columnsTitle.lastAnalysis": "最終分析", + "sonarQubeTable.columnsTitle.bugs": "バグ", + "sonarQubeTable.columnsTitle.vulnerabilities": "脆弱性", + "sonarQubeTable.columnsTitle.codeSmells": "コードスメル", + "sonarQubeTable.columnsTitle.hotspotsReviewed": "レビュー済みのホットスポット", + "sonarQubeTable.columnsTitle.coverage": "カバレッジ", + "sonarQubeTable.columnsTitle.duplications": "重複" + } + }, + "plugin.tekton": { + "ja": { + "errorPanel.title": "Kubernetes オブジェクトの取得中に問題が発生しました", + "errorPanel.description": "エンティティー {{entityName}} の一部の Kubernetes リソースの取得中に問題が発生しました。そのため、エラーレポートカードの表示が完全には正確でない可能性があります。", + "permissionAlert.title": "権限が必要", + "permissionAlert.description": "Tekton パイプライン実行を表示するには、管理者に連絡して次の権限を付与してもらうよう依頼してください: {{permissions}}。", + "statusSelector.label": "ステータス", + "clusterSelector.label": "クラスター", + "tableExpandCollapse.collapseAll": "すべて折りたたむ", + "tableExpandCollapse.expandAll": "すべて展開", + "pipelineVisualization.emptyState.description": "視覚化するパイプライン実行がありません", + "pipelineVisualization.noTasksDescription": "このパイプライン実行には視覚化するタスクがありません", + "pipelineVisualization.stepList.finallyTaskTitle": "Finally Task", + "pipelineRunList.title": "パイプライン実行", + "pipelineRunList.noPipelineRuns": "パイプライン実行が見つかりません", + "pipelineRunList.searchBarPlaceholder": "検索", + "pipelineRunList.rowActions.viewParamsAndResults": "パラメーターと結果の表示", + "pipelineRunList.rowActions.viewLogs": "ログの表示", + "pipelineRunList.rowActions.unauthorizedViewLogs": "ログを表示する権限がありません", + "pipelineRunList.rowActions.viewSBOM": "SBOM の表示", + "pipelineRunList.rowActions.SBOMNotApplicable": "この PipelineRun には SBOM の表示は適用されません", + "pipelineRunList.rowActions.viewOutput": "出力の表示", + "pipelineRunList.rowActions.outputNotApplicable": "この PipelineRun には出力の表示は適用されません", + "pipelineRunList.vulnerabilitySeverityTitle.critical": "重大", + "pipelineRunList.vulnerabilitySeverityTitle.high": "高", + "pipelineRunList.vulnerabilitySeverityTitle.medium": "中", + "pipelineRunList.vulnerabilitySeverityTitle.low": "低", + "pipelineRunList.tableHeaderTitle.name": "名前", + "pipelineRunList.tableHeaderTitle.vulnerabilities": "脆弱性", + "pipelineRunList.tableHeaderTitle.status": "状態", + "pipelineRunList.tableHeaderTitle.taskStatus": "タスクステータス", + "pipelineRunList.tableHeaderTitle.startTime": "開始済み", + "pipelineRunList.tableHeaderTitle.duration": "期間", + "pipelineRunList.tableHeaderTitle.actions": "アクション", + "pipelineRunList.tablePagination.rowsPerPageOptionLabel": "{{num}} 行", + "pipelineRunLogs.title": "PipelineRun ログ", + "pipelineRunLogs.noLogs": "ログが見つかりません", + "pipelineRunLogs.downloader.downloadTaskLogs": "ダウンロード", + "pipelineRunLogs.downloader.downloadPipelineRunLogs": "すべてのタスクログのダウンロード", + "pipelineRunLogs.podLogsDownloadLink.title": "ダウンロード", + "pipelineRunLogs.podLogsDownloadLink.downloading": "ログのダウンロード中", + "pipelineRunLogs.taskStatusStepper.skipped": "スキップ済み", + "pipelineRunOutput.title": "PipelineRun 出力", + "pipelineRunOutput.noOutput": "出力なし", + "pipelineRunStatus.All": "すべて", + "pipelineRunStatus.Cancelling": "キャンセル中", + "pipelineRunStatus.Succeeded": "成功", + "pipelineRunStatus.Failed": "失敗", + "pipelineRunStatus.Running": "実行中", + "pipelineRunStatus.In Progress": "進行中", + "pipelineRunStatus.FailedToStart": "FailedToStart", + "pipelineRunStatus.PipelineNotStarted": "PipelineNotStarted", + "pipelineRunStatus.Skipped": "スキップ済み", + "pipelineRunStatus.Cancelled": "キャンセル済み", + "pipelineRunStatus.Pending": "保留中", + "pipelineRunStatus.Idle": "アイドル", + "pipelineRunStatus.Other": "その他", + "pipelineRunDuration.lessThanSec": "1 秒未満", + "pipelineRunDuration.hour_one": "{{count}} 時間", + "pipelineRunDuration.hour_other": "{{count}} 時間", + "pipelineRunDuration.minute_one": "{{count}} 分", + "pipelineRunDuration.minute_other": "{{count}} 分", + "pipelineRunDuration.second_one": "{{count}} 秒", + "pipelineRunDuration.second_other": "{{count}} 秒", + "pipelineRunParamsAndResults.title": "PipelineRun のパラメーターと結果", + "pipelineRunParamsAndResults.noParams": "パラメーターが見つかりません", + "pipelineRunParamsAndResults.noResults": "結果が見つかりません", + "pipelineRunParamsAndResults.params": "パラメーター", + "pipelineRunParamsAndResults.results": "結果", + "pipelineRunParamsAndResults.outputTableColumn.name": "名前", + "pipelineRunParamsAndResults.outputTableColumn.value": "値" + } + }, + "plugin.topology": { + "ja": { + "page.title": "トポロジー", + "page.subtitle": "Kubernetes ワークロードトポロジーの視覚化", + "toolbar.cluster": "クラスター", + "toolbar.selectCluster": "クラスターの選択", + "toolbar.displayOptions": "表示オプション", + "toolbar.currentDisplayOptions": "現在の表示オプション", + "emptyState.noResourcesFound": "リソースが見つかりません", + "emptyState.noResourcesDescription": "選択したクラスター内に Kubernetes リソースが見つかりませんでした。", + "permissions.missingPermission": "権限の不足", + "permissions.missingPermissionDescription": "トポロジーを表示するには、管理者から {{permissions}} {{permissionText}} を付与してもらう必要があります。", + "permissions.missingPermissionDescription_plural": "トポロジーを表示するには、管理者から {{permissions}} {{permissionText}} を付与してもらう必要があります。", + "permissions.permission": "権限", + "permissions.permissions": "権限", + "permissions.goBack": "戻る", + "sideBar.details": "詳細", + "sideBar.resources": "リソース", + "status.running": "実行中", + "status.pending": "保留中", + "status.succeeded": "成功", + "status.failed": "失敗", + "status.unknown": "不明", + "status.terminating": "終了中", + "status.crashLoopBackOff": "CrashLoopBackOff", + "status.error": "エラー", + "status.warning": "警告", + "status.ready": "準備完了", + "status.notReady": "準備未完了", + "status.active": "アクティブ", + "status.inactive": "非アクティブ", + "status.updating": "更新中", + "status.evicted": "退避済み", + "status.cancelled": "キャンセル済み", + "details.name": "名前", + "details.namespace": "Namespace", + "details.labels": "ラベル", + "details.annotations": "アノテーション", + "details.createdAt": "作成済み", + "details.age": "経過時間", + "details.replicas": "レプリカ", + "details.availableReplicas": "利用可能なレプリカ", + "details.readyReplicas": "準備完了のレプリカ", + "details.updatedReplicas": "更新済みのレプリカ", + "details.selector": "セレクター", + "details.strategy": "ストラテジー", + "details.image": "イメージ", + "details.ports": "ポート", + "details.volumes": "ボリューム", + "details.volumeMounts": "ボリュームマウント", + "details.environmentVariables": "環境変数", + "details.resourceRequirements": "リソース要件", + "details.limits": "制限", + "details.requests": "要求", + "details.cpu": "CPU", + "details.memory": "メモリー", + "details.storage": "ストレージ", + "details.noLabels": "ラベルがありません", + "details.noAnnotations": "アノテーションなし", + "details.noOwner": "オーナーがありません", + "details.notAvailable": "利用不可", + "details.notConfigured": "未設定", + "details.updateStrategy": "更新ストラテジー", + "details.maxUnavailable": "最大利用可能数", + "details.maxSurge": "Pod 増分の最大値", + "details.progressDeadlineSeconds": "進行の期限 (秒)", + "details.minReadySeconds": "最小の準備状態 (秒)", + "details.desiredCompletions": "必要なレベルの完了", + "details.parallelism": "並列処理", + "details.activeDeadlineSeconds": "有効な期限 (秒)", + "details.currentCount": "現在のカウント", + "details.desiredCount": "必要なカウント", + "details.schedule": "スケジュール", + "details.concurrencyPolicy": "同時実行ポリシー", + "details.startingDeadlineSeconds": "起動の期限 (秒)", + "details.lastScheduleTime": "最終スケジュール日時", + "details.maxSurgeDescription": "{{replicas}} 個の Pod よりも {{maxSurge}} 個多い", + "details.maxUnavailableDescription": "{{replicas}} 個の Pod のうち {{maxUnavailable}} 個", + "logs.download": "ダウンロード", + "logs.noLogsFound": "ログが見つかりません", + "logs.selectContainer": "コンテナーの選択", + "logs.container": "コンテナー", + "logs.pod": "Pod", + "logs.showPrevious": "前を表示", + "logs.follow": "フォロー", + "logs.refresh": "更新", + "logs.timestamps": "タイムスタンプ", + "logs.wrapLines": "行の折り返し", + "logs.clearLogs": "ログのクリア", + "logs.logLevel": "ログレベル", + "logs.search": "検索", + "logs.noMatchingLogs": "一致するログが見つかりません", + "resources.noResourcesFound": "このリソースの {{resourceType}} が見つかりません。", + "resources.showingLatest": "最新 {{count}} 件の {{resourceType}} を表示中", + "time.seconds": "秒", + "time.minutes": "分", + "time.hours": "時間", + "time.days": "日", + "events.type": "タイプ", + "events.reason": "理由", + "events.message": "メッセージ", + "events.source": "ソース", + "events.firstSeen": "初回の発生", + "events.lastSeen": "直近の発生", + "events.count": "回数", + "events.noEventsFound": "イベントが見つかりません", + "filters.showLabels": "ラベルの表示", + "filters.showPodCount": "Pod 数の表示", + "filters.expandApplicationGroups": "アプリケーショングループの展開", + "filters.showConnectors": "コネクターの表示", + "common.status": "ステータス", + "common.owner": "所有者", + "common.location": "場所", + "common.viewLogs": "ログの表示", + "bootOrder.summary": "起動順序の概要", + "bootOrder.emptySummary": "起動順序が設定されていません", + "bootOrder.disk": "ディスク", + "bootOrder.network": "ネットワーク", + "bootOrder.cdrom": "CD-ROM", + "vm.status.starting": "起動中", + "vm.status.stopping": "停止中", + "vm.status.stopped": "停止", + "vm.status.paused": "一時停止", + "vm.status.migrating": "移行中", + "vm.status.provisioning": "プロビジョニング中", + "vm.status.errorUnschedulable": "ErrorUnschedulable", + "vm.status.errorImagePull": "ErrorImagePull", + "vm.status.imageNotReady": "ImageNotReady", + "vm.status.waitingForVolumeBinding": "WaitingForVolumeBinding" + } + } +} \ No newline at end of file diff --git a/translations/rhdh-plugins-reference-2025-12-05-fr-C.json b/translations/rhdh-plugins-reference-2025-12-05-fr-C.json new file mode 100644 index 0000000000..b180dfde9b --- /dev/null +++ b/translations/rhdh-plugins-reference-2025-12-05-fr-C.json @@ -0,0 +1,1013 @@ +{ + "plugin.adoption-insights": { + "fr": { + "page.title": "Adoption Insights", + "header.title": "Adoption Insights", + "header.dateRange.today": "Aujourd'hui", + "header.dateRange.lastWeek": "La semaine dernière", + "header.dateRange.lastMonth": "Mois dernier", + "header.dateRange.last28Days": "Les 28 derniers jours", + "header.dateRange.lastYear": "L'année dernière", + "header.dateRange.dateRange": "Plage de dates...", + "header.dateRange.cancel": "Annuler", + "header.dateRange.ok": "OK", + "header.dateRange.defaultLabel": "Les 28 derniers jours", + "header.dateRange.title": "Intervalle de temps", + "header.dateRange.startDate": "Date de départ", + "header.dateRange.endDate": "Date de fin", + "activeUsers.title": "Utilisateurs actifs", + "activeUsers.averagePrefix": "Le nombre moyen maximal d'utilisateurs actifs était de", + "activeUsers.averageText": "{{count}} par {{period}}", + "activeUsers.averageSuffix": " pour cette période.", + "activeUsers.hour": "heure", + "activeUsers.day": "jour", + "activeUsers.week": "semaine", + "activeUsers.month": "mois", + "activeUsers.legend.newUsers": "Nouveaux utilisateurs", + "activeUsers.legend.returningUsers": "Utilisateurs récurrents", + "templates.title": "Meilleurs modèles", + "templates.topNTitle": "Meilleurs {{count}} modèles", + "templates.allTitle": "Tous les modèles", + "catalogEntities.title": "Principales entités du catalogue", + "catalogEntities.topNTitle": "Top {{count}} entités du catalogue", + "catalogEntities.allTitle": "Toutes les entités du catalogue", + "plugins.title": "Meilleurs plugins", + "plugins.topNTitle": "Meilleurs {{count}} plugins", + "plugins.allTitle": "Tous les plugins", + "techDocs.title": "Top TechDocs", + "techDocs.topNTitle": "Meilleurs {{count}} TechDocs", + "techDocs.allTitle": "Tous les TechDocs", + "searches.title": "Recherches les plus fréquentes", + "searches.totalCount": "{{count}} recherches", + "searches.averagePrefix": "Le nombre moyen de recherches était de", + "searches.averageText": "{{count}} par {{period}}", + "searches.averageSuffix": " pour cette période.", + "searches.hour": "heure", + "searches.day": "jour", + "searches.week": "semaine", + "searches.month": "mois", + "users.title": "Nombre total d'utilisateurs", + "users.haveLoggedIn": "se sont connectés", + "users.loggedInUsers": "Utilisateurs connectés", + "users.licensed": "Autorisé", + "users.licensedNotLoggedIn": "Sous licence (non connecté)", + "users.ofTotal": "de {{total}}", + "users.tooltip": "Définissez le nombre d'utilisateurs sous licence dans le fichier app-config.yaml", + "table.headers.name": "Nom", + "table.headers.kind": "Type", + "table.headers.lastUsed": "Dernière utilisation", + "table.headers.views": "Vues", + "table.headers.executions": "Exécutions", + "table.headers.trend": "S'orienter", + "table.headers.entity": "Entité", + "table.pagination.topN": "Top {{count}}", + "filter.all": "Tous", + "filter.selectKind": "Sélectionnez le type", + "common.noResults": "Aucun résultat pour cette plage de dates.", + "common.readMore": "En savoir plus", + "common.exportCSV": "Exporter au format CSV", + "common.downloading": "Téléchargement...", + "common.today": "Aujourd'hui", + "common.yesterday": "Hier", + "common.numberOfSearches": "Nombre de recherches", + "common.filteredBy": "filtré par", + "common.invalidDateFormat": "Format de date invalide", + "common.csvFilename": "utilisateurs_actifs", + "permission.title": "Autorisations manquantes", + "permission.description": "Pour afficher le plugin « Adoption Insights », contactez votre administrateur pour accorder les autorisations adoption-insights.events.read." + } + }, + "plugin.ai-experience": { + "fr": { + "page.title": "Expérience de l'IA", + "page.subtitle": "Explorer les modèles d'IA, les serveurs, les actualités et les ressources d'apprentissage", + "learn.getStarted.title": "Commencer", + "learn.getStarted.description": "En savoir plus sur Red Hat Developer Hub.", + "learn.getStarted.cta": "Accéder à la documentation technique", + "learn.explore.title": "Explorer", + "learn.explore.description": "Explorer les modèles, serveurs et modèles d’IA.", + "learn.explore.cta": "Accéder au catalogue", + "learn.learn.title": "Apprendre", + "learn.learn.description": "Explorer et développer de nouvelles compétences en IA.", + "learn.learn.cta": "Accéder aux parcours d'apprentissage", + "news.pageTitle": "Actualités de l'IA", + "news.fetchingRssFeed": "Récupération du flux RSS", + "news.noContentAvailable": "Aucun contenu disponible", + "news.noContentDescription": "Il semblerait que nous n'ayons pas pu obtenir de contenu à partir de ce flux RSS. Vous pouvez vérifier l'URL ou passer à une autre source en mettant à jour le fichier de configuration du plugin.", + "news.noRssContent": "Aucun contenu RSS", + "modal.title.preview": "Aperçu de la pièce jointe", + "modal.title.edit": "Modifier la pièce jointe", + "modal.edit": "Modifier", + "modal.save": "Sauvegarder", + "modal.close": "Fermer", + "modal.cancel": "Annuler", + "common.viewMore": "Voir davantage", + "common.guest": "Invité", + "common.template": "Modèle", + "common.latest": "dernier", + "common.more": "davantage", + "greeting.goodMorning": "Bonjour", + "greeting.goodAfternoon": "Bon après-midi", + "greeting.goodEvening": "Bonne soirée", + "sections.exploreAiModels": "Explorer les modèles d'IA", + "sections.exploreAiTemplates": "Explorer les modèles d'IA", + "sections.discoverModels": "Découvrez les modèles et services d'IA disponibles dans votre organisation", + "sections.viewAllModels": "Voir tous les {{count}} modèles", + "sections.viewAllTemplates": "Afficher tous les {{count}} modèles", + "accessibility.close": "fermer", + "accessibility.aiIllustration": "Illustration de l'IA", + "accessibility.aiModelsIllustration": "Illustration des modèles d'IA" + } + }, + "plugin.bulk-import": { + "fr": { + "page.title": "Importation en masse", + "page.subtitle": "Importer des entités vers Red Hat Developer Hub", + "page.addRepositoriesTitle": "Ajouter des référentiels", + "page.importEntitiesTitle": "Importer des entités", + "page.addRepositoriesSubtitle": "Ajoutez des référentiels à Red Hat Developer Hub en 4 étapes", + "page.importEntitiesSubtitle": "Importer vers Red Hat Developer Hub", + "page.typeLink": "Importation en masse", + "sidebar.bulkImport": "Importation en masse", + "permissions.title": "Autorisation requise", + "permissions.addRepositoriesMessage": "Pour ajouter des référentiels, contactez votre administrateur pour qu'il vous donne l'autorisation « bulk.import ».", + "permissions.viewRepositoriesMessage": "Pour afficher les référentiels ajoutés, contactez votre administrateur pour qu'il vous donne l'autorisation « bulk.import ».", + "repositories.addedRepositories": "Dépôts ajoutés", + "repositories.importedEntities": "Entités importées", + "repositories.addedRepositoriesCount": "Dépôts ajoutés ({{count}})", + "repositories.importedEntitiesCount": "Entités importées ({{count}})", + "repositories.noRecordsFound": "Aucun enregistrement trouvé", + "repositories.refresh": "Rafraîchir", + "repositories.import": "Importer", + "repositories.removing": "Suppression...", + "repositories.deleteRepository": "Supprimer le référentiel", + "repositories.removeRepositoryQuestion": "Supprimer {{repoName}} {{repositoryText}} ?", + "repositories.repositoryText": "Dépôt", + "repositories.removeRepositoryWarningScaffolder": "La suppression d’un référentiel efface toutes les informations de tâches de scaffolding.", + "repositories.removeRepositoryWarning": "La suppression d’un référentiel efface toutes les informations associées de la page Catalogue.", + "repositories.removeRepositoryWarningGitlab": "Sa suppression effacera toutes les informations associées de la page Catalogue.", + "repositories.cannotRemoveRepositoryUrl": "Impossible de supprimer le référentiel car l'URL du référentiel est manquante.", + "repositories.unableToRemoveRepository": "Impossible de supprimer le dépôt. {{error}}", + "repositories.removeTooltipDisabled": "Ce référentiel a été ajouté au fichier app-config. Pour le supprimer, modifiez directement le fichier", + "repositories.removeTooltipRepositoryScaffolder": "Supprimer le référentiel et toutes les tâches de scaffolding associées", + "repositories.errorOccuredWhileFetching": "Une erreur s'est produite lors de la récupération de la demande d'extraction", + "repositories.failedToCreatePullRequest": "Échec de la création de la demande d'extraction", + "repositories.errorOccured": "Une erreur s'est produite", + "repositories.editCatalogInfoTooltip": "Modifier la demande d'extraction catalog-info.yaml", + "repositories.viewCatalogInfoTooltip": "Afficher le fichier catalog-info.yaml", + "repositories.pr": "PR", + "status.alreadyImported": "Déjà importé", + "status.added": "Ajouté", + "status.waitingForApproval": "En attente d'approbation", + "status.imported": "Importé", + "errors.prErrorPermissions": "Impossible de créer un nouveau PR en raison d'autorisations insuffisantes. Contactez votre administrateur.", + "errors.catalogInfoExists": "Étant donné que catalog-info.yaml existe déjà dans le référentiel, aucun nouveau PR ne sera créé. Cependant, l'entité sera toujours enregistrée dans la page du catalogue.", + "errors.catalogEntityConflict": "Impossible de créer un nouveau PR en raison d'un conflit d'entité de catalogue.", + "errors.repoEmpty": "Impossible de créer un nouveau PR car le référentiel est vide. Envoyez un commit initial au référentiel.", + "errors.codeOwnersNotFound": "Le fichier CODEOWNERS est manquant dans le référentiel. Ajoutez un fichier CODEOWNERS pour créer un nouveau PR.", + "errors.errorOccurred": "Une erreur s'est produite", + "errors.failedToCreatePullRequest": "Échec de la création de la demande d'extraction", + "validation.componentNameInvalid": "\"{{value}}\" n'est pas valide ; une chaîne contenant des séquences de [a-zA-Z0-9] séparées par l'un des [-_.] est attendue, soit au maximum 63 caractères au total. Pour en savoir plus sur le format de fichier de catalogue, visitez : https://github.com/backstage/backstage/blob/master/docs/architecture-decisions/adr002-default-catalog-file-format.md", + "validation.componentNameRequired": "Le nom du composant est requis", + "validation.entityOwnerRequired": "Le propriétaire de l'entité est requis", + "validation.titleRequired": "Le titre {{approvalTool}} est obligatoire", + "validation.descriptionRequired": "La description de {{approvalTool}} est requise", + "validation.keyValuePairFormat": "Chaque entrée doit avoir une clé et une valeur séparées par deux points.", + "table.headers.name": "Nom", + "table.headers.url": "URL", + "table.headers.repoUrl": "URL du dépôt", + "table.headers.organization": "Organisation", + "table.headers.organizationGroup": "Organisation/groupe", + "table.headers.group": "Groupe", + "table.headers.status": "Statut", + "table.headers.lastUpdated": "Dernière mise à jour", + "table.headers.actions": "Actes", + "table.headers.catalogInfoYaml": "catalogue-info.yaml", + "table.pagination.rows5": "5 lignes", + "table.pagination.rows10": "10 lignes", + "table.pagination.rows20": "20 lignes", + "table.pagination.rows50": "50 lignes", + "table.pagination.rows100": "100 lignes", + "steps.chooseApprovalTool": "Choisissez l'outil d'approbation (GitHub/GitLab) pour la création de PR", + "steps.chooseRepositories": "Choisissez les référentiels que vous souhaitez ajouter", + "steps.chooseItems": "Choisissez les éléments que vous souhaitez importer", + "steps.generateCatalogInfo": "Générer un fichier catalog-info.yaml pour chaque référentiel", + "steps.generateCatalogInfoItems": "Générer un fichier catalog-info.yaml pour chaque élément sélectionné", + "steps.editPullRequest": "Modifier les détails de la demande d'extraction si nécessaire", + "steps.trackStatus": "Suivre l'état d'approbation", + "addRepositories.approvalTool.title": "Outil d'approbation", + "addRepositories.approvalTool.description": "Choisir l'outil d'approbation pour la création de RP", + "addRepositories.approvalTool.tooltip": "L'importation nécessite une approbation. Une fois la demande d'extraction/fusion approuvée, les référentiels/projets seront importés sur la page Catalogue.", + "addRepositories.approvalTool.github": "GitHub", + "addRepositories.approvalTool.gitlab": "GitLab", + "addRepositories.repositoryType.title": "Type de référentiel", + "addRepositories.repositoryType.repository": "Dépôt", + "addRepositories.repositoryType.organization": "Organisation", + "addRepositories.repositoryType.project": "Projet", + "addRepositories.repositoryType.group": "Groupe", + "addRepositories.searchPlaceholder": "Recherche", + "addRepositories.clearSearch": "supprimer la recherche", + "addRepositories.noRepositoriesFound": "Aucun dépôt trouvé", + "addRepositories.allRepositoriesAdded": "Tous les référentiels sont ajoutés", + "addRepositories.noSelection": "Aucun", + "addRepositories.selectRepositories": "Sélectionner les référentiels", + "addRepositories.selectedRepositories": "dépôts", + "addRepositories.selectedProjects": "projets", + "addRepositories.selectedLabel": "Choisi", + "addRepositories.selectedCount": "{{count}} sélectionné", + "addRepositories.addSelected": "Ajouter la sélection", + "addRepositories.generateCatalogInfo": "Générer catalog-info.yaml", + "addRepositories.editPullRequest": "Modifier la demande d'extraction", + "addRepositories.preview": "Aperçu", + "catalogInfo.status.generating": "Générateur", + "catalogInfo.status.notGenerated": "Non généré", + "common.add": "Ajouter", + "common.cancel": "Annuler", + "common.close": "Fermer", + "common.delete": "Supprimer", + "common.edit": "Modifier", + "common.filter": "Filtre", + "common.import": "Importer", + "common.remove": "Supprimer", + "common.save": "Sauvegarder", + "common.select": "Sélectionner", + "common.update": "Mise à jour", + "common.view": "Voir", + "time.daysAgo": "Il y a {{count}} jour(s)", + "time.hoursAgo": "Il y a {{count}} heure(s)", + "time.minutesAgo": "Il y a {{count}} minute(s)", + "time.secondsAgo": "Il y a {{count}} seconde(s)", + "previewFile.readyToImport": "Prêt à importer", + "previewFile.previewFile": "Fichier d'aperçu", + "previewFile.previewFiles": "Aperçu des fichiers", + "previewFile.failedToCreatePR": "Échec de la création du PR", + "previewFile.prCreationUnsuccessful": "La création de PR a échoué pour certains référentiels. Cliquer sur « Modifier » pour voir la raison.", + "previewFile.failedToFetchPR": "Échec de la récupération de la demande d'extraction. Un nouveau YAML a été généré ci-dessous.", + "previewFile.invalidEntityYaml": "L'entité YAML dans votre demande d'extraction n'est pas valide (fichier vide ou apiVersion, kind ou metadata.name manquant). Un nouveau YAML a été généré ci-dessous.", + "previewFile.pullRequestPendingApproval": "Le [{{pullRequestText}}]({{pullRequestUrl}}) est en attente d'approbation", + "previewFile.pullRequestText": "demande d'extraction", + "previewFile.viewRepository": "Afficher le référentiel", + "previewFile.closeDrawer": "Fermez le tiroir", + "previewFile.keyValuePlaceholder": "clé1 : valeur2 ; clé2 : valeur2", + "previewFile.useSemicolonSeparator": "Utilisez un point-virgule pour séparer {{label}}", + "previewFile.preview": "Aperçu", + "previewFile.pullRequest.title": "Demande d'extraction", + "previewFile.pullRequest.mergeRequest": "Demande de fusion", + "previewFile.pullRequest.serviceNowTicket": "Ticket ServiceNow", + "previewFile.pullRequest.details": "{{tool}} détails", + "previewFile.pullRequest.titleLabel": "titre de {{outil}}", + "previewFile.pullRequest.bodyLabel": "corps de {{outil}}", + "previewFile.pullRequest.titlePlaceholder": "Ajouter des fichiers descripteurs d'entités de catalogue Backstage", + "previewFile.pullRequest.bodyPlaceholder": "Un texte descriptif avec prise en charge Markdown", + "previewFile.pullRequest.entityConfiguration": "Configuration de l'entité", + "previewFile.pullRequest.componentNameLabel": "Nom du composant créé", + "previewFile.pullRequest.componentNamePlaceholder": "Nom du composant", + "previewFile.pullRequest.entityOwnerLabel": "Propriétaire de l'entité", + "previewFile.pullRequest.entityOwnerPlaceholder": "groupes et utilisateurs", + "previewFile.pullRequest.entityOwnerHelper": "Sélectionnez un propriétaire dans la liste ou entrez une référence à un groupe ou à un utilisateur", + "previewFile.pullRequest.loadingText": "Chargement des groupes et des utilisateurs", + "previewFile.pullRequest.previewEntities": "Aperçu des entités", + "previewFile.pullRequest.annotations": "Annotations", + "previewFile.pullRequest.labels": "Étiquettes", + "previewFile.pullRequest.spec": "Spécifications", + "previewFile.pullRequest.useCodeOwnersFile": "Utiliser le fichier *CODEOWNERS* comme propriétaire de l'entité", + "previewFile.pullRequest.codeOwnersWarning": "AVERTISSEMENT : cette opération peut échouer si aucun fichier CODEOWNERS n'est trouvé à l'emplacement cible.", + "forms.footer.createServiceNowTicket": "Créer un ticket ServiceNow", + "forms.footer.createServiceNowTickets": "Créer des tickets ServiceNow", + "forms.footer.createPullRequest": "Créer une demande d'extraction", + "forms.footer.createPullRequests": "Créer des demandes d'extraction", + "forms.footer.serviceNowTooltip": "Les fichiers Catalog-info.yaml doivent être générés avant de créer un ticket ServiceNow", + "forms.footer.importTooltip": "Les fichiers Catalog-info.yaml doivent être générés pour l'importation.", + "forms.footer.pullRequestTooltip": "Les fichiers Catalog-info.yaml doivent être générés avant de créer une demande d'extraction", + "tasks.tasksFor": "Tâches pour {{importJobStatusId}}", + "tasks.taskId": "ID de tâche", + "tasks.taskLink": "Lien pour les tâches", + "tasks.viewTask": "Afficher les tâches", + "tasks.loading": "Chargement en cours...", + "tasks.errorFetchingData": "Erreur lors de la récupération des données", + "tasks.taskCancelled": "Tâche annulée", + "tasks.taskCompleted": "Tâche complétée", + "tasks.taskFailed": "Tâche ayant échoué", + "tasks.taskOpen": "Tâche en cours", + "tasks.taskProcessing": "Traitement de la tâche en cours", + "tasks.taskSkipped": "Tâche ignorée" + } + }, + "plugin.global-floating-action-button": { + "fr": { + "fab.create.label": "Créer", + "fab.create.tooltip": "Créer l'entité", + "fab.docs.label": "Docs", + "fab.docs.tooltip": "Documentation", + "fab.apis.label": "APIs", + "fab.apis.tooltip": "Documentation API", + "fab.github.label": "GitHub", + "fab.github.tooltip": "Référentiel GitHub", + "fab.bulkImport.label": "Importation en masse", + "fab.bulkImport.tooltip": "Enregistrer plusieurs référentiel en masse", + "fab.quay.label": "Quay", + "fab.quay.tooltip": "Quay Container Registry", + "fab.menu.tooltip": "Menu" + } + }, + "plugin.global-header": { + "fr": { + "help.tooltip": "Aide", + "help.noSupportLinks": "Aucun lien de support", + "help.noSupportLinksSubtitle": "Votre administrateur doit configurer des liens d’assistance.", + "help.quickStart": "Démarrage rapide", + "help.supportTitle": "Assistance", + "profile.picture": "Photo de profil", + "profile.settings": "Paramètres", + "profile.myProfile": "Mon profil", + "profile.signOut": "Déconnection", + "search.placeholder": "Recherche...", + "search.noResults": "Aucun résultat trouvé", + "search.errorFetching": "Erreur lors de la récupération des résultats", + "applicationLauncher.tooltip": "Lanceur d'applications", + "applicationLauncher.noLinksTitle": "Aucun lien d'application configuré", + "applicationLauncher.noLinksSubtitle": "Configurez les liens d'application dans la configuration du plugin dynamique pour un accès rapide à partir d'ici.", + "applicationLauncher.developerHub": "Centre des développeurs", + "applicationLauncher.rhdhLocal": "RHDH Local", + "applicationLauncher.sections.documentation": "Documentation", + "applicationLauncher.sections.developerTools": "Outils de développement", + "starred.title": "Vos articles favoris", + "starred.removeTooltip": "Supprimer de la liste", + "starred.noItemsTitle": "Aucun élément étoilé pour le moment", + "starred.noItemsSubtitle": "Cliquez sur l'icône étoile à côté du nom d'une entité pour l'enregistrer ici pour un accès rapide.", + "notifications.title": "Notifications", + "notifications.unsupportedDismissOption": "Option de rejet non prise en charge « {{option}} », actuellement prise en charge « none », « session » ou « localstorage » !", + "create.title": "Self-service", + "create.registerComponent.title": "Enregistrer un composant", + "create.registerComponent.subtitle": "Importez-le sur la page du catalogue", + "create.templates.sectionTitle": "Utiliser un modèle", + "create.templates.allTemplates": "Tous les modèles", + "create.templates.errorFetching": "Erreur lors de la récupération des modèles", + "create.templates.noTemplatesAvailable": "Aucun modèle disponible" + } + }, + "plugin.dynamic-home-page": { + "fr": { + "header.welcome": "Content de vous revoir!", + "header.welcomePersonalized": "Bienvenue {{name}} !", + "header.local": "Locale", + "homePage.empty": "Aucune carte de page d'accueil (points de montage) configurée ou trouvée.", + "search.placeholder": "Recherche", + "quickAccess.title": "Accès rapide", + "quickAccess.fetchError": "Impossible de récupérer les données.", + "quickAccess.error": "Erreur inconnue", + "featuredDocs.learnMore": " En savoir plus", + "templates.title": "Explorer les modèles", + "templates.fetchError": "Impossible de récupérer les données.", + "templates.error": "Erreur inconnue", + "templates.empty": "Aucun modèle ajouté pour le moment", + "templates.emptyDescription": "Une fois les modèles ajoutés, cet espace présentera du contenu pertinent adapté à votre expérience.", + "templates.register": "Enregistrer un modèle", + "templates.viewAll": "Afficher tous les {{count}} modèles", + "onboarding.greeting.goodMorning": "Bonjour", + "onboarding.greeting.goodAfternoon": "Bon après-midi", + "onboarding.greeting.goodEvening": "Bonne soirée", + "onboarding.guest": "Invité", + "onboarding.getStarted.title": "Commencer", + "onboarding.getStarted.description": "En savoir plus sur Red Hat Developer Hub.", + "onboarding.getStarted.buttonText": "Lire la documentation", + "onboarding.getStarted.ariaLabel": "Lire la documentation (s'ouvre dans un nouvel onglet)", + "onboarding.explore.title": "Explorer", + "onboarding.explore.description": "Explorer les composants, les API et les modèles.", + "onboarding.explore.buttonText": "Accéder au catalogue", + "onboarding.explore.ariaLabel": "Accéder au catalogue", + "onboarding.learn.title": "Apprendre", + "onboarding.learn.description": "Explorer et développer de nouvelles compétences.", + "onboarding.learn.buttonText": "Accéder aux parcours d'apprentissage", + "onboarding.learn.ariaLabel": "Accéder aux parcours d'apprentissage", + "entities.title": "Explorer votre catalogue de logiciels", + "entities.fetchError": "Impossible de récupérer les données.", + "entities.error": "Erreur inconnue", + "entities.description": "Parcourir les systèmes, les composants, les ressources et les API disponibles dans votre organisation.", + "entities.close": "fermer", + "entities.empty": "Aucun catalogue de logiciels n'a encore été ajouté", + "entities.emptyDescription": "Une fois les catalogues de logiciels ajoutés, cet espace présentera du contenu pertinent adapté à votre expérience.", + "entities.register": "Enregistrer un composant", + "entities.viewAll": "Afficher toutes les {{count}} entités du catalogue" + } + }, + "plugin.lightspeed": { + "fr": { + "page.title": "Lightspeed", + "page.subtitle": "Assistant de développement AI-POWERED", + "prompts.codeReadability.title": "Obtenir de l’aide pour Décrypter le Code", + "prompts.codeReadability.message": "Pourriez-vous me suggérer des techniques qui puissent rendre mon code plus lisible et facile d’entretien?", + "prompts.debugging.title": "Aide Débogage", + "prompts.debugging.message": "Mon application me renvoie une erreur lorsque j’essaie de me connecter à la base de données. Pouvez-vous m’aider à identifier le problème?", + "prompts.developmentConcept.title": "Expliquer un Concept de développement", + "prompts.developmentConcept.message": "Pourriez-vous m’expliquer comment l’architecture des microservices fonctionne et quels sont ses avantages par rapport à un design monolithic ?", + "prompts.codeOptimization.title": "Suggestions d’Optmisation de Code", + "prompts.codeOptimization.message": "Pourriez-vous me suggérer les façons d’optimiser le code pour le rendre plus performant ?", + "prompts.documentation.title": "Récapitulatif de la documentation", + "prompts.documentation.message": "Pourriez-vous résumer la documentation d’implémentation de l’authentification 2.0 dans un app web ?", + "prompts.gitWorkflows.title": "Flux de travail dans Git", + "prompts.gitWorkflows.message": "Je souhaite changer le code sur une autre branche sans perdre mon travail existant. Quelle est la procédure pour ce faire sans utiliser Git ?", + "prompts.testingStrategies.title": "Suggestions de Stratégies pour Tester", + "prompts.testingStrategies.message": "Pourriez-vous me conseiller des stratégies communes pour tester qui puissent rendre mon application robuste et sans erreurs?", + "prompts.sortingAlgorithms.title": "Démystification les Algorithmes de triage", + "prompts.sortingAlgorithms.message": "Pourriez-vous m’expliquer quelle est la différence entre un triage rapide (quicksort) et un triage de regroupement (mergesort), et quand utiliser quoi?", + "prompts.eventDriven.title": "Comprendre l’Architecture basée-événement", + "prompts.eventDriven.message": "Pourriez-vous m’expliquer l’architecture basée-événement et quand il faut l’utiliser pour le développement des logiciels?", + "prompts.tekton.title": "Déployer avec Tekton", + "prompts.tekton.message": "Pourriez-vous m’aider à automatiser le déploiement de mon application en utilisant les pipelines Tekton ?", + "prompts.openshift.title": "Créer un Déploiement Openshift", + "prompts.openshift.message": "Pourriez-vous me guider sur la façon de créer un nouveau développement Openshift pour une application conteneurisée ?", + "prompts.rhdh.title": "Guide de Démarrage de Red Hat Developer Hub", + "prompts.rhdh.message": "Pourriez-vous me guider pour les premières étapes de démarrage avec Developer Hub en tant que développeur, comme explorer le Software Catalog et ajouter mon service ?", + "conversation.delete.confirm.title": "Supprimer cette conversation ?", + "conversation.delete.confirm.message": "Vous ne verrez plus cette conversation ici. Cela supprimera également les activités associées comme les prompts, réponses, et commentaires de votre activité Lightspeed.", + "conversation.delete.confirm.action": "Supprimer", + "conversation.rename.confirm.title": "Renommer la conversation ?", + "conversation.rename.confirm.action": "Renommer", + "conversation.rename.placeholder": "Nom de la conversation", + "conversation.action.error": "Erreur: {{error}}", + "permission.required.title": "Autorisations manquantes", + "permission.required.description": "Pour afficher le plugin lightspeed, veuillez contacter votre administrateur pour qu’il vous donne les permissionslightspeed.chat.read et lightspeed.chat.create .", + "disclaimer.withValidation": "Cette fonctionnalité utilise la technologie AI. Ne pas inclure d’informations personnelles ou toute autre information sensible dans vos entrées de données. Des interactions pourront être utilisées pour améliorer les produits ou services de Red Hat.", + "disclaimer.withoutValidation": "Cette fonctionnalité utilise la technologie AI. Ne pas inclure d’informations personnelles ou toute autre information sensible dans vos entrées de données. Des interactions pourront être utilisées pour améliorer les produits ou services de Red Hat.", + "footer.accuracy.label": "Toujours vérifier le contenu AI généré avant utilisation.", + "footer.accuracy.popover.title": "Vérifier l’exactitude", + "footer.accuracy.popover.description": "Bien que Developer Lightspeed soit orienté sur l’exactitude, il y a toujours possibilité d’erreurs. Il est toujours bon de vérifier les informations critiques à partir de sources de confiance, surtout si c’est crucial pour prendre des décisions ou entreprendre des actions.", + "footer.accuracy.popover.image.alt": "Exemple d’image de note de bas de page popover", + "footer.accuracy.popover.cta.label": "J'ai compris!", + "footer.accuracy.popover.link.label": "En savoir plus", + "common.cancel": "Annuler", + "common.close": "Fermer", + "common.readMore": "En savoir plus", + "common.noSearchResults": "Aucun résultat ne correspond à cette demande", + "menu.newConversation": "Nouvelle Conversation", + "chatbox.header.title": "Developer Lightspeed", + "chatbox.search.placeholder": "Recherche", + "chatbox.provider.other": "Autre", + "chatbox.emptyState.noPinnedChats": "Aucune conversation épinglée", + "chatbox.emptyState.noRecentChats": "Aucune conversation récente", + "chatbox.emptyState.noResults.title": "Aucun résultat trouvé", + "chatbox.emptyState.noResults.body": "Ajuster votre recherche et essayer à nouveau. Vérifier votre orthographe et essayez un terme plus général.", + "chatbox.welcome.greeting": "Hello, {{userName}}", + "chatbox.welcome.description": "Comment puis-je vous aider ?", + "chatbox.message.placeholder": "Envoyer un message et télécharger un fichier JSON, YAML, ou TXT...", + "chatbox.fileUpload.failed": "Le chargement de fichiers a échoué", + "chatbox.fileUpload.infoText": "Types de fichiers pris en charge: .txt, .yaml, and .json. La taille maximale est de 25 MB.", + "aria.chatbotSelector": "Sélecteur Chatbot", + "aria.important": "Important", + "aria.chatHistoryMenu": "Menu de l’historique de conversations", + "aria.closeDrawerPanel": "Fermer le panneau de tiroirs", + "aria.search.placeholder": "Recherche", + "aria.searchPreviousConversations": "Recherche des anciennes conversations", + "aria.resize": "Redimensionnement", + "aria.options.label": "Options", + "aria.scroll.down": "De haut en bas", + "aria.scroll.up": "De bas en haut", + "aria.settings.label": "Options Chatbot", + "modal.edit": "Modifier", + "modal.save": "Sauvegarder", + "modal.close": "Fermer", + "modal.cancel": "Annuler", + "conversation.delete": "Supprimer", + "conversation.rename": "Renommer", + "conversation.addToPinnedChats": "Épingler", + "conversation.removeFromPinnedChats": "Détacher", + "conversation.announcement.userMessage": "Message en provenance de l’utilisateur: {{prompt}}. Message en provenance du Bot en cours de chargement.", + "user.guest": "Invité", + "user.loading": "...", + "tooltip.attach": "Attacher", + "tooltip.send": "Envoyer", + "tooltip.microphone.active": "Cessez d’écouter", + "tooltip.microphone.inactive": "Utilisez le micro", + "button.newChat": "Nouvelle Conversation", + "tooltip.chatHistoryMenu": "Menu de l’historique de conversations", + "tooltip.responseRecorded": "Réponse enregistrée", + "tooltip.backToTop": "De bas en haut", + "tooltip.backToBottom": "De haut en bas", + "tooltip.settings": "Options Chatbot", + "modal.title.preview": "Aperçu de la pièce jointe", + "modal.title.edit": "Modifier la pièce jointe", + "icon.lightspeed.alt": "Icône Lightspeed", + "icon.permissionRequired.alt": "icône d’autorisation requise", + "message.options.label": "Options", + "file.upload.error.alreadyExists": "Le fichier existe déjà", + "file.upload.error.multipleFiles": "Télécharger plus d’un fichier.", + "file.upload.error.unsupportedType": "Type de fichier non pris en charge. Types de fichiers pris en charge: .txt, .yaml, and .json.", + "file.upload.error.fileTooLarge": "Votre taille de fichier est trop grande. Veuillez vous assurer que votre fichier soit inférieur à 25MB.", + "file.upload.error.readFailed": "Impossible de lire le fichier : {{errorMessage}}", + "error.context.fileAttachment": "useFileAttachmentContext doit être dans un FileAttachmentContextProvider", + "feedback.form.title": "Pourquoi avez-vous sélectionnée cette estimation ?", + "feedback.form.textAreaPlaceholder": "Veuillez-nous offrir des commentaires supplémentaires ?", + "feedback.form.submitWord": "Soumettre", + "feedback.tooltips.goodResponse": "Bonne réponse", + "feedback.tooltips.badResponse": "Mauvaise réponse", + "feedback.tooltips.copied": "Copié", + "feedback.tooltips.copy": "Copier", + "feedback.tooltips.listening": "En cours d’écoute", + "feedback.tooltips.listen": "Écouter", + "feedback.quickResponses.positive.helpful": "Information utile", + "feedback.quickResponses.positive.easyToUnderstand": "Facile à comprendre", + "feedback.quickResponses.positive.resolvedIssue": "A pu résoudre mon problème", + "feedback.quickResponses.negative.didntAnswer": "N’a pas répondu à ma question", + "feedback.quickResponses.negative.hardToUnderstand": "Difficile à comprendre", + "feedback.quickResponses.negative.notHelpful": "Peu utile", + "feedback.completion.title": "Commentaire soumis", + "feedback.completion.body": "Nous avons reçu votre réponse. Merci de partager vos commentaires avec nous !", + "conversation.category.pinnedChats": "Épinglé", + "conversation.category.recent": "Récent", + "settings.pinned.enable": "Activer les conversations épinglées", + "settings.pinned.disable": "Désactiver les conversations épinglées", + "settings.pinned.enabled.description": "Les conversation épinglées sont actuellement activées", + "settings.pinned.disabled.description": "Les conversations épinglées sont actuellement désactivées" + } + }, + "plugin.marketplace": { + "fr": { + "header.title": "Extensions", + "header.extensions": "Extensions", + "header.catalog": "Catalogue", + "header.installedPackages": "Paquets installés", + "header.installedPackagesWithCount": "Paquets installés ({{count}})", + "header.pluginsPage": "Plugins", + "header.packagesPage": "Paquets", + "header.collectionsPage": "Collections", + "button.install": "Installer", + "button.uninstall": "Désinstaller", + "button.enable": "Activer", + "button.disable": "Désactiver", + "button.update": "Mise à jour", + "button.save": "Sauvegarder", + "button.close": "Fermer", + "button.viewAll": "Voir tous les plugins", + "button.viewDocumentation": "Voir la documentation", + "button.viewInstalledPlugins": "Afficher les plugins installés ({{count}})", + "button.restart": "Redémarrage requis", + "status.notInstalled": "Non installé", + "status.installed": "Installé", + "status.disabled": "Désactivé", + "status.partiallyInstalled": "Partiellement installé", + "status.updateAvailable": "Mise à jour disponible", + "role.backend": "Backend", + "role.backendModule": "Module backend", + "role.frontend": "L'extrémité avant", + "emptyState.noPluginsFound": "Aucun plugin trouvé", + "emptyState.mustEnableBackend": "Doit activer le plugin backend Extensions", + "emptyState.noPluginsDescription": "Une erreur s'est produite lors du chargement des plugins. Vérifiez votre configuration ou consultez la documentation du plugin pour résoudre le problème. Vous pouvez également explorer d’autres plugins disponibles.", + "emptyState.configureBackend": "Configurez le plugin '@red-hat-developer-hub/backstage-plugin-marketplace-backend'.", + "alert.productionDisabled": "L'installation du plugin est désactivée dans l'environnement de production.", + "alert.installationDisabled": "L'installation du plugin est désactivée.", + "alert.missingDynamicArtifact": "Impossible de gérer ce paquet. Pour activer les actions, un catalogue avec l’ **spec.dynamicArtifact** requis doit être ajouté.", + "alert.missingDynamicArtifactTitle": "Le paquet ne peut pas être modifié", + "alert.missingDynamicArtifactForPlugin": "Impossible de gérer ce plugin. Pour activer les actions, un catalogue avec l’ **spec.dynamicArtifact** requis doit être ajouté.", + "alert.missingDynamicArtifactTitlePlugin": "Le plugin ne peut pas être modifié", + "alert.extensionsExample": "Pour l’activer, ajouter ou modifier la configuration des extensions dans votre fichier de configuration dynamic-plugins.", + "alert.singlePluginRestart": "Le plugin **{{pluginName}}** nécessite un redémarrage du système backend pour terminer l'installation, la mise à jour, l'activation ou la désactivation.", + "alert.multiplePluginRestart": "Vous avez **{{count}}** plugins qui nécessitent un redémarrage de votre système backend pour terminer l'installation, la mise à jour, l'activation ou la désactivation.", + "alert.singlePackageRestart": "Le paquet **{{packageName}}** nécessite un redémarrage du système backend pour terminer d’installer, mettre à jour, activer ou désactiver.", + "alert.multiplePackageRestart": "Vous avez **{{count}}** paquets nécessitant un redémarrge de votre système backend pour terminer d’installer, mettre à jour, activer ou désactiver.", + "alert.restartRequired": "{{count}} plugins installés", + "alert.backendRestartRequired": "Redémarrage du backend requis", + "alert.viewPlugins": "Afficher les plugins", + "alert.viewPackages": "Afficher les paquets", + "search.placeholder": "Recherche", + "search.clear": "Effacer la recherche", + "search.filter": "Filtre", + "search.clearFilter": "Effacer le filtre", + "search.category": "Catégorie", + "search.author": "Auteur", + "search.supportType": "Type de support", + "search.noResults": "Aucun plugin ne correspond à vos critères de recherche", + "search.filterBy": "Filtrer par", + "search.clearFilters": "Effacer les filtres", + "search.noResultsFound": "Aucun résultat trouvé. Ajustez vos filtres et réessayez.", + "common.links": "Links", + "common.by": " par ", + "common.comma": ", ", + "common.noDescriptionAvailable": "aucune description disponible", + "common.readMore": "En savoir plus", + "common.close": "Fermer", + "common.apply": "Appliquer", + "common.couldNotApplyYaml": "Impossible d'appliquer YAML : {{error}}", + "dialog.backendRestartRequired": "Redémarrage du backend requis", + "dialog.packageRestartMessage": "Pour terminer les modifications du paquet, redémarrez votre système backend.", + "dialog.pluginRestartMessage": "Pour terminer les modifications du plugin, redémarrez votre système backend.", + "plugin.description": "Description", + "plugin.documentation": "Documentation", + "plugin.repository": "Dépôt", + "plugin.license": "Licence", + "plugin.version": "Version", + "plugin.author": "Auteur", + "plugin.authors": "Auteurs", + "plugin.tags": "Mots-clés", + "plugin.dependencies": "Dépendances", + "plugin.configuration": "Configuration", + "plugin.installation": "Installation", + "package.name": "Nom du paquet :", + "package.version": "Version:", + "package.dynamicPluginPath": "Chemin du plugin dynamique :", + "package.backstageRole": "Rôle backstage:", + "package.supportedVersions": "Versions prises en charge :", + "package.author": "Auteur:", + "package.support": "Support:", + "package.lifecycle": "Cycle de vie:", + "package.highlights": "Points forts", + "package.about": "À propos", + "package.notFound": "Paquet {{namespace}}/{{name}} introuvable !", + "package.notAvailable": "Paquet {{name}} non disponible", + "package.ensureCatalogEntity": "Veillez à ce que l’entité de catalogue existe pour ce paquet.", + "table.packageName": "Nom du paquet", + "table.version": "Version", + "table.role": "Rôle", + "table.supportedVersion": "Version prise en charge", + "table.status": "Statut", + "table.name": "Nom", + "table.action": "Action", + "table.description": "Description", + "table.versions": "Versions", + "table.plugins": "Plugins", + "table.packages": "Paquets", + "table.pluginsCount": "Plugins ({{count}})", + "table.packagesCount": "Paquets ({{count}})", + "table.pluginsTable": "Tableau des plugins", + "installedPackages.table.title": "Paquets installés ({{count}})", + "installedPackages.table.searchPlaceholder": "Recherche", + "installedPackages.table.columns.name": "Nom", + "installedPackages.table.columns.packageName": "nom du paquet npm", + "installedPackages.table.columns.role": "Rôle", + "installedPackages.table.columns.version": "Version", + "installedPackages.table.columns.actions": "Actes", + "installedPackages.table.tooltips.packageProductionDisabled": "Le paquet ne peut pas être géré en environnement de production.", + "installedPackages.table.tooltips.installationDisabled": "Le paquet ne peut pas être géré car le plugin d’installation est désactivé. Pour l’activer, ajouter ou modifier la configuration des extensions dans votre fichier de configuration dynamic-plugins.", + "installedPackages.table.tooltips.enableActions": "Pour activer les actions, ajoutez une entité de catalogue pour ce paquet", + "installedPackages.table.tooltips.noDownloadPermissions": "Vous n’avez pas l’autorisation de télécharger la configuration. Contactez votre administrateur pour demander un accès ou une assistance.", + "installedPackages.table.tooltips.noEditPermissions": "Vous n’avez pas la permission de modifier la configuration. Contactez votre administrateur pour demander un accès ou une assistance.", + "installedPackages.table.tooltips.noTogglePermissions": "Vous n’avez pas la permission d’activer ou de désactiver les paquets. Contactez votre administrateur pour demander un accès ou une assistance.", + "installedPackages.table.tooltips.editPackage": "Modifier la configuration du paquet", + "installedPackages.table.tooltips.downloadPackage": "Télécharger la configuration du paquet", + "installedPackages.table.tooltips.enablePackage": "Activer le paquet", + "installedPackages.table.tooltips.disablePackage": "Désactiver le paquet", + "installedPackages.table.emptyMessages.noResults": "Aucun résultat trouvé. Essayez un autre terme de recherche.", + "installedPackages.table.emptyMessages.noRecords": "Aucun enregistrement à afficher", + "actions.install": "Installer", + "actions.view": "Voir", + "actions.edit": "Modifier", + "actions.enable": "Activer", + "actions.disable": "Désactiver", + "actions.actions": "Actes", + "actions.editConfiguration": "Modifier", + "actions.pluginConfigurations": "Configurations des plugins", + "actions.packageConfiguration": "Configuration du paquet", + "actions.pluginCurrentlyEnabled": "Plugin actuellement activé", + "actions.pluginCurrentlyDisabled": "Plugin actuellement désactivé", + "actions.packageCurrentlyEnabled": "Paquet actuellement activé", + "actions.packageCurrentlyDisabled": "Paquet actuellement désactivé", + "actions.installTitle": "Installer {{displayName}}", + "actions.editTitle": "Modifier les configurations {{displayName}}", + "metadata.by": " par ", + "metadata.comma": ", ", + "metadata.pluginNotFound": "Plugin {{name}} non trouvé !", + "metadata.pluginNotAvailable": "Plugin {{name}} non disponible", + "metadata.ensureCatalogEntityPlugin": "Veillez à ce que l’entité de catalogue existe pour ce paquet.", + "metadata.highlights": "Points forts", + "metadata.about": "À propos", + "metadata.publisher": "Éditeur", + "metadata.supportProvider": "Fournisseur de support", + "metadata.entryName": "Nom de l’entrée", + "metadata.bySomeone": "par quelqu’un", + "metadata.category": "Catégorie", + "metadata.versions": "Versions", + "metadata.backstageCompatibility": "Version de compatibilité backstage", + "supportTypes.certifiedBy": "Certifié par {{value}} ({{count}})", + "supportTypes.verifiedBy": "Vérifié par {{value}} ({{count}})", + "supportTypes.customPlugins": "Plugins personnalisés ({{count}})", + "collection.kubernetes": "Kubernetes", + "collection.monitoring": "Surveillance", + "collection.security": "Sécurité", + "collection.viewMore": "Voir davantage", + "collection.pluginCount": "{{count}} plugins", + "collection.featured.title": "Plugins en vedette", + "collection.featured.description": "Une collection organisée de plugins recommandés pour la plupart des utilisateurs", + "install.title": "Installer le plugin", + "install.configurationRequired": "Configuration requise", + "install.optional": "Facultatif", + "install.required": "Requis", + "install.selectPackages": "Sélectionnez les paquets à installer", + "install.allPackages": "Tous les paquets", + "install.customConfiguration": "Configuration personnalisée", + "install.installProgress": "Installation...", + "install.success": "Plugin installé avec succès", + "install.error": "Échec de l'installation du plugin", + "install.installFrontend": "Installer le plugin frontal", + "install.installBackend": "Installer le plugin back-end", + "install.installTemplates": "Installer des modèles de logiciels", + "install.installationInstructions": "Instructions d'installation", + "install.download": "Télécharger", + "install.examples": "Exemples", + "install.cancel": "Annuler", + "install.reset": "Réinitialiser", + "install.pluginTabs": "Onglets de plugins", + "install.settingUpPlugin": "Configuration du plugin", + "install.aboutPlugin": "À propos du plugin", + "install.pluginUpdated": "Plugin mis à jour", + "install.pluginInstalled": "Plugin installé", + "install.instructions": "Instructions", + "install.editInstructions": "Modifier les instructions", + "install.back": "Retour", + "install.packageUpdated": "Paquet mis à jour", + "install.packageEnabled": "Paquet activé", + "install.packageDisabled": "Paquet non activé", + "install.pluginEnabled": "Plugin activé", + "install.pluginDisabled": "Plugin non activé", + "install.errors.missingPluginsList": "Contenu de l'éditeur non valide : liste des « plugins » manquante", + "install.errors.missingPackageItem": "Contenu de l'éditeur non valide : élément de paquet manquant", + "install.errors.missingPackageField": "Contenu de l'éditeur non valide : champ « package » manquant dans l'élément", + "install.errors.failedToSave": "Échec de la sauvegarde", + "loading": "Chargement en cours...", + "error": "Une erreur s'est produite", + "retry": "Réessayer", + "errors.missingConfigFile": "Fichier de configuration manquant", + "errors.missingConfigMessage": "{{message}}. Vous devez l'ajouter à votre app-config.yaml si vous souhaitez activer cet outil. Modifiez le fichier app-config.yaml comme indiqué dans l'exemple ci-dessous :", + "errors.invalidConfigFile": "Fichier de configuration non valide", + "errors.invalidConfigMessage": "Échec du chargement de « extensions.installation.saveToSingleFile.file ». {{message}}. Fournissez une configuration d'installation valide si vous souhaitez activer cet outil. Modifiez votre fichier dynamic-plugins.yaml comme indiqué dans l'exemple ci-dessous :", + "errors.fileNotExists": "Le fichier de configuration est incorrect, mal orthographié ou n'existe pas", + "errors.fileNotExistsMessage": "{{message}}. Veuillez revérifier le nom de fichier spécifié dans votre app-config.yaml si vous souhaitez activer cet outil comme indiqué dans l'exemple ci-dessous :", + "errors.unknownError": "Erreur lors de la lecture du fichier de configuration. ", + "tooltips.productionDisabled": "L'installation du plugin est désactivée dans l'environnement de production.", + "tooltips.extensionsDisabled": "L'installation du plugin est désactivée. Pour l’activer, ajouter ou modifier la configuration des extensions dans votre fichier de configuration dynamic-plugins.", + "tooltips.noPermissions": "Vous n'avez pas l'autorisation d'installer des plugins ou d'afficher leurs configurations. Contactez votre administrateur pour demander un accès ou une assistance.", + "tooltips.missingDynamicArtifact": "Impossible de gérer ce {{type}}. Pour activer les actions, un catalogue avec le spec.dynamicArtifact requis doit être ajouté.", + "aria.openPlugin": "Ouvrir le plugin {{name}}", + "aria.closeDialog": "Fermer la boîte de dialogue", + "aria.expandSection": "Développer la section", + "aria.collapseSection": "Réduire la section", + "aria.sortBy": "Trier par {{field}}", + "aria.filterBy": "Filtrer par {{field}}", + "badges.certified": "Certifié", + "badges.certifiedBy": "Certifié par {{provider}}", + "badges.verified": "Vérifié", + "badges.verifiedBy": "Vérifié par {{provider}}", + "badges.customPlugin": "Plugin personnalisé", + "badges.stableAndSecured": "Stable et sécurisé par {{provider}}", + "badges.generallyAvailable": "Généralement disponible (GA)", + "badges.gaAndSupportedBy": "Généralement disponible (GA) et pris en charge par {{provider}}", + "badges.gaAndSupported": "Généralement disponible (GA) et pris en charge", + "badges.productionReadyBy": "Prêt pour la production et pris en charge par {{provider}}", + "badges.productionReady": "Prêt pour la production et pris en charge", + "badges.communityPlugin": "Plugin communautaire", + "badges.openSourceNoSupport": "Plugins open source, pas de support officiel", + "badges.techPreview": "Aperçu technique (TP)", + "badges.pluginInDevelopment": "Plugin toujours en développement", + "badges.devPreview": "Aperçu du développement (DP)", + "badges.earlyStageExperimental": "Un plugin expérimental en phase de démarrage", + "badges.addedByAdmin": "Plugins ajoutés par l'administrateur" + } + }, + "plugin.orchestrator": { + "fr": { + "page.title": "Orchestrateur de flux de travail", + "page.tabs.workflows": "Flux de travail", + "page.tabs.allRuns": "Toutes les exécutions", + "page.tabs.workflowDetails": "Détails du flux de travail", + "page.tabs.workflowRuns": "Le flux de travail s'exécute", + "table.title.workflows": "Flux de travail", + "table.title.allRuns": "Toutes les courses ({{count}})", + "table.title.allWorkflowRuns": "Exécutions du workflow ({{count}})", + "table.headers.name": "Nom", + "table.headers.runStatus": "État d'exécution", + "table.headers.started": "Commencé", + "table.headers.status": "Statut", + "table.headers.workflowStatus": "Statut du flux de travail", + "table.headers.duration": "Durée", + "table.headers.description": "Description", + "table.headers.lastRun": "Dernière course", + "table.headers.lastRunStatus": "Statut de la dernière exécution", + "table.headers.workflowName": "Nom du flux de travail", + "table.actions.run": "Exécution", + "table.actions.viewRuns": "Voir les exécutions", + "table.actions.viewInputSchema": "Afficher le schéma d'entrée", + "table.status.running": "En cours d'exécution", + "table.status.failed": "Échoué", + "table.status.completed": "Complété", + "table.status.aborted": "Avorté", + "table.status.pending": "En attente", + "table.status.active": "Actif", + "table.filters.status": "Statut", + "table.filters.started": "Commencé", + "table.filters.startedOptions.today": "Aujourd'hui", + "table.filters.startedOptions.yesterday": "Hier", + "table.filters.startedOptions.last7days": "Les 7 derniers jours", + "table.filters.startedOptions.thisMonth": "Ce mois-ci", + "workflow.details": "Détails", + "workflow.definition": "Définition du flux de travail", + "workflow.progress": "Progression du flux de travail", + "workflow.status.available": "Disponible", + "workflow.status.unavailable": "Non disponible", + "workflow.fields.workflow": "Flux de travail", + "workflow.fields.workflowStatus": "Statut du flux de travail", + "workflow.fields.runStatus": "État d'exécution", + "workflow.fields.duration": "Durée", + "workflow.fields.description": "Description", + "workflow.fields.started": "Commencé", + "workflow.fields.workflowId": "ID d'exécution", + "workflow.fields.workflowIdCopied": "ID d'exécution copié dans le presse-papiers", + "workflow.errors.retriggerFailed": "Échec du re-déclenchement : {{reason}}", + "workflow.errors.abortFailed": "Échec de l'abandon : l'exécution a déjà été terminée.", + "workflow.errors.abortFailedWithReason": "Échec de l'abandon : {{reason}}", + "workflow.errors.failedToLoadDetails": "Échec du chargement des détails de l'ID de workflow : {{id}}", + "workflow.messages.areYouSureYouWantToRunThisWorkflow": "Êtes-vous sûr de vouloir exécuter ce workflow ?", + "workflow.messages.userNotAuthorizedExecute": "L'utilisateur n'est pas autorisé à exécuter le workflow.", + "workflow.messages.workflowDown": "Le flux de travail est actuellement en panne ou dans un état d'erreur. L'exécuter maintenant peut échouer ou produire des résultats inattendus.", + "workflow.buttons.run": "Exécution", + "workflow.buttons.runWorkflow": "Exécuter le flux de travail", + "workflow.buttons.runAgain": "Courir à nouveau", + "workflow.buttons.running": "En cours d'exécution", + "workflow.buttons.fromFailurePoint": "Du point de défaillance", + "workflow.buttons.runFailedAgain": "L'exécution a échoué à nouveau", + "run.title": "Exécuter le flux de travail", + "run.pageTitle": "{{processName}} exécuter", + "run.variables": "Variables d'exécution", + "run.inputs": "Entrées", + "run.results": "Résultats", + "run.abort.title": "Abandonner l’exécution du workflow ?", + "run.abort.button": "Avorter", + "run.abort.warning": "L'abandon arrêtera immédiatement toutes les étapes en cours et en attente. Tout travail en cours sera perdu.", + "run.abort.completed.title": "Exécution terminée", + "run.abort.completed.message": "Il n'est pas possible d'interrompre l'exécution car elle est déjà terminée.", + "run.status.completed": "Exécution terminée", + "run.status.failed": "L'exécution a échoué {{time}}", + "run.status.aborted": "L'exécution a été interrompue", + "run.status.completedWithMessage": "Exécution terminée {{time}} avec message", + "run.status.failedAt": "L'exécution a échoué {{time}}", + "run.status.completedAt": "Exécution terminée {{time}}", + "run.status.running": "Le flux de travail est en cours d'exécution. Démarré {{time}}", + "run.status.runningWaitingAtNode": "Le workflow est en cours d'exécution – en attente au nœud {{node}} depuis {{formattedTime}}", + "run.status.workflowIsRunning": "Le flux de travail est en cours d'exécution. Démarré {{time}}", + "run.status.noAdditionalInfo": "Le flux de travail n'a fourni aucune information supplémentaire sur le statut.", + "run.status.resultsWillBeDisplayedHereOnceTheRunIsComplete": "Les résultats seront affichés ici une fois l’exécution terminée.", + "run.retrigger": "Re-déclencher", + "run.viewVariables": "Afficher les variables", + "run.suggestedNextWorkflow": "Prochain flux de travail suggéré", + "run.suggestedNextWorkflows": "Prochains flux de travail suggérés", + "tooltips.completed": "Complété", + "tooltips.active": "Actif", + "tooltips.aborted": "Avorté", + "tooltips.suspended": "Suspendu", + "tooltips.pending": "En attente", + "tooltips.workflowDown": "Le flux de travail est actuellement interrompu ou dans un état d'erreur", + "tooltips.userNotAuthorizedAbort": "l'utilisateur n'est pas autorisé à interrompre le flux de travail", + "tooltips.userNotAuthorizedExecute": "utilisateur non autorisé à exécuter le workflow", + "messages.noDataAvailable": "Aucune donnée disponible", + "messages.noVariablesFound": "Aucune variable trouvée pour cette exécution.", + "messages.noInputSchemaWorkflow": "Aucun schéma d'entrée n'est défini pour ce workflow.", + "messages.workflowInstanceNoInputs": "L'instance de workflow n'a aucune entrée", + "messages.missingJsonSchema.title": "Schéma JSON manquant pour le formulaire de saisie", + "messages.missingJsonSchema.message": "Ce workflow n'a pas de schéma JSON défini pour la validation des entrées. Vous pouvez toujours exécuter le workflow, mais la validation des entrées sera limitée.", + "messages.additionalDetailsAboutThisErrorAreNotAvailable": "Des détails supplémentaires sur cette erreur ne sont pas disponibles", + "common.close": "Fermer", + "common.cancel": "Annuler", + "common.execute": "Exécuter", + "common.details": "Détails", + "common.links": "Links", + "common.values": "Valeurs", + "common.back": "Retour", + "common.run": "Exécution", + "common.next": "Suivant", + "common.review": "Revue", + "common.unavailable": "---", + "stepperObjectField.error": "Le champ d'objet Stepper n'est pas pris en charge pour les schémas qui ne contiennent pas de propriétés", + "formDecorator.error": "Le décorateur de formulaire doit fournir des données contextuelles.", + "aria.close": "fermer" + } + }, + "plugin.quickstart": { + "fr": { + "header.title": "Commençons par vous familiariser avec Developer Hub", + "header.subtitle": "Nous vous guiderons à travers quelques étapes rapides", + "steps.setupAuthentication.title": "Configurer l'authentification", + "steps.setupAuthentication.description": "Configurez des informations de connexion sécurisées pour protéger votre compte contre tout accès non autorisé.", + "steps.setupAuthentication.ctaTitle": "En savoir plus", + "steps.configureRbac.title": "Configurer RBAC", + "steps.configureRbac.description": "Attribuez des rôles et des autorisations pour contrôler qui peut afficher, créer ou modifier des ressources, garantissant ainsi une collaboration sécurisée et efficace.", + "steps.configureRbac.ctaTitle": "Gérer l'accès", + "steps.configureGit.title": "Configurer Git", + "steps.configureGit.description": "Connectez vos fournisseurs Git, tels que GitHub pour gérer le code, automatiser les flux de travail et intégrer les fonctionnalités de la plateforme.", + "steps.configureGit.ctaTitle": "En savoir plus", + "steps.managePlugins.title": "Gérer les plugins", + "steps.managePlugins.description": "Parcourez et installez des extensions pour ajouter des fonctionnalités, vous connecter à des outils externes et personnaliser votre expérience.", + "steps.managePlugins.ctaTitle": "Explorer les plugins", + "steps.importApplication.title": "Demande d'importation", + "steps.importApplication.description": "Importez votre code et vos services existants dans le catalogue pour les organiser et y accéder via votre portail de développeur.", + "steps.importApplication.ctaTitle": "Importer", + "steps.learnAboutCatalog.title": "En savoir plus sur le catalogue", + "steps.learnAboutCatalog.description": "Découvrir tous les composants logiciels, services et API, et affichez leurs propriétaires et leur documentation.", + "steps.learnAboutCatalog.ctaTitle": "Voir le catalogue", + "steps.exploreSelfServiceTemplates.title": "Explorer les modèles en libre-service", + "steps.exploreSelfServiceTemplates.description": "Utiliser nos modèles en libre-service pour configurer rapidement de nouveaux projets, services ou documentations.", + "steps.exploreSelfServiceTemplates.ctaTitle": "Explorer les modèles", + "steps.findAllLearningPaths.title": "Trouver tous les Learning Paths", + "steps.findAllLearningPaths.description": "Intégrez l’apprentissage en ligne personnalisé dans vos flux de travail avec Learning Paths pour accélérer l’intégration, combler les lacunes en matière de compétences et promouvoir les meilleures pratiques.", + "steps.findAllLearningPaths.ctaTitle": "Voir Learning Paths", + "button.quickstart": "Démarrage rapide", + "button.openQuickstartGuide": "Ouvrir le guide de démarrage rapide", + "button.closeDrawer": "Fermer le tiroir", + "button.gotIt": "J'ai compris!", + "footer.progress": "{{progress}}% de progrès", + "footer.notStarted": "Non démarré", + "footer.hide": "Cacher", + "content.emptyState.title": "Le contenu de démarrage rapide n'est pas disponible pour votre rôle.", + "item.expandAriaLabel": "Développer les détails de {{title}}", + "item.collapseAriaLabel": "Réduire les détails de {{title}}", + "item.expandButtonAriaLabel": "Développer l'élément", + "item.collapseButtonAriaLabel": "Réduire l'élément", + "dev.pageTitle": "Page de test du plugin de démarrage rapide", + "dev.pageDescription": "Ceci est une page de test pour le plugin Quickstart. Utilisez les boutons ci-dessous pour interagir avec le tiroir de démarrage rapide.", + "dev.drawerControls": "Commandes des tiroirs", + "dev.currentState": "État actuel du tiroir : {{state}}", + "dev.stateOpen": "Ouvrir", + "dev.stateClosed": "Fermé", + "dev.instructions": "Instructions", + "dev.step1": "1. Cliquez sur « Ouvrir le guide de démarrage rapide » pour ouvrir le tiroir", + "dev.step2": "2. Parcourez les étapes de démarrage rapide", + "dev.step3": "3. Testez le suivi de la progression en complétant les étapes", + "dev.step4": "4. Le tiroir peut être fermé à l'aide du bouton de fermeture ou des commandes du tiroir", + "dev.step5": "5. La progression est automatiquement enregistrée dans le stockage local" + } + }, + "plugin.scorecard": { + "fr": { + "emptyState.title": "Aucune carte de score n'a encore été ajoutée", + "emptyState.description": "Les tableaux de bord vous aident à surveiller l’état des composants en un coup d’œil. Pour commencer, explorez notre documentation pour obtenir des instructions de configuration.", + "emptyState.button": "Voir la documentation", + "emptyState.altText": "Pas de tableau de bord", + "permissionRequired.title": "Autorisations manquantes", + "permissionRequired.description": "Pour afficher le plugin Scorecard, contactez votre administrateur pour lui accorder l'autorisation {{permission}}.", + "permissionRequired.button": "En savoir plus", + "permissionRequired.altText": "Autorisation requise", + "errors.entityMissingProperties": "Entité manquant les propriétés requises pour la recherche dans la fiche d'évaluation", + "errors.invalidApiResponse": "Format de réponse non valide de l'API de scorecard", + "errors.fetchError": "Erreur lors de la récupération des tableaux de bord : {{error}}", + "errors.metricDataUnavailable": "Données métriques indisponibles", + "errors.invalidThresholds": "Seuils invalides", + "metric.github.open_prs.title": "GitHub ouvre des PR", + "metric.github.open_prs.description": "Nombre actuel de requêtes d'extraction ouvertes pour un référentiel GitHub donné.", + "metric.jira.open_issues.title": "Jira ouvre des tickets bloquants", + "metric.jira.open_issues.description": "Met en évidence le nombre de problèmes critiques et bloquants actuellement ouverts dans Jira.", + "thresholds.success": "Succès", + "thresholds.warning": "Attention", + "thresholds.error": "Erreur", + "metric.github.open-prs.title": "GitHub ouvre des PR", + "metric.github.open-prs.description": "Nombre actuel de requêtes d'extraction ouvertes pour un référentiel GitHub donné.", + "metric.jira.open-issues.title": "Jira ouvre des tickets bloquants", + "metric.jira.open-issues.description": "Met en évidence le nombre de problèmes critiques et bloquants actuellement ouverts dans Jira." + } + }, + "plugin.translations-test": { + "fr": { + "page.title": "Plugin de test de traductions", + "page.subtitle": "Un plugin pour tester les fonctionnalités de traduction et les fonctionnalités d'i18next", + "essentials.key": "valeur de la clé", + "essentials.look.deep": "valeur look deep", + "interpolation.key": "{{what}} est {{how}}", + "interpolation.nested.key": "{{what}} est {{how.value}}", + "interpolation.complex.message": "Voici un {{link}}.", + "interpolation.complex.linkText": "lien", + "formatting.intlNumber": "Certains {{val, number}}", + "formatting.intlNumberWithOptions": "Certains {{val, number(minimumFractionDigits: 2)}}", + "formatting.intlDateTime": "Le {{val, datetime}}", + "formatting.intlRelativeTime": "Lorem {{val, relativetime}}", + "formatting.intlRelativeTimeWithOptions": "Lorem {{val, relativetime(quarter)}}", + "formatting.intlRelativeTimeWithOptionsExplicit": "Lorem {{val, relativetime(range: quarter; style: narrow;)}}", + "plurals.key_zero": "zéro", + "plurals.key_one": "un", + "plurals.key_two": "deux", + "plurals.key_few": "peu", + "plurals.key_many": "plusieurs", + "plurals.key_other": "autre", + "plurals.keyWithCount_one": "{{count}} article", + "plurals.keyWithCount_other": "{{count}} articles", + "context.friend": "Un ami", + "context.friend_male": "Un petit ami", + "context.friend_female": "Une petite amie", + "objects.tree.res": "a ajouté {{something}}" + } + }, + "plugin.translations": { + "fr": { + "page.title": "Traductions", + "page.subtitle": "Gérer et afficher les traductions chargées", + "table.title": "Traductions chargées ({{count}})", + "table.headers.refId": "ID de réf", + "table.headers.key": "Clé", + "table.options.pageSize": "Articles par page", + "table.options.pageSizeOptions": "Afficher {{count}} éléments", + "export.title": "Traductions", + "export.downloadButton": "Télécharger les traductions par défaut (anglais)", + "export.filename": "traductions-{{timestamp}}.json", + "common.loading": "Chargement en cours...", + "common.error": "Une erreur s'est produite", + "common.noData": "Aucune donnée disponible", + "common.refresh": "Rafraîchir", + "language.displayFormat": "{{displayName}} ({{code}})" + } + } +} \ No newline at end of file diff --git a/translations/rhdh-plugins-reference-2025-12-05-it-C.json b/translations/rhdh-plugins-reference-2025-12-05-it-C.json new file mode 100644 index 0000000000..771ef4dd5f --- /dev/null +++ b/translations/rhdh-plugins-reference-2025-12-05-it-C.json @@ -0,0 +1,1009 @@ +{ + "plugin.adoption-insights": { + "it": { + "page.title": "Adoption Insights", + "header.title": "Adoption Insights", + "header.dateRange.today": "Oggi", + "header.dateRange.lastWeek": "La settimana scorsa", + "header.dateRange.lastMonth": "Il mese scorso", + "header.dateRange.last28Days": "Ultimi 28 giorni", + "header.dateRange.lastYear": "L'anno scorso", + "header.dateRange.dateRange": "Intervallo di date...", + "header.dateRange.cancel": "Cancella", + "header.dateRange.ok": "OK", + "header.dateRange.defaultLabel": "Ultimi 28 giorni", + "header.dateRange.title": "Intervallo di date", + "header.dateRange.startDate": "Data di inizio", + "header.dateRange.endDate": "Data di fine", + "activeUsers.title": "Utenti attivi", + "activeUsers.averagePrefix": "Il conteggio del picco medio di utenti attivi era", + "activeUsers.averageText": "{{count}} per {{period}}", + "activeUsers.averageSuffix": " per questo periodo.", + "activeUsers.hour": "ora", + "activeUsers.day": "giorno", + "activeUsers.week": "settimana", + "activeUsers.month": "mese", + "activeUsers.legend.newUsers": "Nuovi utenti", + "activeUsers.legend.returningUsers": "Utenti di ritorno", + "templates.title": "Modelli più popolari", + "templates.topNTitle": "I {{count}} modelli più popolari", + "templates.allTitle": "Tutti i modelli", + "catalogEntities.title": "Entità del catalogo più popolari", + "catalogEntities.topNTitle": "Le {{count}} entità del catalogo più popolari", + "catalogEntities.allTitle": "Tutte le entità del catalogo", + "plugins.title": "I plugin più popolari", + "plugins.topNTitle": "I {{count}} plugin più popolari", + "plugins.allTitle": "Tutti i plugin", + "techDocs.title": "TechDocs più popolari", + "techDocs.topNTitle": "I {{count}} TechDocs più popolari", + "techDocs.allTitle": "Tutti i TechDocs", + "searches.title": "Ricerche più popolari", + "searches.totalCount": "{{count}} ricerche", + "searches.averagePrefix": "Il conteggio medio delle ricerche era", + "searches.averageText": "{{count}} per {{period}}", + "searches.averageSuffix": " per questo periodo.", + "searches.hour": "ora", + "searches.day": "giorno", + "searches.week": "settimana", + "searches.month": "mese", + "users.title": "Numero totale di utenti", + "users.haveLoggedIn": "registrati", + "users.loggedInUsers": "Utenti registrati", + "users.licensed": "Con licenza", + "users.licensedNotLoggedIn": "Con licenza (non registrato)", + "users.ofTotal": "di {{totale}}", + "users.tooltip": "Imposta il numero di utenti con licenza in app-config.yaml", + "table.headers.name": "Nome", + "table.headers.kind": "Tipo", + "table.headers.lastUsed": "Ultimo utilizzo", + "table.headers.views": "Visualizzazioni", + "table.headers.executions": "Esecuzioni", + "table.headers.trend": "Tendenza", + "table.headers.entity": "Entità", + "table.pagination.topN": "{{count}} più popolare", + "filter.all": "Tutto", + "filter.selectKind": "Selezionare il tipo", + "common.noResults": "Nessun risultato per questo intervallo di date.", + "common.readMore": "Per saperne di più", + "common.exportCSV": "Esporta CSV", + "common.downloading": "Scaricamento in corso...", + "common.today": "Oggi", + "common.yesterday": "Ieri", + "common.numberOfSearches": "Numero di ricerche", + "common.filteredBy": "filtrato da", + "common.invalidDateFormat": "Formato data non valido", + "common.csvFilename": "active_users", + "permission.title": "Autorizzazioni mancanti", + "permission.description": "Per visualizzare il plugin \"Adoption Insights\", richiedere all'amministratore le autorizzazioni adoption-insights.events.read." + } + }, + "plugin.ai-experience": { + "it": { + "page.title": "Esperienza di intelligenza artificiale", + "page.subtitle": "Esplora modelli, server, notizie e risorse di apprendimento sull'intelligenza artificiale", + "learn.getStarted.title": "Inizia", + "learn.getStarted.description": "Scopri di più su Red Hat Developer Hub.", + "learn.getStarted.cta": "Vai a Documenti tecnici", + "learn.explore.title": "Esplora", + "learn.explore.description": "Esplora modelli e server di intelligenza artificiale.", + "learn.explore.cta": "Vai al Catalogo", + "learn.learn.title": "Apprendi", + "learn.learn.description": "Esplora e sviluppa nuove competenze sull'intelligenza artificiale.", + "learn.learn.cta": "Vai ai Percorsi di apprendimento", + "news.pageTitle": "Notizie sull'intelligenza artificiale", + "news.fetchingRssFeed": "Recupero del feed RSS", + "news.noContentAvailable": "Nessun contenuto disponibile", + "news.noContentDescription": "Non è stato possibile ottenere contenuti dal feed RSS. Ricontrollare l'URL o passare a un'origine diversa aggiornando il file di configurazione del plugin.", + "news.noRssContent": "Nessun contenuto RSS", + "modal.title.preview": "Anteprima allegato", + "modal.title.edit": "Modifica allegato", + "modal.edit": "Modifica", + "modal.save": "Salva", + "modal.close": "Chiudi", + "modal.cancel": "Cancella", + "common.viewMore": "Visualizza altro", + "common.guest": "Ospite", + "common.template": "Modello", + "common.latest": "ultimo", + "common.more": "altro", + "greeting.goodMorning": "Buon giorno", + "greeting.goodAfternoon": "Buon pomeriggio", + "greeting.goodEvening": "Buona sera", + "sections.exploreAiModels": "Esplora i modelli di intelligenza artificiale", + "sections.exploreAiTemplates": "Esplora i modelli di intelligenza artificiale", + "sections.discoverModels": "Scopri i modelli e i servizi di intelligenza artificiale disponibili nella tua organizzazione", + "sections.viewAllModels": "Visualizza tutti i {{count}} modelli", + "sections.viewAllTemplates": "Visualizza tutti i {{count}} modelli", + "accessibility.close": "chiudi", + "accessibility.aiIllustration": "Illustrazione dell'intelligenza artificiale", + "accessibility.aiModelsIllustration": "Illustrazione dei modelli di intelligenza artificiale" + } + }, + "plugin.bulk-import": { + "it": { + "page.title": "Importazione in blocco", + "page.subtitle": "Importa entità in Red Hat Developer Hub", + "page.addRepositoriesTitle": "Aggiungere repository", + "page.importEntitiesTitle": "Importare entità", + "page.addRepositoriesSubtitle": "Aggiungere repository a Red Hat Developer Hub in 4 passaggi", + "page.importEntitiesSubtitle": "Importa in Red Hat Developer Hub", + "page.typeLink": "Importazione in blocco", + "sidebar.bulkImport": "Importazione in blocco", + "permissions.title": "Autorizzazione richiesta", + "permissions.addRepositoriesMessage": "Per aggiungere repository, contattare l'amministratore per ottenere l'autorizzazione 'bulk.import'.", + "permissions.viewRepositoriesMessage": "Per visualizzare i repository aggiunti, contattare l'amministratore per ottenere l'autorizzazione 'bulk.import'.", + "repositories.addedRepositories": "Repository aggiunti", + "repositories.importedEntities": "Entità importate", + "repositories.addedRepositoriesCount": "Repository aggiunti ({{count}})", + "repositories.importedEntitiesCount": "Entità importate ({{count}})", + "repositories.noRecordsFound": "Nessun record trovato", + "repositories.refresh": "Aggiorna", + "repositories.import": "Importa", + "repositories.removing": "Rimozione in corso...", + "repositories.deleteRepository": "Elimina repository", + "repositories.removeRepositoryQuestion": "Eliminare {{repoName}} {{repositoryText}}?", + "repositories.repositoryText": "repository", + "repositories.removeRepositoryWarningScaffolder": "La rimozione di un repository rimuove anche tutte le informazioni sulle attività di scaffolding associate.", + "repositories.removeRepositoryWarning": "La rimozione di un repository cancella tutte le informazioni associate dalla pagina Catalogo.", + "repositories.removeRepositoryWarningGitlab": "La rimozione elimina tutte le informazioni associate dalla pagina Catalogo.", + "repositories.cannotRemoveRepositoryUrl": "Impossibile rimuovere il repository perché l'URL del repository è mancante.", + "repositories.unableToRemoveRepository": "Impossibile rimuovere il repository. {{error}}", + "repositories.removeTooltipDisabled": "Questo repository è stato aggiunto al file app-config. Per rimuoverlo modificare direttamente il file", + "repositories.removeTooltipRepositoryScaffolder": "Elimina il repository e le informazioni sull'attività di scaffolding associata", + "repositories.errorOccuredWhileFetching": "Si è verificato un errore durante il recupero della richiesta pull", + "repositories.failedToCreatePullRequest": "Impossibile creare la richiesta pull", + "repositories.errorOccured": "Si è verificato un errore", + "repositories.editCatalogInfoTooltip": "Modifica la richiesta pull catalog-info.yaml", + "repositories.viewCatalogInfoTooltip": "Visualizza il file catalog-info.yaml", + "repositories.pr": "Richiesta pull", + "status.alreadyImported": "Già importata", + "status.added": "Aggiunta", + "status.waitingForApproval": "In attesa di approvazione", + "status.imported": "Importata", + "errors.prErrorPermissions": "Impossibile creare una nuova richiesta pull a causa di autorizzazioni insufficienti. Contattare l'amministratore.", + "errors.catalogInfoExists": "Poiché catalog-info.yaml esiste già nel repository, non verrà creata alcuna nuova richiesta pull. Tuttavia, l'entità sarà comunque registrata nella pagina del catalogo.", + "errors.catalogEntityConflict": "Impossibile creare una nuova richiesta pull a causa di un conflitto tra entità del catalogo.", + "errors.repoEmpty": "Impossibile creare una nuova richiesta pull perché il repository è vuoto. Inviare un commit iniziale al repository.", + "errors.codeOwnersNotFound": "Il file CODEOWNERS non è presente nel repository. Aggiungere un file CODEOWNERS per creare una nuova richiesta pull.", + "errors.errorOccurred": "Si è verificato un errore", + "errors.failedToCreatePullRequest": "Impossibile creare la richiesta pull", + "validation.componentNameInvalid": "\"{{value}}\" non è valido; è prevista una stringa composta da sequenze di [a-zA-Z0-9] separate da uno qualsiasi tra i simboli [-_.], per un massimo di 63 caratteri in totale. Per saperne di più sul formato del file catalogo, visitare: https://github.com/backstage/backstage/blob/master/docs/architecture-decisions/adr002-default-catalog-file-format.md", + "validation.componentNameRequired": "Il nome del componente è obbligatorio", + "validation.entityOwnerRequired": "Il proprietario dell'entità è obbligatorio", + "validation.titleRequired": "Il titolo {{approvalTool}} è obbligatorio", + "validation.descriptionRequired": "La descrizione {{approvalTool}} è obbligatoria", + "validation.keyValuePairFormat": "Ogni voce deve avere una chiave e un valore separati da due punti.", + "table.headers.name": "Nome", + "table.headers.url": "URL", + "table.headers.repoUrl": "URL del repository", + "table.headers.organization": "Organizzazione", + "table.headers.organizationGroup": "Organizzazione/gruppo", + "table.headers.group": "Gruppo", + "table.headers.status": "Stato", + "table.headers.lastUpdated": "Ultimo aggiornamento", + "table.headers.actions": "Azioni", + "table.headers.catalogInfoYaml": "catalogo-info.yaml", + "table.pagination.rows5": "5 righe", + "table.pagination.rows10": "10 righe", + "table.pagination.rows20": "20 righe", + "table.pagination.rows50": "50 righe", + "table.pagination.rows100": "100 righe", + "steps.chooseApprovalTool": "Scegliere lo strumento di approvazione (GitHub/GitLab) per la creazione di richieste pull", + "steps.chooseRepositories": "Scegliere i repository da aggiungere", + "steps.chooseItems": "Scegliere quali elementi importare", + "steps.generateCatalogInfo": "Generare un file catalog-info.yaml per ogni repository", + "steps.generateCatalogInfoItems": "Generare un file catalog-info.yaml per ogni elemento selezionato", + "steps.editPullRequest": "Modificare i dettagli della richiesta pull se necessario", + "steps.trackStatus": "Tenere traccia dello stato di approvazione", + "addRepositories.approvalTool.title": "Strumento di approvazione", + "addRepositories.approvalTool.description": "Scegliere lo strumento di approvazione per la creazione di richiesta pull", + "addRepositories.approvalTool.tooltip": "L'importazione richiede l'approvazione. Dopo l'approvazione della richiesta di pull/merge, i repository/progetti vengono importati nella pagina Catalogo.", + "addRepositories.approvalTool.github": "GitHub", + "addRepositories.approvalTool.gitlab": "GitLab", + "addRepositories.repositoryType.title": "Tipo di repository", + "addRepositories.repositoryType.repository": "Repository", + "addRepositories.repositoryType.organization": "Organizzazione", + "addRepositories.repositoryType.project": "Progetto", + "addRepositories.repositoryType.group": "Gruppo", + "addRepositories.searchPlaceholder": "Ricerca", + "addRepositories.clearSearch": "cancella ricerca", + "addRepositories.noRepositoriesFound": "Nessun repository trovato", + "addRepositories.allRepositoriesAdded": "Tutti i repository sono stati aggiunti", + "addRepositories.noSelection": "Nessuno", + "addRepositories.selectRepositories": "Selezionare repository", + "addRepositories.selectedRepositories": "repository", + "addRepositories.selectedProjects": "progetti", + "addRepositories.selectedLabel": "Selezionato", + "addRepositories.selectedCount": "{{count}} selezionati", + "addRepositories.addSelected": "Aggiungi selezionati", + "addRepositories.generateCatalogInfo": "Genera catalog-info.yaml", + "addRepositories.editPullRequest": "Modifica richiesta pull", + "addRepositories.preview": "Anteprima", + "catalogInfo.status.generating": "Generazione", + "catalogInfo.status.notGenerated": "Non generato", + "common.add": "Aggiungi", + "common.cancel": "Cancella", + "common.close": "Chiudi", + "common.delete": "Elimina", + "common.edit": "Modifica", + "common.filter": "Filtra", + "common.import": "Importa", + "common.remove": "Rimuovi", + "common.save": "Salva", + "common.select": "Seleziona", + "common.update": "Aggiorna", + "common.view": "Visualizza", + "time.daysAgo": "{{count}} giorno/i fa", + "time.hoursAgo": "{{count}} ora/e fa", + "time.minutesAgo": "{{count}} minuto/i fa", + "time.secondsAgo": "{{count}} secondi fa", + "previewFile.readyToImport": "Pronto per l'importazione", + "previewFile.previewFile": "Anteprima del file", + "previewFile.previewFiles": "Anteprima dei file", + "previewFile.failedToCreatePR": "Impossibile creare la richiesta pull", + "previewFile.prCreationUnsuccessful": "La creazione delle richieste pull per alcuni repository non è riuscita. Cliccare su `Modifica` per vedere il motivo.", + "previewFile.failedToFetchPR": "Impossibile recuperare la richiesta pull. Di seguito è stato generato un nuovo YAML.", + "previewFile.invalidEntityYaml": "L'entità YAML nella richiesta pull non è valida (file vuoto o apiVersion, kind o metadata.name mancanti). Di seguito è stato generato un nuovo YAML.", + "previewFile.pullRequestPendingApproval": "[{{pullRequestText}}]({{pullRequestUrl}}) è in attesa di approvazione", + "previewFile.pullRequestText": "richiesta pull", + "previewFile.viewRepository": "Visualizza repository", + "previewFile.closeDrawer": "Chiudi il riquadro", + "previewFile.keyValuePlaceholder": "key1: value2; key2: value2", + "previewFile.useSemicolonSeparator": "Utilizzare il punto e virgola per separare {{label}}", + "previewFile.preview": "Anteprima", + "previewFile.pullRequest.title": "Richiesta pull", + "previewFile.pullRequest.mergeRequest": "Richiesta merge", + "previewFile.pullRequest.serviceNowTicket": "Ticket ServiceNow", + "previewFile.pullRequest.details": "Dettagli {{tool}}", + "previewFile.pullRequest.titleLabel": "Titolo {{tool}}", + "previewFile.pullRequest.bodyLabel": "Corpo {{tool}}", + "previewFile.pullRequest.titlePlaceholder": "Aggiungere i file descrittori di entità del catalogo Backstage", + "previewFile.pullRequest.bodyPlaceholder": "Un testo descrittivo con supporto Markdown", + "previewFile.pullRequest.entityConfiguration": "Configurazione dell'entità", + "previewFile.pullRequest.componentNameLabel": "Nome del componente creato", + "previewFile.pullRequest.componentNamePlaceholder": "Nome del componente", + "previewFile.pullRequest.entityOwnerLabel": "Proprietario dell'entità", + "previewFile.pullRequest.entityOwnerPlaceholder": "gruppi e utenti", + "previewFile.pullRequest.entityOwnerHelper": "Selezionare un proprietario dall'elenco o inserire un riferimento a un gruppo o a un utente", + "previewFile.pullRequest.loadingText": "Caricamento di gruppi e utenti", + "previewFile.pullRequest.previewEntities": "Anteprima entità", + "previewFile.pullRequest.annotations": "Annotazioni", + "previewFile.pullRequest.labels": "Etichette", + "previewFile.pullRequest.spec": "Specifiche", + "previewFile.pullRequest.useCodeOwnersFile": "Utilizzare il file *CODEOWNERS* come Proprietario dell'entità", + "previewFile.pullRequest.codeOwnersWarning": "ATTENZIONE: questa operazione potrebbe non riuscire se la posizione di destinazione non contiene alcun file CODEOWNERS.", + "forms.footer.createServiceNowTicket": "Crea un ticket ServiceNow", + "forms.footer.createServiceNowTickets": "Crea ticket ServiceNow", + "forms.footer.createPullRequest": "Crea richiesta pull", + "forms.footer.createPullRequests": "Crea richieste pull", + "forms.footer.serviceNowTooltip": "È necessario generare i file catalog-info.yaml prima di creare un ticket ServiceNow", + "forms.footer.importTooltip": "Per l'importazione è necessario generare i file Catalog-info.yaml.", + "forms.footer.pullRequestTooltip": "È necessario generare i file catalog-info.yaml prima di creare una richiesta pull", + "tasks.tasksFor": "Attività per {{importJobStatusId}}", + "tasks.taskId": "ID attività", + "tasks.taskLink": "Collegamento attività", + "tasks.viewTask": "Visualizza attività", + "tasks.loading": "Caricamento...", + "tasks.errorFetchingData": "Errore durante il recupero dei dati", + "tasks.taskCancelled": "Attività annullata", + "tasks.taskCompleted": "Attività completata", + "tasks.taskFailed": "Attività non riuscita", + "tasks.taskOpen": "Attività aperta", + "tasks.taskProcessing": "Elaborazione delle attività", + "tasks.taskSkipped": "Attività ignorata" + } + }, + "plugin.global-floating-action-button": { + "it": { + "fab.create.label": "Crea", + "fab.create.tooltip": "Crea entità", + "fab.docs.label": "Documenti", + "fab.docs.tooltip": "Documentazione", + "fab.apis.label": "API", + "fab.apis.tooltip": "Documentazione API", + "fab.github.label": "GitHub", + "fab.github.tooltip": "Repository GitHub", + "fab.bulkImport.label": "Importazione in blocco", + "fab.bulkImport.tooltip": "Registra più repository in blocco", + "fab.quay.label": "Quay", + "fab.quay.tooltip": "Registro dei container di Quay", + "fab.menu.tooltip": "Menu" + } + }, + "plugin.global-header": { + "it": { + "help.tooltip": "Guida", + "help.noSupportLinks": "Nessun link di supporto", + "help.noSupportLinksSubtitle": "L'amministratore deve impostare i link di supporto.", + "help.quickStart": "Avvio rapido", + "help.supportTitle": "Supporto", + "profile.picture": "Immagine del profilo", + "profile.settings": "Impostazioni", + "profile.myProfile": "Il mio profilo", + "profile.signOut": "Disconnetti", + "search.placeholder": "Cerca...", + "search.noResults": "Nessun risultato trovato", + "search.errorFetching": "Errore durante il recupero dei risultati", + "applicationLauncher.tooltip": "Avvio applicazione", + "applicationLauncher.noLinksTitle": "Nessun collegamento all'applicazione configurato", + "applicationLauncher.noLinksSubtitle": "Configurare i collegamenti all'applicazione nella configurazione del plugin dinamico per accedere rapidamente da qui.", + "applicationLauncher.developerHub": "Developer Hub", + "applicationLauncher.rhdhLocal": "RHDH Local", + "applicationLauncher.sections.documentation": "Documentazione", + "applicationLauncher.sections.developerTools": "Strumenti per sviluppatori", + "starred.title": "I tuoi articoli contrassegnati", + "starred.removeTooltip": "Rimuovi dall'elenco", + "starred.noItemsTitle": "Non è stato ancora contrassegnato alcun articolo", + "starred.noItemsSubtitle": "Fare clic sull'icona a forma di stella accanto al nome di un'entità per salvarla qui e accedervi rapidamente.", + "notifications.title": "Notifiche", + "notifications.unsupportedDismissOption": "Opzione di esclusione non supportata \"{{option}}\"; attualmente sono supportate le opzioni \"none\", \"session\" o \"localstorage\"!", + "create.title": "Self-service", + "create.registerComponent.title": "Registrare un componente", + "create.registerComponent.subtitle": "Importare il componente nella pagina del catalogo", + "create.templates.sectionTitle": "Utilizzare un modello", + "create.templates.allTemplates": "Tutti i modelli", + "create.templates.errorFetching": "Errore durante il recupero dei modelli", + "create.templates.noTemplatesAvailable": "Nessun modello disponibile" + } + }, + "plugin.dynamic-home-page": { + "it": { + "header.welcome": "Bentornato/a!", + "header.welcomePersonalized": "Bentornato/a, {{name}}!", + "header.local": "Locale", + "homePage.empty": "Nessuna scheda home page (punto di montaggio) configurata o trovata.", + "search.placeholder": "Ricerca", + "quickAccess.title": "Accesso rapido", + "quickAccess.fetchError": "Impossibile recuperare i dati.", + "quickAccess.error": "Errore sconosciuto", + "featuredDocs.learnMore": " Per saperne di più", + "templates.title": "Esplora i modelli", + "templates.fetchError": "Impossibile recuperare i dati.", + "templates.error": "Errore sconosciuto", + "templates.empty": "Non è stato ancora aggiunto alcun modello", + "templates.emptyDescription": "Una volta aggiunti i modelli, in quest'area verranno visualizzati contenuti pertinenti e personalizzati in base all'esperienza dell'utente.", + "templates.register": "Registra un modello", + "templates.viewAll": "Visualizza tutti i {{count}} modelli", + "onboarding.greeting.goodMorning": "Buon giorno", + "onboarding.greeting.goodAfternoon": "Buon pomeriggio", + "onboarding.greeting.goodEvening": "Buona sera", + "onboarding.guest": "Ospite", + "onboarding.getStarted.title": "Inizia", + "onboarding.getStarted.description": "Scopri di più su Red Hat Developer Hub.", + "onboarding.getStarted.buttonText": "Leggi la documentazione", + "onboarding.getStarted.ariaLabel": "Leggi la documentazione (si apre in una nuova scheda)", + "onboarding.explore.title": "Esplora", + "onboarding.explore.description": "Esplora componenti, API e modelli.", + "onboarding.explore.buttonText": "Vai al Catalogo", + "onboarding.explore.ariaLabel": "Vai al Catalogo", + "onboarding.learn.title": "Apprendi", + "onboarding.learn.description": "Esplora e sviluppa nuove competenze.", + "onboarding.learn.buttonText": "Vai ai Percorsi di apprendimento", + "onboarding.learn.ariaLabel": "Vai ai Percorsi di apprendimento", + "entities.title": "Esplora il Catalogo software", + "entities.fetchError": "Impossibile recuperare i dati.", + "entities.error": "Errore sconosciuto", + "entities.description": "Esplora i sistemi, i componenti, le risorse e le API disponibili nella tua organizzazione.", + "entities.close": "chiudi", + "entities.empty": "Non è stato ancora aggiunto alcun catalogo software", + "entities.emptyDescription": "Una volta aggiunti i cataloghi software, in quest'area verranno visualizzati contenuti pertinenti e personalizzati in base all'esperienza dell'utente.", + "entities.register": "Registrare un componente", + "entities.viewAll": "Visualizza tutte le {{count}} entità del catalogo" + } + }, + "plugin.lightspeed": { + "it": { + "page.title": "Lightspeed", + "page.subtitle": "Assistente allo sviluppo basato sull'intelligenza artificiale", + "prompts.codeReadability.title": "Ottenere aiuto sulla leggibilità del codice", + "prompts.codeReadability.message": "Puoi suggerirmi delle tecniche da utilizzare per rendere il mio codice più leggibile e gestibile?", + "prompts.debugging.title": "Ottenere aiuto con il debug", + "prompts.debugging.message": "La mia applicazione genera un errore quando tenta di connettersi al database. Puoi aiutarmi a identificare il problema?", + "prompts.developmentConcept.title": "Spiegare un concetto di sviluppo", + "prompts.developmentConcept.message": "Puoi spiegarmi come funziona l'architettura dei microservizi e quali vantaggi ha rispetto alla progettazione monolitica?", + "prompts.codeOptimization.title": "Suggerimenti per ottimizzare il codice", + "prompts.codeOptimization.message": "Puoi suggerirmi metodi comuni per ottimizzare il codice e ottenere prestazioni migliori?", + "prompts.documentation.title": "Riepilogo della documentazione", + "prompts.documentation.message": "Puoi riassumere la documentazione per implementare l'autenticazione OAuth 2.0 in un'app web?", + "prompts.gitWorkflows.title": "Flussi di lavoro con Git", + "prompts.gitWorkflows.message": "Voglio apportare modifiche al codice su un'altra diramazione, senza perdere il lavoro svolto in precedenza. Qual è la procedura per farlo utilizzando Git?", + "prompts.testingStrategies.title": "Suggerimenti su strategie di test", + "prompts.testingStrategies.message": "Puoi consigliarmi alcune strategie di test comuni in grado di rendere la mia applicazione efficiente e priva di errori?", + "prompts.sortingAlgorithms.title": "Svelare gli algoritmi di ordinamento", + "prompts.sortingAlgorithms.message": "Puoi spiegarmi la differenza tra un algoritmo quicksort e un algoritmo merge sort e quando utilizzare ognuno di essi?", + "prompts.eventDriven.title": "Comprendere l'architettura guidata dagli eventi", + "prompts.eventDriven.message": "Puoi spiegarmi cos'è l'architettura guidata dagli eventi e quando è utile utilizzarla nello sviluppo software?", + "prompts.tekton.title": "Deployment con Tekton", + "prompts.tekton.message": "Puoi aiutarmi ad automatizzare il deployment della mia applicazione utilizzando le pipeline Tekton?", + "prompts.openshift.title": "Creare un deployment in OpenShift", + "prompts.openshift.message": "Puoi guidarmi nella creazione di un nuovo deployment in OpenShift per un'applicazione containerizzata?", + "prompts.rhdh.title": "Introduzione a Red Hat Developer Hub", + "prompts.rhdh.message": "Puoi guidarmi nelle prime fasi per iniziare a utilizzare Developer Hub come sviluppatore, ad esempio esplorando il catalogo software e aggiungendo il mio servizio?", + "conversation.delete.confirm.title": "Eliminare la chat?", + "conversation.delete.confirm.message": "Questa chat non sarà più visibile qui. Dalla tua attività Lightspeed verranno eliminate anche le attività correlate, come prompt, risposte e feedback.", + "conversation.delete.confirm.action": "Elimina", + "conversation.rename.confirm.title": "Rinominare la chat?", + "conversation.rename.confirm.action": "Rinomina", + "conversation.rename.placeholder": "Nome della chat", + "conversation.action.error": "Si è verificato un errore: {{error}}", + "permission.required.title": "Autorizzazioni mancanti", + "permission.required.description": "Per visualizzare il plugin Lightspeed, contattare l'amministratore per ottenere le autorizzazioni lightspeed.chat.read e lightspeed.chat.create.", + "disclaimer.withValidation": "Questa funzione utilizza una tecnologia AI. Non includere nei dati immessi informazioni personali o altre informazioni sensibili. Le interazioni possono essere utilizzate per migliorare i prodotti o i servizi Red Hat.", + "disclaimer.withoutValidation": "Questa funzione utilizza una tecnologia AI. Non includere nei dati immessi informazioni personali o altre informazioni sensibili. Le interazioni possono essere utilizzate per migliorare i prodotti o i servizi Red Hat.", + "footer.accuracy.label": "Esaminare sempre i contenuti generati dall'intelligenza artificiale prima di utilizzarli.", + "footer.accuracy.popover.title": "Verificare l'accuratezza", + "footer.accuracy.popover.description": "Nonostante l'impegno di Developer Lightspeed a garantire la massima precisione, esiste sempre un margine di errore. È buona norma verificare le informazioni critiche confrontandole con fonti affidabili, soprattutto se sono essenziali per prendere decisioni o intraprendere azioni.", + "footer.accuracy.popover.image.alt": "Immagine di esempio per il popover del piè di pagina", + "footer.accuracy.popover.cta.label": "Ho capito", + "footer.accuracy.popover.link.label": "Per saperne di più", + "common.cancel": "Cancella", + "common.close": "Chiudi", + "common.readMore": "Per saperne di più", + "common.noSearchResults": "Nessun risultato corrisponde alla ricerca", + "menu.newConversation": "Nuova chat", + "chatbox.header.title": "Sviluppatore Lightspeed", + "chatbox.search.placeholder": "Ricerca", + "chatbox.provider.other": "Altro", + "chatbox.emptyState.noPinnedChats": "Nessuna chat bloccata", + "chatbox.emptyState.noRecentChats": "Nessuna chat recente", + "chatbox.emptyState.noResults.title": "Nessun risultato trovato", + "chatbox.emptyState.noResults.body": "Modificare la query di ricerca e riprovare. Controllare l'ortografia o provare un termine più generico.", + "chatbox.welcome.greeting": "Ciao {{userName}},", + "chatbox.welcome.description": "come posso aiutarti oggi?", + "chatbox.message.placeholder": "Invia un messaggio e, facoltativamente, carica un file JSON, YAML o TXT...", + "chatbox.fileUpload.failed": "Caricamento del file non riuscito", + "chatbox.fileUpload.infoText": "I tipi di file supportati sono: .txt, .yaml e .json. La dimensione massima del file è 25 MB.", + "aria.chatbotSelector": "Selettore di chatbot", + "aria.important": "Importante", + "aria.chatHistoryMenu": "Menu cronologia chat", + "aria.closeDrawerPanel": "Chiudi riquadro", + "aria.search.placeholder": "Ricerca", + "aria.searchPreviousConversations": "Cerca conversazioni precedenti", + "aria.resize": "Ridimensiona", + "aria.options.label": "Opzioni", + "aria.scroll.down": "Torna alla fine", + "aria.scroll.up": "Torna all'inizio", + "aria.settings.label": "Opzioni chatbot", + "modal.edit": "Modifica", + "modal.save": "Salva", + "modal.close": "Chiudi", + "modal.cancel": "Cancella", + "conversation.delete": "Elimina", + "conversation.rename": "Rinomina", + "conversation.addToPinnedChats": "Blocca", + "conversation.removeFromPinnedChats": "Sblocca", + "conversation.announcement.userMessage": "Messaggio dall'utente: {{prompt}}. Caricamento in corso del messaggio del bot.", + "user.guest": "Ospite", + "user.loading": "...", + "tooltip.attach": "Allega", + "tooltip.send": "Invia", + "tooltip.microphone.active": "Non ascoltare più", + "tooltip.microphone.inactive": "Usa il microfono", + "button.newChat": "Nuova chat", + "tooltip.chatHistoryMenu": "Menu cronologia chat", + "tooltip.responseRecorded": "Risposta registrata", + "tooltip.backToTop": "Torna all'inizio", + "tooltip.backToBottom": "Torna alla fine", + "tooltip.settings": "Opzioni chatbot", + "modal.title.preview": "Anteprima allegato", + "modal.title.edit": "Modifica allegato", + "icon.lightspeed.alt": "icona di lightspeed", + "icon.permissionRequired.alt": "icona di autorizzazione richiesta", + "message.options.label": "Opzioni", + "file.upload.error.alreadyExists": "Il file esiste già.", + "file.upload.error.multipleFiles": "È stato caricato più di un file.", + "file.upload.error.unsupportedType": "Tipo di file non supportato. I tipi supportati sono: .txt, .yaml e .json.", + "file.upload.error.fileTooLarge": "Dimensione del file troppo grande. Verificare che il file sia inferiore a 25 MB.", + "file.upload.error.readFailed": "Impossibile leggere il file: {{errorMessage}}", + "error.context.fileAttachment": "useFileAttachmentContext deve essere all'interno di un FileAttachmentContextProvider", + "feedback.form.title": "Perché hai scelto questa valutazione?", + "feedback.form.textAreaPlaceholder": "Fornire commenti aggiuntivi facoltativi", + "feedback.form.submitWord": "Invia", + "feedback.tooltips.goodResponse": "Risposta valida", + "feedback.tooltips.badResponse": "Risposta non valida", + "feedback.tooltips.copied": "Copiato", + "feedback.tooltips.copy": "Copia", + "feedback.tooltips.listening": "In ascolto", + "feedback.tooltips.listen": "Ascoltare", + "feedback.quickResponses.positive.helpful": "Informazioni utili", + "feedback.quickResponses.positive.easyToUnderstand": "Facile da capire", + "feedback.quickResponses.positive.resolvedIssue": "Ha risolto il mio problema", + "feedback.quickResponses.negative.didntAnswer": "Non ha risposto alla mia domanda", + "feedback.quickResponses.negative.hardToUnderstand": "Difficile da capire", + "feedback.quickResponses.negative.notHelpful": "Non utile", + "feedback.completion.title": "Feedback inviato", + "feedback.completion.body": "Abbiamo ricevuto la tua risposta. Grazie per aver condiviso i tuoi commenti!", + "conversation.category.pinnedChats": "Bloccata", + "conversation.category.recent": "Recente", + "settings.pinned.enable": "Abilita le chat bloccate", + "settings.pinned.disable": "Disattiva le chat bloccate", + "settings.pinned.enabled.description": "Le chat bloccate sono attualmente abilitate", + "settings.pinned.disabled.description": "Le chat bloccate sono attualmente disabilitate" + } + }, + "plugin.marketplace": { + "it": { + "header.title": "Estensioni", + "header.extensions": "Estensioni", + "header.catalog": "Catalogo", + "header.installedPackages": "Pacchetti installati", + "header.installedPackagesWithCount": "Pacchetti installati ({{count}})", + "header.pluginsPage": "Plugin", + "header.packagesPage": "Pacchetti", + "header.collectionsPage": "Raccolte", + "button.install": "Installa", + "button.uninstall": "Disinstalla", + "button.enable": "Abilita", + "button.disable": "Disabilita", + "button.update": "Aggiorna", + "button.save": "Salva", + "button.close": "Chiudi", + "button.viewAll": "Visualizza tutti i plugin", + "button.viewDocumentation": "Visualizza la documentazione", + "button.viewInstalledPlugins": "Visualizza i plugin installati ({{count}})", + "button.restart": "È necessario riavviare", + "status.notInstalled": "Non installato", + "status.installed": "Installato", + "status.disabled": "Disabilitato", + "status.partiallyInstalled": "Parzialmente installato", + "status.updateAvailable": "Aggiornamento disponibile", + "role.backend": "Backend", + "role.backendModule": "Modulo backend", + "role.frontend": "Frontend", + "emptyState.noPluginsFound": "Nessun plugin trovato", + "emptyState.mustEnableBackend": "È necessario abilitare il plugin backend Estensioni", + "emptyState.noPluginsDescription": "Si è verificato un errore durante il caricamento dei plugin. Per risolvere il problema, controllare la configurazione o consultare la documentazione del plugin. È anche possibile verificare gli altri plugin disponibili.", + "emptyState.configureBackend": "Configurare il plugin '@red-hat-developer-hub/backstage-plugin-marketplace-backend'.", + "alert.productionDisabled": "L'installazione del plugin è disabilitata nell'ambiente di produzione.", + "alert.installationDisabled": "L'installazione del plugin è disabilitata.", + "alert.missingDynamicArtifact": "Impossibile gestire questo pacchetto. Per abilitare le azioni, è necessario aggiungere un'entità Catalogo con lo **spec.dynamicArtifact** richiesto.", + "alert.missingDynamicArtifactTitle": "Impossibile modificare il pacchetto", + "alert.missingDynamicArtifactForPlugin": "Impossibile gestire questo plugin. Per abilitare le azioni, è necessario aggiungere un'entità Catalogo con lo **spec.dynamicArtifact** richiesto a tutti i pacchetti associati.", + "alert.missingDynamicArtifactTitlePlugin": "Impossibile modificare il plugin", + "alert.extensionsExample": "Per abilitarla, aggiungere o modificare la configurazione delle estensioni nel file di configurazione dynamic-plugins.", + "alert.singlePluginRestart": "Il plugin **{{pluginName}}** richiede il riavvio del sistema backend per completare l'installazione, l'aggiornamento, l'abilitazione o la disabilitazione.", + "alert.multiplePluginRestart": "Sono presenti **{{count}}** plugin che richiedono il riavvio del sistema backend per completare l'installazione, l'aggiornamento, l'abilitazione o la disabilitazione.", + "alert.singlePackageRestart": "Il pacchetto **{{packageName}}** richiede il riavvio del sistema backend per completare l'installazione, l'aggiornamento, l'abilitazione o la disabilitazione.", + "alert.multiplePackageRestart": "Sono presenti **{{count}}** pacchetti che richiedono il riavvio del sistema backend per completare l'installazione, l'aggiornamento, l'abilitazione o la disabilitazione.", + "alert.restartRequired": "{{count}} plugin installati", + "alert.backendRestartRequired": "È necessario riavviare il backend", + "alert.viewPlugins": "Visualizza i plugin", + "alert.viewPackages": "Visualizza i pacchetti", + "search.placeholder": "Ricerca", + "search.clear": "Cancella ricerca", + "search.filter": "Filtra", + "search.clearFilter": "Cancella filtro", + "search.category": "Categoria", + "search.author": "Autore", + "search.supportType": "Tipo di supporto", + "search.noResults": "Nessun plugin corrisponde ai criteri di ricerca", + "search.filterBy": "Filtra per", + "search.clearFilters": "Cancella filtri", + "search.noResultsFound": "Nessun risultato trovato. Regolare i filtri e riprovare.", + "common.links": "Collegamenti", + "common.by": " di ", + "common.comma": ", ", + "common.noDescriptionAvailable": "nessuna descrizione disponibile", + "common.readMore": "Per saperne di più", + "common.close": "Chiudi", + "common.apply": "Applica", + "common.couldNotApplyYaml": "Impossibile applicare YAML: {{error}}", + "dialog.backendRestartRequired": "È necessario riavviare il backend", + "dialog.packageRestartMessage": "Per completare le modifiche al pacchetto, riavviare il sistema backend.", + "dialog.pluginRestartMessage": "Per completare le modifiche al plugin, riavviare il sistema backend.", + "plugin.description": "Descrizione", + "plugin.documentation": "Documentazione", + "plugin.repository": "Repository", + "plugin.license": "Licenza", + "plugin.version": "Versione", + "plugin.author": "Autore", + "plugin.authors": "Autori", + "plugin.tags": "Tag", + "plugin.dependencies": "Dipendenze", + "plugin.configuration": "Configurazione", + "plugin.installation": "Installazione", + "package.name": "Nome pacchetto:", + "package.version": "Versione:", + "package.dynamicPluginPath": "Percorso plugin dinamico:", + "package.backstageRole": "Ruolo Backstage:", + "package.supportedVersions": "Versioni supportate:", + "package.author": "Autore:", + "package.support": "Supporto:", + "package.lifecycle": "Ciclo di vita:", + "package.highlights": "In evidenza", + "package.about": "Informazioni", + "package.notFound": "Pacchetto {{namespace}}/{{name}} non trovato.", + "package.notAvailable": "Il pacchetto {{name}} non è disponibile", + "package.ensureCatalogEntity": "Verificare l'esistenza di un'entità catalogo per questo pacchetto.", + "table.packageName": "Nome pacchetto", + "table.version": "Versione", + "table.role": "Ruolo", + "table.supportedVersion": "Versione supportata", + "table.status": "Stato", + "table.name": "Nome", + "table.action": "Azione", + "table.description": "Descrizione", + "table.versions": "Versioni", + "table.plugins": "Plugin", + "table.packages": "Pacchetti", + "table.pluginsCount": "Plugin ({{count}})", + "table.packagesCount": "Pacchetti ({{count}})", + "table.pluginsTable": "Tabella dei plugin", + "installedPackages.table.title": "Pacchetti installati ({{count}})", + "installedPackages.table.searchPlaceholder": "Ricerca", + "installedPackages.table.columns.name": "Nome", + "installedPackages.table.columns.packageName": "nome del pacchetto npm", + "installedPackages.table.columns.role": "Ruolo", + "installedPackages.table.columns.version": "Versione", + "installedPackages.table.columns.actions": "Azioni", + "installedPackages.table.tooltips.packageProductionDisabled": "Impossibile gestire il pacchetto nell'ambiente di produzione.", + "installedPackages.table.tooltips.installationDisabled": "Impossibile gestire il pacchetto perché l'installazione del plugin è disabilitata. Per abilitarla, aggiungere o modificare la configurazione delle estensioni nel file di configurazione dynamic-plugins.", + "installedPackages.table.tooltips.enableActions": "Per abilitare le azioni, aggiungere un'entità catalogo per questo pacchetto", + "installedPackages.table.tooltips.noDownloadPermissions": "L'utente non dispone dell'autorizzazione per scaricare la configurazione. Contattare l'amministratore per richiedere l'accesso o l'assistenza.", + "installedPackages.table.tooltips.noEditPermissions": "L'utente non dispone dell'autorizzazione per modificare la configurazione. Contattare l'amministratore per richiedere l'accesso o l'assistenza.", + "installedPackages.table.tooltips.noTogglePermissions": "L'utente non dispone dell'autorizzazione per abilitare o disabilitare i pacchetti. Contattare l'amministratore per richiedere l'accesso o l'assistenza.", + "installedPackages.table.tooltips.editPackage": "Modifica la configurazione del pacchetto", + "installedPackages.table.tooltips.downloadPackage": "Scarica la configurazione del pacchetto", + "installedPackages.table.tooltips.enablePackage": "Abilita il pacchetto", + "installedPackages.table.tooltips.disablePackage": "Disabilita il pacchetto", + "installedPackages.table.emptyMessages.noResults": "Nessun risultato trovato. Provare un termine di ricerca diverso.", + "installedPackages.table.emptyMessages.noRecords": "Nessun record da visualizzare", + "actions.install": "Installa", + "actions.view": "Visualizza", + "actions.edit": "Modifica", + "actions.enable": "Abilita", + "actions.disable": "Disabilita", + "actions.actions": "Azioni", + "actions.editConfiguration": "Modifica", + "actions.pluginConfigurations": "Configurazioni dei plugin", + "actions.packageConfiguration": "Configurazione del pacchetto", + "actions.pluginCurrentlyEnabled": "Plugin attualmente abilitato", + "actions.pluginCurrentlyDisabled": "Plugin attualmente disabilitato", + "actions.packageCurrentlyEnabled": "Pacchetto attualmente abilitato", + "actions.packageCurrentlyDisabled": "Pacchetto attualmente disabilitato", + "actions.installTitle": "Installare {{displayName}}", + "actions.editTitle": "Modificare le configurazioni di {{displayName}}", + "metadata.by": " di ", + "metadata.comma": ", ", + "metadata.pluginNotFound": "Plugin {{name}} non trovato.", + "metadata.pluginNotAvailable": "Il plugin {{name}} non è disponibile", + "metadata.ensureCatalogEntityPlugin": "Verificare l'esistenza di un'entità catalogo per questo plugin.", + "metadata.highlights": "In evidenza", + "metadata.about": "Informazioni", + "metadata.publisher": "Editore", + "metadata.supportProvider": "Fornitore del supporto", + "metadata.entryName": "Nome voce", + "metadata.bySomeone": "da qualcuno", + "metadata.category": "Categoria", + "metadata.versions": "Versioni", + "metadata.backstageCompatibility": "Versione compatibile con Backstage", + "supportTypes.certifiedBy": "Certificato da {{value}} ({{count}})", + "supportTypes.verifiedBy": "Verificato da {{value}} ({{count}})", + "supportTypes.customPlugins": "Plugin personalizzati ({{count}})", + "collection.kubernetes": "Kubernetes", + "collection.monitoring": "Monitoraggio", + "collection.security": "Sicurezza", + "collection.viewMore": "Visualizza altro", + "collection.pluginCount": "{{count}} plugin", + "collection.featured.title": "Plugin in evidenza", + "collection.featured.description": "Una raccolta selezionata di plugin in evidenza consigliati per la maggior parte degli utenti", + "install.title": "Installa il plugin", + "install.configurationRequired": "Configurazione richiesta", + "install.optional": "Opzionale", + "install.required": "Richiesta", + "install.selectPackages": "Selezionare i pacchetti da installare", + "install.allPackages": "Tutti i pacchetti", + "install.customConfiguration": "Configurazione personalizzata", + "install.installProgress": "Installazione in corso...", + "install.success": "Plugin installato correttamente", + "install.error": "Impossibile installare il plugin", + "install.installFrontend": "Installa il plugin frontend", + "install.installBackend": "Installa il plugin backend", + "install.installTemplates": "Installa modelli software", + "install.installationInstructions": "Istruzioni per l'installazione", + "install.download": "Scaricamento", + "install.examples": "Esempi", + "install.cancel": "Cancella", + "install.reset": "Reset", + "install.pluginTabs": "Schede dei plugin", + "install.settingUpPlugin": "Impostazione del plugin", + "install.aboutPlugin": "Informazioni sul plugin", + "install.pluginUpdated": "Plugin aggiornato", + "install.pluginInstalled": "Plugin installato", + "install.instructions": "Istruzioni", + "install.editInstructions": "Modifica le istruzioni", + "install.back": "Indietro", + "install.packageUpdated": "Pacchetto aggiornato", + "install.packageEnabled": "Pacchetto abilitato", + "install.packageDisabled": "Pacchetto disabilitato", + "install.pluginEnabled": "Plugin abilitato", + "install.pluginDisabled": "Plugin disabilitato", + "install.errors.missingPluginsList": "Contenuto dell'editor non valido: elenco 'plugin' mancante", + "install.errors.missingPackageItem": "Contenuto dell'editor non valido: elemento del pacchetto mancante", + "install.errors.missingPackageField": "Contenuto dell'editor non valido: campo 'pacchetto' mancante nell'elemento", + "install.errors.failedToSave": "Impossibile salvare", + "loading": "Caricamento...", + "error": "Si è verificato un errore", + "retry": "Riprovare", + "errors.missingConfigFile": "File di configurazione mancante", + "errors.missingConfigMessage": "{{message}}. Per abilitare questo strumento, è necessario aggiungerlo ad app-config.yaml. Modificare il file app-config.yaml come mostrato nell'esempio seguente:", + "errors.invalidConfigFile": "File di configurazione non valido", + "errors.invalidConfigMessage": "Impossibile caricare 'extensions.installation.saveToSingleFile.file'. {{message}}. Per abilitare questo strumento, fornire una configurazione di installazione valida. Modificare il file dynamic-plugins.yaml come mostrato nell'esempio seguente:", + "errors.fileNotExists": "Il file di configurazione non è corretto, non è scritto correttamente o non esiste", + "errors.fileNotExistsMessage": "{{message}}. Per abilitare questo strumento come evidenziato nell'esempio seguente, controllare nuovamente il nome del file specificato in app-config.yaml:", + "errors.unknownError": "Errore durante la lettura del file di configurazione. ", + "tooltips.productionDisabled": "L'installazione del plugin è disabilitata nell'ambiente di produzione.", + "tooltips.extensionsDisabled": "L'installazione del plugin è disabilitata. Per abilitarla, aggiungere o modificare la configurazione delle estensioni nel file di configurazione dynamic-plugins.", + "tooltips.noPermissions": "L'utente non dispone delle autorizzazioni necessarie per installare plugin o visualizzarne le configurazioni. Contattare l'amministratore per richiedere l'accesso o l'assistenza.", + "tooltips.missingDynamicArtifact": "Impossibile gestire questo {{type}}. Per abilitare le azioni, è necessario aggiungere un'entità Catalogo con lo spec.dynamicArtifact richiesto.", + "aria.openPlugin": "Apri il plugin {{name}}", + "aria.closeDialog": "Chiudi finestra di dialogo", + "aria.expandSection": "Espandi sezione", + "aria.collapseSection": "Comprimi sezione", + "aria.sortBy": "Ordina per {{field}}", + "aria.filterBy": "Filtra per {{field}}", + "badges.certified": "Certificato", + "badges.certifiedBy": "Certificato da {{provider}}", + "badges.verified": "Verificato", + "badges.verifiedBy": "Verificato da {{provider}}", + "badges.customPlugin": "Plugin personalizzato", + "badges.stableAndSecured": "Stabile e protetto da {{provider}}", + "badges.generallyAvailable": "Generalmente disponibile", + "badges.gaAndSupportedBy": "Generalmente disponibile e supportato da {{provider}}", + "badges.gaAndSupported": "Generalmente disponibile e supportato", + "badges.productionReadyBy": "Pronto per la produzione e supportato da {{provider}}", + "badges.productionReady": "Pronto per la produzione e supportato", + "badges.communityPlugin": "Plugin della community", + "badges.openSourceNoSupport": "Plugin open source, nessun supporto ufficiale", + "badges.techPreview": "Anteprima tecnica", + "badges.pluginInDevelopment": "Plugin ancora in fase di sviluppo", + "badges.devPreview": "Anteprima di sviluppo", + "badges.earlyStageExperimental": "Plugin sperimentale in fase iniziale", + "badges.addedByAdmin": "Plugin aggiunti dall'amministratore" + } + }, + "plugin.orchestrator": { + "it": { + "page.title": "Orchestratore del flusso di lavoro", + "page.tabs.workflows": "Flussi di lavoro", + "page.tabs.allRuns": "Tutte le esecuzioni", + "page.tabs.workflowDetails": "Dettagli del flusso di lavoro", + "page.tabs.workflowRuns": "Esecuzioni del flusso di lavoro", + "table.title.workflows": "Flussi di lavoro", + "table.title.allRuns": "Tutte le esecuzioni ({{count}})", + "table.title.allWorkflowRuns": "Esecuzioni del flusso di lavoro ({{count}})", + "table.headers.name": "Nome", + "table.headers.runStatus": "Stato dell'esecuzione", + "table.headers.started": "Iniziata", + "table.headers.status": "Stato", + "table.headers.workflowStatus": "Stato del flusso di lavoro", + "table.headers.duration": "Durata", + "table.headers.description": "Descrizione", + "table.headers.lastRun": "Ultima esecuzione", + "table.headers.lastRunStatus": "Stato dell'ultima esecuzione", + "table.headers.workflowName": "Nome flusso di lavoro", + "table.actions.run": "Esecuzione", + "table.actions.viewRuns": "Visualizza esecuzioni", + "table.actions.viewInputSchema": "Visualizza schema di input", + "table.status.running": "In esecuzione", + "table.status.failed": "Non riuscito", + "table.status.completed": "Completato", + "table.status.aborted": "Interrotto", + "table.status.pending": "In pausa", + "table.status.active": "Attivo", + "table.filters.status": "Stato", + "table.filters.started": "Iniziata", + "table.filters.startedOptions.today": "Oggi", + "table.filters.startedOptions.yesterday": "Ieri", + "table.filters.startedOptions.last7days": "Ultimi 7 giorni", + "table.filters.startedOptions.thisMonth": "Questo mese", + "workflow.details": "Dettagli", + "workflow.definition": "Definizione flusso di lavoro", + "workflow.progress": "Avanzamento flusso di lavoro", + "workflow.status.available": "Disponibile", + "workflow.status.unavailable": "Non disponibile", + "workflow.fields.workflow": "Flusso di lavoro", + "workflow.fields.workflowStatus": "Stato del flusso di lavoro", + "workflow.fields.runStatus": "Stato dell'esecuzione", + "workflow.fields.duration": "Durata", + "workflow.fields.description": "Descrizione", + "workflow.fields.started": "Iniziata", + "workflow.fields.workflowId": "ID esecuzione", + "workflow.fields.workflowIdCopied": "ID esecuzione copiato negli appunti", + "workflow.errors.retriggerFailed": "Riattivazione non riuscita: {{reason}}", + "workflow.errors.abortFailed": "Interruzione non riuscita: l'esecuzione è già stata completata.", + "workflow.errors.abortFailedWithReason": "Interruzione non riuscita: {{reason}}", + "workflow.errors.failedToLoadDetails": "Impossibile caricare i dettagli dell'ID del flusso di lavoro: {{id}}", + "workflow.messages.areYouSureYouWantToRunThisWorkflow": "Eseguire questo flusso di lavoro?", + "workflow.messages.userNotAuthorizedExecute": "Utente non autorizzato a eseguire il flusso di lavoro.", + "workflow.messages.workflowDown": "Al momento lo stato del flusso di lavoro è inattivo o in errore. L'esecuzione potrebbe non riuscire o produrre risultati imprevisti.", + "workflow.buttons.run": "Esecuzione", + "workflow.buttons.runWorkflow": "Esegui flusso di lavoro", + "workflow.buttons.runAgain": "Esegui di nuovo", + "workflow.buttons.running": "Esecuzione in corso...", + "workflow.buttons.fromFailurePoint": "Dal punto di errore", + "workflow.buttons.runFailedAgain": "Esecuzione non riuscita di nuovo", + "run.title": "Esegui flusso di lavoro", + "run.pageTitle": "Esecuzione di {{processName}}", + "run.variables": "Esegui variabili", + "run.inputs": "Input", + "run.results": "Risultati", + "run.abort.title": "Interrompere l'esecuzione del flusso di lavoro?", + "run.abort.button": "Interrompi", + "run.abort.warning": "L'interruzione arresta immediatamente tutti i passaggi in corso e in sospeso. Tutti i lavori in corso andranno persi.", + "run.abort.completed.title": "Esecuzione completata", + "run.abort.completed.message": "Non è possibile interrompere l'esecuzione poiché è già stata completata.", + "run.status.completed": "Esecuzione completata", + "run.status.failed": "Esecuzione non riuscita {{time}}", + "run.status.aborted": "Esecuzione interrotta", + "run.status.completedWithMessage": "Esecuzione completata {{time}} con messaggio", + "run.status.failedAt": "Esecuzione non riuscita {{time}}", + "run.status.completedAt": "Esecuzione completata {{time}}", + "run.status.running": "Flusso di lavoro in esecuzione. Avviato alle {{time}}", + "run.status.runningWaitingAtNode": "Flusso di lavoro in esecuzione: in attesa sul nodo {{node}} dalle {{formattedTime}}", + "run.status.workflowIsRunning": "Flusso di lavoro in esecuzione. Avviato alle {{time}}", + "run.status.noAdditionalInfo": "Il flusso di lavoro non ha fornito ulteriori informazioni sullo stato.", + "run.status.resultsWillBeDisplayedHereOnceTheRunIsComplete": "I risultati verranno visualizzati qui una volta completata l'esecuzione.", + "run.retrigger": "Riattiva", + "run.viewVariables": "Visualizza variabili", + "run.suggestedNextWorkflow": "Flusso di lavoro successivo suggerito", + "run.suggestedNextWorkflows": "Flussi di lavoro successivi suggeriti", + "tooltips.completed": "Completato", + "tooltips.active": "Attivo", + "tooltips.aborted": "Interrotto", + "tooltips.suspended": "Sospeso", + "tooltips.pending": "In pausa", + "tooltips.workflowDown": "Al momento il flusso di lavoro è inattivo o in errore", + "tooltips.userNotAuthorizedAbort": "utente non autorizzato a interrompere il flusso di lavoro", + "tooltips.userNotAuthorizedExecute": "utente non autorizzato a eseguire il flusso di lavoro", + "messages.noDataAvailable": "Nessun dato disponibile", + "messages.noVariablesFound": "Nessuna variabile trovata per questa esecuzione.", + "messages.noInputSchemaWorkflow": "Nessuno schema di input definito per questo flusso di lavoro.", + "messages.workflowInstanceNoInputs": "L'istanza del flusso di lavoro non ha input", + "messages.missingJsonSchema.title": "Schema JSON mancante per il modulo di input", + "messages.missingJsonSchema.message": "Nessuno schema JSON definito per la convalida dell'input di questo flusso di lavoro. È comunque possibile eseguire il flusso di lavoro, ma la convalida degli input sarà limitata.", + "messages.additionalDetailsAboutThisErrorAreNotAvailable": "Non sono disponibili ulteriori dettagli su questo errore", + "common.close": "Chiudi", + "common.cancel": "Cancella", + "common.execute": "Esegui", + "common.details": "Dettagli", + "common.links": "Collegamenti", + "common.values": "Valori", + "common.back": "Indietro", + "common.run": "Esecuzione", + "common.next": "Successivo", + "common.review": "Revisione", + "common.unavailable": "---", + "stepperObjectField.error": "Il campo dell'oggetto Stepper non è supportato per lo schema che non contiene proprietà", + "formDecorator.error": "Il decorator del modulo deve fornire dati di contesto.", + "aria.close": "chiudi" + } + }, + "plugin.quickstart": { + "it": { + "header.title": "Muoviamo insieme i primi passi con Developer Hub", + "header.subtitle": "Ti guideremo attraverso alcuni rapidi passaggi", + "steps.setupAuthentication.title": "Impostazione dell'autenticazione", + "steps.setupAuthentication.description": "Impostazione di credenziali di accesso sicure per proteggere l'account da accessi non autorizzati.", + "steps.setupAuthentication.ctaTitle": "Per saperne di più", + "steps.configureRbac.title": "Configurazione di RBAC", + "steps.configureRbac.description": "Assegnare ruoli e autorizzazioni per controllare chi può visualizzare, creare o modificare le risorse, per garantire una collaborazione sicura ed efficiente.", + "steps.configureRbac.ctaTitle": "Gestisci l'accesso", + "steps.configureGit.title": "Configurazione di Git", + "steps.configureGit.description": "Collegare i provider Git, come GitHub, per gestire il codice, automatizzare i flussi di lavoro e integrare le funzionalità della piattaforma.", + "steps.configureGit.ctaTitle": "Per saperne di più", + "steps.managePlugins.title": "Gestione dei plugin", + "steps.managePlugins.description": "Sfogliare e installare le estensioni per aggiungere funzionalità, connettersi a strumenti esterni e personalizzare l'esperienza utente.", + "steps.managePlugins.ctaTitle": "Esplora i plugin", + "steps.importApplication.title": "Importare l'applicazione", + "steps.importApplication.description": "Importare il codice e i servizi esistenti nel catalogo per organizzarli e accedervi tramite il portale per sviluppatori.", + "steps.importApplication.ctaTitle": "Importa", + "steps.learnAboutCatalog.title": "Analisi del catalogo", + "steps.learnAboutCatalog.description": "Scoprire tutti i componenti software, i servizi e le API e visualizzarne proprietari e documentazione.", + "steps.learnAboutCatalog.ctaTitle": "Visualizza catalogo", + "steps.exploreSelfServiceTemplates.title": "Esplorare i modelli self-service", + "steps.exploreSelfServiceTemplates.description": "Utilizzare i nostri modelli self-service per configurare rapidamente nuovi progetti, servizi o documentazione.", + "steps.exploreSelfServiceTemplates.ctaTitle": "Esplora i modelli", + "steps.findAllLearningPaths.title": "Individuare tutti i percorsi di apprendimento", + "steps.findAllLearningPaths.description": "Integrare l'e-learning personalizzato nei flussi di lavoro con i percorsi di apprendimento per accelerare l'onboarding, colmare le lacune di competenze e promuovere le best practice.", + "steps.findAllLearningPaths.ctaTitle": "Visualizzare i percorsi di apprendimento", + "button.quickstart": "Avvio rapido", + "button.openQuickstartGuide": "Apri la Guida all'avvio rapido", + "button.closeDrawer": "Chiudi riquadro", + "button.gotIt": "Ho capito!", + "footer.progress": "{{progress}}% di avanzamento", + "footer.notStarted": "Non iniziato", + "footer.hide": "Nascondi", + "content.emptyState.title": "Contenuto di avvio rapido non disponibile per il ruolo utente.", + "item.expandAriaLabel": "Espandi i dettagli di {{title}}", + "item.collapseAriaLabel": "Comprimi i dettagli di {{title}}", + "item.expandButtonAriaLabel": "Espandi elemento", + "item.collapseButtonAriaLabel": "Comprimi elemento", + "dev.pageTitle": "Pagina di prova del plugin di avvio rapido", + "dev.pageDescription": "Questa è una pagina di prova per il plugin di avvio rapido. Utilizzare i pulsanti sottostanti per interagire con il riquadro di avvio rapido.", + "dev.drawerControls": "Comandi del riquadro", + "dev.currentState": "Stato attuale del riquadro: {{state}}", + "dev.stateOpen": "Aperto", + "dev.stateClosed": "Chiuso", + "dev.instructions": "Istruzioni", + "dev.step1": "1. Fare clic su \"Apri la Guida all'avvio rapido\" per aprire il riquadro", + "dev.step2": "2. Navigare tra i passaggi di avvio rapido", + "dev.step3": "3. Testare il monitoraggio dei progressi completando i passaggi", + "dev.step4": "4. È possibile chiudere il riquadro utilizzando il pulsante di chiusura o i comandi del riquadro stesso", + "dev.step5": "5. I progressi vengono salvati automaticamente su localStorage" + } + }, + "plugin.scorecard": { + "it": { + "emptyState.title": "Non è stata ancora aggiunta alcuna scheda punteggio", + "emptyState.description": "Le schede punteggio aiutano a monitorare a colpo d'occhio l'integrità dei componenti. Per iniziare, consultare la documentazione per le linee guida di configurazione.", + "emptyState.button": "Visualizza la documentazione", + "emptyState.altText": "Nessuna scheda punteggio", + "permissionRequired.title": "Autorizzazione mancante", + "permissionRequired.description": "Per visualizzare il plugin Scorecard, contattare l'amministratore per richiedere l'autorizzazione {{permission}}.", + "permissionRequired.button": "Per saperne di più", + "permissionRequired.altText": "Autorizzazione richiesta", + "errors.entityMissingProperties": "Entità priva delle proprietà richieste per la ricerca nella scheda punteggio", + "errors.invalidApiResponse": "Formato di risposta non valido dall'API della scheda punteggio", + "errors.fetchError": "Errore durante il recupero delle schede punteggio: {{error}}", + "errors.metricDataUnavailable": "Dati metrici non disponibili", + "errors.invalidThresholds": "Soglie non valide", + "metric.github.open_prs.title": "Richieste pull aperte su GitHub", + "metric.github.open_prs.description": "Conteggio attuale delle richieste pull aperte per uno specifico repository GitHub.", + "metric.jira.open_issues.title": "Ticket di blocco Jira aperti", + "metric.jira.open_issues.description": "Evidenzia il numero di problemi critici e di blocco attualmente aperti in Jira.", + "thresholds.success": "Attività riuscita", + "thresholds.warning": "Avviso", + "thresholds.error": "Errore" + } + }, + "plugin.translations-test": { + "it": { + "page.title": "Plugin di prova delle traduzioni", + "page.subtitle": "Plugin per testare la funzionalità delle traduzioni e le caratteristiche di i18next", + "essentials.key": "valore della chiave", + "essentials.look.deep": "valore dell'analisi approfondita", + "interpolation.key": "{{what}} è {{how}}", + "interpolation.nested.key": "{{what}} è {{how.value}}", + "interpolation.complex.message": "Ecco un {{link}}.", + "interpolation.complex.linkText": "link", + "formatting.intlNumber": "Alcuni {{val, number}}", + "formatting.intlNumberWithOptions": "Alcuni {{val, number(minimumFractionDigits: 2)}}", + "formatting.intlDateTime": "Il {{val, datetime}}", + "formatting.intlRelativeTime": "Lorem {{val, relativetime}}", + "formatting.intlRelativeTimeWithOptions": "Lorem {{val, relativetime(quarter)}}", + "formatting.intlRelativeTimeWithOptionsExplicit": "Lorem {{val, relativetime(range: quarter; style: narrow;)}}", + "plurals.key_zero": "zero", + "plurals.key_one": "uno", + "plurals.key_two": "due", + "plurals.key_few": "pochi", + "plurals.key_many": "molti", + "plurals.key_other": "altro", + "plurals.keyWithCount_one": "{{count}} elemento", + "plurals.keyWithCount_other": "{{count}} elementi", + "context.friend": "Un amico", + "context.friend_male": "Un fidanzato", + "context.friend_female": "Una ragazza", + "objects.tree.res": "aggiunto {{something}}" + } + }, + "plugin.translations": { + "it": { + "page.title": "Traduzioni", + "page.subtitle": "Gestione e visualizzazione delle traduzioni caricate", + "table.title": "Traduzioni caricate ({{count}})", + "table.headers.refId": "ID di riferimento", + "table.headers.key": "Chiave", + "table.options.pageSize": "Elementi per pagina", + "table.options.pageSizeOptions": "Mostra {{count}} elementi", + "export.title": "Traduzioni", + "export.downloadButton": "Scarica le traduzioni predefinite (italiano)", + "export.filename": "translations-{{timestamp}}.json", + "common.loading": "Caricamento...", + "common.error": "Si è verificato un errore", + "common.noData": "Nessun dato disponibile", + "common.refresh": "Aggiorna", + "language.displayFormat": "{{displayName}} ({{code}})" + } + } +} \ No newline at end of file diff --git a/translations/rhdh-plugins-reference-2025-12-05-ja-C.json b/translations/rhdh-plugins-reference-2025-12-05-ja-C.json new file mode 100644 index 0000000000..f1b50a2048 --- /dev/null +++ b/translations/rhdh-plugins-reference-2025-12-05-ja-C.json @@ -0,0 +1,1009 @@ +{ + "plugin.adoption-insights": { + "ja": { + "page.title": "Adoption Insights", + "header.title": "Adoption Insights", + "header.dateRange.today": "今日", + "header.dateRange.lastWeek": "先週", + "header.dateRange.lastMonth": "先月", + "header.dateRange.last28Days": "過去 28 日間", + "header.dateRange.lastYear": "去年", + "header.dateRange.dateRange": "日付範囲...", + "header.dateRange.cancel": "キャンセル", + "header.dateRange.ok": "OK", + "header.dateRange.defaultLabel": "過去 28 日間", + "header.dateRange.title": "日付範囲", + "header.dateRange.startDate": "開始日", + "header.dateRange.endDate": "終了日", + "activeUsers.title": "アクティブユーザー", + "activeUsers.averagePrefix": "平均ピークアクティブユーザー数は", + "activeUsers.averageText": "{{period}} あたり {{count}}", + "activeUsers.averageSuffix": " でした (対象期間中)。", + "activeUsers.hour": "時間", + "activeUsers.day": "日", + "activeUsers.week": "週", + "activeUsers.month": "月", + "activeUsers.legend.newUsers": "新規ユーザー", + "activeUsers.legend.returningUsers": "リピートユーザー", + "templates.title": "上位のテンプレート", + "templates.topNTitle": "上位 {{count}} 件のテンプレート", + "templates.allTitle": "すべてのテンプレート", + "catalogEntities.title": "上位のカタログエンティティー", + "catalogEntities.topNTitle": "上位 {{count}} 件のカタログエンティティー", + "catalogEntities.allTitle": "すべてのカタログエンティティー", + "plugins.title": "上位のプラグイン", + "plugins.topNTitle": "上位 {{count}} 件のプラグイン", + "plugins.allTitle": "すべてのプラグイン", + "techDocs.title": "上位の TechDocs", + "techDocs.topNTitle": "上位 {{count}} 件の TechDocs", + "techDocs.allTitle": "すべての TechDocs", + "searches.title": "上位の検索", + "searches.totalCount": "{{count}} 件の検索", + "searches.averagePrefix": "平均検索回数は", + "searches.averageText": "{{period}} あたり {{count}}", + "searches.averageSuffix": " でした (対象期間中)。", + "searches.hour": "時間", + "searches.day": "日", + "searches.week": "週", + "searches.month": "月", + "users.title": "総ユーザー数", + "users.haveLoggedIn": "ログイン済み", + "users.loggedInUsers": "ログイン済みユーザー", + "users.licensed": "ライセンス保有", + "users.licensedNotLoggedIn": "ライセンス保有 (ログインなし)", + "users.ofTotal": "{{total}} 中", + "users.tooltip": "ライセンスユーザー数は app-config.yaml で設定します", + "table.headers.name": "名前", + "table.headers.kind": "種類", + "table.headers.lastUsed": "最終使用", + "table.headers.views": "表示回数", + "table.headers.executions": "実行回数", + "table.headers.trend": "トレンド", + "table.headers.entity": "エンティティー", + "table.pagination.topN": "上位 {{count}} 件", + "filter.all": "すべて", + "filter.selectKind": "種類の選択", + "common.noResults": "この日付範囲の結果はありません。", + "common.readMore": "さらに表示する", + "common.exportCSV": "CSV エクスポート", + "common.downloading": "ダウンロード中...", + "common.today": "今日", + "common.yesterday": "昨日", + "common.numberOfSearches": "検索数", + "common.filteredBy": "フィルタリング条件", + "common.invalidDateFormat": "無効な日付形式", + "common.csvFilename": "active_users", + "permission.title": "権限の不足", + "permission.description": "\"Adoption Insights\" プラグインを表示するには、管理者に連絡して adoption-insights.events.read 権限を付与してもらうよう依頼してください。" + } + }, + "plugin.ai-experience": { + "ja": { + "page.title": "AI エクスペリエンス", + "page.subtitle": "AI モデル、サーバー、ニュース、学習リソースの探索", + "learn.getStarted.title": "スタート", + "learn.getStarted.description": "Red Hat Developer Hub について学習しましょう。", + "learn.getStarted.cta": "Tech Docs に移動", + "learn.explore.title": "探索", + "learn.explore.description": "AI モデル、サーバー、テンプレートを探索しましょう。", + "learn.explore.cta": "カタログに移動", + "learn.learn.title": "学習", + "learn.learn.description": "AI 分野の新しいスキルを探索して習得しましょう。", + "learn.learn.cta": "ラーニングパスに移動", + "news.pageTitle": "AI ニュース", + "news.fetchingRssFeed": "RSS フィードを取得しています", + "news.noContentAvailable": "利用可能なコンテンツがありません", + "news.noContentDescription": "該当する RSS フィードからコンテンツを取得できなかったようです。URL を再確認してください。プラグインの設定ファイルを更新して別のソースに切り替えることもできます。", + "news.noRssContent": "RSS コンテンツなし", + "modal.title.preview": "添付ファイルのプレビュー", + "modal.title.edit": "添付ファイルの編集", + "modal.edit": "編集", + "modal.save": "保存", + "modal.close": "閉じる", + "modal.cancel": "キャンセル", + "common.viewMore": "詳細の表示", + "common.guest": "ゲスト", + "common.template": "テンプレート", + "common.latest": "最新", + "common.more": "詳細", + "greeting.goodMorning": "おはようございます", + "greeting.goodAfternoon": "こんにちは", + "greeting.goodEvening": "こんばんは", + "sections.exploreAiModels": "AI モデルの探索", + "sections.exploreAiTemplates": "AI テンプレートの探索", + "sections.discoverModels": "組織内で利用可能な AI モデルおよびサービスを探す", + "sections.viewAllModels": "{{count}} 個のモデルをすべて表示する", + "sections.viewAllTemplates": "{{count}} 個のテンプレートをすべて表示する", + "accessibility.close": "閉じる", + "accessibility.aiIllustration": "AI のイラスト", + "accessibility.aiModelsIllustration": "AI モデルのイラスト" + } + }, + "plugin.bulk-import": { + "ja": { + "page.title": "一括インポート", + "page.subtitle": "Red Hat Developer Hub へのエンティティーのインポート", + "page.addRepositoriesTitle": "リポジトリーの追加", + "page.importEntitiesTitle": "エンティティーのインポート", + "page.addRepositoriesSubtitle": "4 ステップで Red Hat Developer Hub にリポジトリーを追加", + "page.importEntitiesSubtitle": "Red Hat Developer Hub へのインポート", + "page.typeLink": "一括インポート", + "sidebar.bulkImport": "一括インポート", + "permissions.title": "権限が必要", + "permissions.addRepositoriesMessage": "リポジトリーを追加するには、管理者に連絡して `bulk.import` 権限を付与してもらうよう依頼してください。", + "permissions.viewRepositoriesMessage": "追加されたリポジトリーを表示するには、管理者に連絡して `bulk.import` 権限を付与してもらうよう依頼してください。", + "repositories.addedRepositories": "追加されたリポジトリー", + "repositories.importedEntities": "インポートされたエンティティー", + "repositories.addedRepositoriesCount": "追加されたリポジトリー ({{count}})", + "repositories.importedEntitiesCount": "インポートされたエンティティー ({{count}})", + "repositories.noRecordsFound": "レコードが見つかりません", + "repositories.refresh": "更新", + "repositories.import": "インポート", + "repositories.removing": "削除中...", + "repositories.deleteRepository": "リポジトリーの削除", + "repositories.removeRepositoryQuestion": "{{repoName}} {{repositoryText}} を削除しますか?", + "repositories.repositoryText": "リポジトリー", + "repositories.removeRepositoryWarningScaffolder": "リポジトリーを削除すると、関連するすべての scaffolder タスク情報も削除されます。", + "repositories.removeRepositoryWarning": "リポジトリーを削除すると、関連するすべての情報がカタログページから消去されます。", + "repositories.removeRepositoryWarningGitlab": "削除すると、関連するすべての情報がカタログページから消去されます。", + "repositories.cannotRemoveRepositoryUrl": "リポジトリー URL がないため、リポジトリーを削除できません。", + "repositories.unableToRemoveRepository": "リポジトリーを削除できません。{{error}}", + "repositories.removeTooltipDisabled": "このリポジトリーは app-config ファイルに追加されています。削除するにはファイルを直接変更してください", + "repositories.removeTooltipRepositoryScaffolder": "リポジトリーと関連する scaffolder タスク情報を削除します", + "repositories.errorOccuredWhileFetching": "プルリクエストの取得中にエラーが発生しました", + "repositories.failedToCreatePullRequest": "プルリクエストの作成に失敗しました", + "repositories.errorOccured": "エラーが発生しました", + "repositories.editCatalogInfoTooltip": "catalog-info.yaml プルリクエストを編集する", + "repositories.viewCatalogInfoTooltip": "catalog-info.yaml ファイルを表示する", + "repositories.pr": "PR", + "status.alreadyImported": "インポート済み", + "status.added": "追加済み", + "status.waitingForApproval": "承認待ち", + "status.imported": "インポート", + "errors.prErrorPermissions": "権限が不十分なため、新しい PR を作成できませんでした。管理者に問い合わせてください。", + "errors.catalogInfoExists": "catalog-info.yaml がリポジトリーにすでに存在するため、新しい PR は作成されません。ただし、エンティティーはカタログページに登録されます。", + "errors.catalogEntityConflict": "カタログエンティティーの競合のため、新しい PR を作成できませんでした。", + "errors.repoEmpty": "リポジトリーが空のため、新しい PR を作成できませんでした。最初のコミットをリポジトリーにプッシュしてください。", + "errors.codeOwnersNotFound": "リポジトリーに CODEOWNERS ファイルがありません。新しい PR を作成するには、CODEOWNERS ファイルを追加してください。", + "errors.errorOccurred": "エラーが発生しました", + "errors.failedToCreatePullRequest": "プルリクエストの作成に失敗しました", + "validation.componentNameInvalid": "\"{{value}}\" は無効です。[a-zA-Z0-9] から成り、[-_.] のいずれかで区切られた一連の文字列 (合計最大 63 文字) が必要です。カタログファイル形式の詳細は、https://github.com/backstage/backstage/blob/master/docs/architecture-decisions/adr002-default-catalog-file-format.md を参照してください", + "validation.componentNameRequired": "コンポーネント名は必須です", + "validation.entityOwnerRequired": "エンティティー所有者は必須です", + "validation.titleRequired": "{{approvalTool}} のタイトルは必須です", + "validation.descriptionRequired": "{{approvalTool}} の説明は必須です", + "validation.keyValuePairFormat": "各エントリーは、コロンで区切ったキーと値の形で指定する必要があります。", + "table.headers.name": "名前", + "table.headers.url": "URL", + "table.headers.repoUrl": "Git リポジトリー URL", + "table.headers.organization": "組織", + "table.headers.organizationGroup": "組織/グループ", + "table.headers.group": "グループ", + "table.headers.status": "ステータス", + "table.headers.lastUpdated": "最終更新", + "table.headers.actions": "アクション", + "table.headers.catalogInfoYaml": "catalog-info.yaml", + "table.pagination.rows5": "5 行", + "table.pagination.rows10": "10 行", + "table.pagination.rows20": "20 行", + "table.pagination.rows50": "50 行", + "table.pagination.rows100": "100 行", + "steps.chooseApprovalTool": "PR 作成用の承認ツール (GitHub/GitLab) を選択する", + "steps.chooseRepositories": "追加するリポジトリーを選択する", + "steps.chooseItems": "インポートする項目を選択する", + "steps.generateCatalogInfo": "各リポジトリーの catalog-info.yaml ファイルを生成する", + "steps.generateCatalogInfoItems": "選択した各項目の catalog-info.yaml ファイルを生成する", + "steps.editPullRequest": "必要に応じてプルリクエストの詳細を編集する", + "steps.trackStatus": "承認ステータスを追跡する", + "addRepositories.approvalTool.title": "承認ツール", + "addRepositories.approvalTool.description": "PR 作成用の承認ツールを選択する", + "addRepositories.approvalTool.tooltip": "インポートには承認が必要です。プル/マージリクエストが承認されると、リポジトリー/プロジェクトがカタログページにインポートされます。", + "addRepositories.approvalTool.github": "GitHub", + "addRepositories.approvalTool.gitlab": "GitLab", + "addRepositories.repositoryType.title": "リポジトリーの種類", + "addRepositories.repositoryType.repository": "リポジトリー", + "addRepositories.repositoryType.organization": "組織", + "addRepositories.repositoryType.project": "プロジェクト", + "addRepositories.repositoryType.group": "グループ", + "addRepositories.searchPlaceholder": "検索", + "addRepositories.clearSearch": "検索のクリア", + "addRepositories.noRepositoriesFound": "リポジトリーが見つかりません", + "addRepositories.allRepositoriesAdded": "すべてのリポジトリーが追加されました", + "addRepositories.noSelection": "なし", + "addRepositories.selectRepositories": "リポジトリーの選択", + "addRepositories.selectedRepositories": "リポジトリー", + "addRepositories.selectedProjects": "プロジェクト", + "addRepositories.selectedLabel": "選択済み", + "addRepositories.selectedCount": "{{count}} 件を選択済み", + "addRepositories.addSelected": "選択した項目の追加", + "addRepositories.generateCatalogInfo": "catalog-info.yaml の生成", + "addRepositories.editPullRequest": "プルリクエストの編集", + "addRepositories.preview": "プレビュー", + "catalogInfo.status.generating": "生成中", + "catalogInfo.status.notGenerated": "生成されませんでした", + "common.add": "追加", + "common.cancel": "キャンセル", + "common.close": "閉じる", + "common.delete": "削除", + "common.edit": "編集", + "common.filter": "フィルター", + "common.import": "インポート", + "common.remove": "削除", + "common.save": "保存", + "common.select": "選択", + "common.update": "更新", + "common.view": "表示", + "time.daysAgo": "{{count}} 日前", + "time.hoursAgo": "{{count}} 時間前", + "time.minutesAgo": "{{count}} 分前", + "time.secondsAgo": "{{count}} 秒前", + "previewFile.readyToImport": "インポート準備完了", + "previewFile.previewFile": "ファイルのプレビュー", + "previewFile.previewFiles": "ファイルのプレビュー", + "previewFile.failedToCreatePR": "PR の作成に失敗しました", + "previewFile.prCreationUnsuccessful": "一部のリポジトリーで PR の作成に失敗しました。理由を確認するには、`編集` をクリックしてください。", + "previewFile.failedToFetchPR": "プルリクエストの取得に失敗しました。以下に新しい YAML が生成されました。", + "previewFile.invalidEntityYaml": "プルリクエスト内のエンティティー YAML が無効です (ファイルが空であるか、apiVersion、kind、または metadata.name がありません)。以下に新しい YAML が生成されました。", + "previewFile.pullRequestPendingApproval": "[{{pullRequestText}}]({{pullRequestUrl}}) は承認待ちです", + "previewFile.pullRequestText": "プルリクエスト", + "previewFile.viewRepository": "リポジトリーの表示", + "previewFile.closeDrawer": "ドロワーを閉じる", + "previewFile.keyValuePlaceholder": "key1: value2; key2: value2", + "previewFile.useSemicolonSeparator": "セミコロンを使用して {{label}} を区切ってください", + "previewFile.preview": "プレビュー", + "previewFile.pullRequest.title": "プルリクエスト", + "previewFile.pullRequest.mergeRequest": "マージリクエスト", + "previewFile.pullRequest.serviceNowTicket": "ServiceNow チケット", + "previewFile.pullRequest.details": "{{tool}} の詳細", + "previewFile.pullRequest.titleLabel": "{{tool}} のタイトル", + "previewFile.pullRequest.bodyLabel": "{{tool}} のボディー", + "previewFile.pullRequest.titlePlaceholder": "Backstage カタログエンティティー記述子ファイルの追加", + "previewFile.pullRequest.bodyPlaceholder": "説明文 (Markdown 対応)", + "previewFile.pullRequest.entityConfiguration": "エンティティー設定", + "previewFile.pullRequest.componentNameLabel": "作成されるコンポーネントの名前", + "previewFile.pullRequest.componentNamePlaceholder": "コンポーネント名", + "previewFile.pullRequest.entityOwnerLabel": "エンティティー所有者", + "previewFile.pullRequest.entityOwnerPlaceholder": "グループとユーザー", + "previewFile.pullRequest.entityOwnerHelper": "リストから所有者を選択するか、グループまたはユーザーへの参照を入力してください", + "previewFile.pullRequest.loadingText": "グループとユーザーを読み込んでいます", + "previewFile.pullRequest.previewEntities": "エンティティーのプレビュー", + "previewFile.pullRequest.annotations": "アノテーション", + "previewFile.pullRequest.labels": "ラベル", + "previewFile.pullRequest.spec": "仕様", + "previewFile.pullRequest.useCodeOwnersFile": "エンティティー所有者として *CODEOWNERS* ファイルを使用する", + "previewFile.pullRequest.codeOwnersWarning": "警告: ターゲットの場所に CODEOWNERS ファイルが見つからない場合、失敗する可能性があります。", + "forms.footer.createServiceNowTicket": "ServiceNow チケットの作成", + "forms.footer.createServiceNowTickets": "ServiceNow チケットの作成", + "forms.footer.createPullRequest": "プルリクエストの作成", + "forms.footer.createPullRequests": "プルリクエストの作成", + "forms.footer.serviceNowTooltip": "ServiceNow チケットを作成する前に、Catalog-info.yaml ファイルを生成する必要があります", + "forms.footer.importTooltip": "インポート用に Catalog-info.yaml ファイルを生成する必要があります。", + "forms.footer.pullRequestTooltip": "プルリクエストを作成する前に、Catalog-info.yaml ファイルを生成する必要があります", + "tasks.tasksFor": "{{importJobStatusId}} のタスク", + "tasks.taskId": "タスク ID", + "tasks.taskLink": "タスクのリンク", + "tasks.viewTask": "タスクの表示", + "tasks.loading": "読み込み中...", + "tasks.errorFetchingData": "データの取得中にエラーが発生しました", + "tasks.taskCancelled": "キャンセルされたタスク", + "tasks.taskCompleted": "完了したタスク", + "tasks.taskFailed": "失敗したタスク", + "tasks.taskOpen": "未処理のタスク", + "tasks.taskProcessing": "処理中のタスク", + "tasks.taskSkipped": "スキップされたタスク" + } + }, + "plugin.global-floating-action-button": { + "ja": { + "fab.create.label": "作成", + "fab.create.tooltip": "エンティティーの作成", + "fab.docs.label": "ドキュメント", + "fab.docs.tooltip": "ドキュメント", + "fab.apis.label": "API", + "fab.apis.tooltip": "API ドキュメント", + "fab.github.label": "GitHub", + "fab.github.tooltip": "GitHub リポジトリー", + "fab.bulkImport.label": "一括インポート", + "fab.bulkImport.tooltip": "複数のリポジトリーを一括登録する", + "fab.quay.label": "Quay", + "fab.quay.tooltip": "Quay コンテナーレジストリー", + "fab.menu.tooltip": "メニュー" + } + }, + "plugin.global-header": { + "ja": { + "help.tooltip": "ヘルプ", + "help.noSupportLinks": "サポートリンクがありません", + "help.noSupportLinksSubtitle": "管理者がサポートリンクを設定する必要があります。", + "help.quickStart": "クイックスタート", + "help.supportTitle": "サポート", + "profile.picture": "プロファイル写真", + "profile.settings": "設定", + "profile.myProfile": "マイプロファイル", + "profile.signOut": "サインアウト", + "search.placeholder": "検索...", + "search.noResults": "結果が見つかりません", + "search.errorFetching": "結果の取得中にエラーが発生しました", + "applicationLauncher.tooltip": "アプリケーションランチャー", + "applicationLauncher.noLinksTitle": "アプリケーションリンクが設定されていません", + "applicationLauncher.noLinksSubtitle": "ここからすばやくアクセスできるように、動的プラグイン設定でアプリケーションリンクを設定してください。", + "applicationLauncher.developerHub": "Developer Hub", + "applicationLauncher.rhdhLocal": "RHDH Local", + "applicationLauncher.sections.documentation": "ドキュメント", + "applicationLauncher.sections.developerTools": "開発者ツール", + "starred.title": "スター付き項目", + "starred.removeTooltip": "リストから削除", + "starred.noItemsTitle": "スター付き項目はまだありません", + "starred.noItemsSubtitle": "エンティティーの名前の横にある星のアイコンをクリックすると、すぐにアクセスできるように、ここに保存されます。", + "notifications.title": "通知", + "notifications.unsupportedDismissOption": "終了オプション \"{{option}}\" はサポートされていません。現在サポートされているのは、\"none\"、\"session\"、または \"localstorage\" です!", + "create.title": "セルフサービス", + "create.registerComponent.title": "コンポーネントの登録", + "create.registerComponent.subtitle": "カタログページへのインポート", + "create.templates.sectionTitle": "テンプレートの使用", + "create.templates.allTemplates": "すべてのテンプレート", + "create.templates.errorFetching": "テンプレートの取得中にエラーが発生しました", + "create.templates.noTemplatesAvailable": "利用できるテンプレートがありません" + } + }, + "plugin.dynamic-home-page": { + "ja": { + "header.welcome": "おかえりなさい!", + "header.welcomePersonalized": "おかえりなさい、{{name}}!", + "header.local": "ローカル", + "homePage.empty": "ホームページカード (マウントポイント) が設定されていないか見つかりません。", + "search.placeholder": "検索", + "quickAccess.title": "クイックアクセス", + "quickAccess.fetchError": "データを取得できませんでした。", + "quickAccess.error": "不明なエラー", + "featuredDocs.learnMore": " 詳細", + "templates.title": "テンプレートの探索", + "templates.fetchError": "データを取得できませんでした。", + "templates.error": "不明なエラー", + "templates.empty": "テンプレートはまだ追加されていません", + "templates.emptyDescription": "テンプレートが追加されると、利用状況に合わせてカスタマイズされた関連コンテンツがこのスペースに表示されます。", + "templates.register": "テンプレートの登録", + "templates.viewAll": "{{count}} 個のテンプレートをすべて表示する", + "onboarding.greeting.goodMorning": "おはようございます", + "onboarding.greeting.goodAfternoon": "こんにちは", + "onboarding.greeting.goodEvening": "こんばんは", + "onboarding.guest": "ゲスト", + "onboarding.getStarted.title": "スタート", + "onboarding.getStarted.description": "Red Hat Developer Hub について学習しましょう。", + "onboarding.getStarted.buttonText": "ドキュメントを読む", + "onboarding.getStarted.ariaLabel": "ドキュメントを読む (新しいタブで開きます)", + "onboarding.explore.title": "探索", + "onboarding.explore.description": "コンポーネント、API、テンプレートを探索しましょう。", + "onboarding.explore.buttonText": "カタログに移動", + "onboarding.explore.ariaLabel": "カタログに移動", + "onboarding.learn.title": "学習", + "onboarding.learn.description": "新しいスキルを探索して習得しましょう。", + "onboarding.learn.buttonText": "ラーニングパスに移動", + "onboarding.learn.ariaLabel": "ラーニングパスに移動", + "entities.title": "ソフトウェアカタログの探索", + "entities.fetchError": "データを取得できませんでした。", + "entities.error": "不明なエラー", + "entities.description": "組織内で利用可能なシステム、コンポーネント、リソース、API を閲覧します。", + "entities.close": "閉じる", + "entities.empty": "ソフトウェアカタログはまだ追加されていません", + "entities.emptyDescription": "ソフトウェアカタログが追加されると、利用状況に合わせてカスタマイズされた関連コンテンツがこのスペースに表示されます。", + "entities.register": "コンポーネントの登録", + "entities.viewAll": "{{count}} 個のカタログエンティティーをすべて表示する" + } + }, + "plugin.lightspeed": { + "ja": { + "page.title": "Lightspeed", + "page.subtitle": "AI 搭載開発アシスタント", + "prompts.codeReadability.title": "コードの可読性に関するヘルプを利用する", + "prompts.codeReadability.message": "コードの可読性と保守性を高めるための手法を提案してくれませんか?", + "prompts.debugging.title": "デバッグに関するヘルプを利用する", + "prompts.debugging.message": "アプリケーションがデータベースに接続しようとするとエラーが発生します。問題の特定を手伝ってくれませんか?", + "prompts.developmentConcept.title": "開発コンセプトを説明する", + "prompts.developmentConcept.message": "マイクロサービスアーキテクチャーの仕組みと、モノリシックな設計と比べた利点について説明してくれませんか?", + "prompts.codeOptimization.title": "コードの最適化を提案する", + "prompts.codeOptimization.message": "コードを最適化してパフォーマンスを向上させるための一般的な方法を提案してくれませんか?", + "prompts.documentation.title": "ドキュメントの要約", + "prompts.documentation.message": "Web アプリケーションでの OAuth 2.0 認証の実装に関するドキュメントを要約してくれませんか?", + "prompts.gitWorkflows.title": "Git を使用したワークフロー", + "prompts.gitWorkflows.message": "既存の作業内容を失うことなく、別のブランチのコードに変更を加えたいです。Git を使用してこれを行うにはどうすればよいですか?", + "prompts.testingStrategies.title": "テスト方法を提案する", + "prompts.testingStrategies.message": "堅牢でエラーのないアプリケーションを構築するための一般的なテスト方法をいくつか提案してくれませんか?", + "prompts.sortingAlgorithms.title": "ソートのアルゴリズムをわかりやすく説明する", + "prompts.sortingAlgorithms.message": "クイックソートとマージソートのアルゴリズムの違いと、それぞれの使用タイミングについて説明してくれませんか?", + "prompts.eventDriven.title": "イベント駆動型アーキテクチャーを理解する", + "prompts.eventDriven.message": "イベント駆動型アーキテクチャーとは何か、またそれをソフトウェア開発でどのようなときに使用すると有益かを説明してくれませんか?", + "prompts.tekton.title": "Tekton を使用したデプロイ", + "prompts.tekton.message": "Tekton パイプラインを使用してアプリケーションのデプロイを自動化するのを手伝ってくれませんか?", + "prompts.openshift.title": "OpenShift デプロイメントの作成", + "prompts.openshift.message": "コンテナー化されたアプリケーション用に OpenShift で新しいデプロイメントを作成する手順を説明してくれませんか?", + "prompts.rhdh.title": "Red Hat Developer Hub を使い始める", + "prompts.rhdh.message": "ソフトウェアカタログの探索やサービスの追加など、開発者が Developer Hub を利用する際にまず何をすべきか教えてくれませんか?", + "conversation.delete.confirm.title": "チャットを削除しますか?", + "conversation.delete.confirm.message": "このチャットはここに表示されなくなります。Lightspeed Activity からのプロンプト、回答、フィードバックなど、関連アクティビティーも削除されます。", + "conversation.delete.confirm.action": "削除", + "conversation.rename.confirm.title": "チャットの名前を変更しますか?", + "conversation.rename.confirm.action": "名前の変更", + "conversation.rename.placeholder": "チャット名", + "conversation.action.error": "エラーが発生しました: {{error}}", + "permission.required.title": "権限の不足", + "permission.required.description": "lightspeed プラグインを表示するには、管理者に連絡して lightspeed.chat.read および lightspeed.chat.create 権限を付与してもらうよう依頼してください。", + "disclaimer.withValidation": "この機能は AI テクノロジーを使用します。入力内容に個人情報やその他の機密情報を含めないでください。やり取りの内容は、Red Hat の製品やサービスを改善するために使用される場合があります。", + "disclaimer.withoutValidation": "この機能は AI テクノロジーを使用します。入力内容に個人情報やその他の機密情報を含めないでください。やり取りの内容は、Red Hat の製品やサービスを改善するために使用される場合があります。", + "footer.accuracy.label": "AI によって生成されたコンテンツは、使用する前に必ず確認してください。", + "footer.accuracy.popover.title": "正確性の確認", + "footer.accuracy.popover.description": "Developer Lightspeed は正確性を期すよう努めておりますが、誤りが生じる可能性は常にあります。特に意思決定や行動に関わる重要な情報については、信頼できる情報源でその情報を確認することを推奨します。", + "footer.accuracy.popover.image.alt": "脚注ポップオーバーのサンプル画像", + "footer.accuracy.popover.cta.label": "了解しました", + "footer.accuracy.popover.link.label": "詳細", + "common.cancel": "キャンセル", + "common.close": "閉じる", + "common.readMore": "さらに表示する", + "common.noSearchResults": "検索に一致する結果がありません", + "menu.newConversation": "新しいチャット", + "chatbox.header.title": "Developer Lightspeed", + "chatbox.search.placeholder": "検索", + "chatbox.provider.other": "その他", + "chatbox.emptyState.noPinnedChats": "固定したチャットがありません", + "chatbox.emptyState.noRecentChats": "最近のチャットがありません", + "chatbox.emptyState.noResults.title": "結果が見つかりません", + "chatbox.emptyState.noResults.body": "検索クエリーを調整して再試行してください。スペルを確認するか、より一般的な用語をお試しください。", + "chatbox.welcome.greeting": "こんにちは、{{userName}}", + "chatbox.welcome.description": "今日は何をお手伝いしましょうか?", + "chatbox.message.placeholder": "メッセージを送信し、必要に応じて JSON、YAML、または TXT ファイルをアップロードします...", + "chatbox.fileUpload.failed": "ファイルのアップロードに失敗しました", + "chatbox.fileUpload.infoText": "サポートされているファイルの種類は、.txt、.yaml、.json です。最大ファイルサイズは 25 MB です。", + "aria.chatbotSelector": "チャットボットセレクター", + "aria.important": "重要", + "aria.chatHistoryMenu": "チャット履歴メニュー", + "aria.closeDrawerPanel": "ドロワーパネルを閉じる", + "aria.search.placeholder": "検索", + "aria.searchPreviousConversations": "以前の会話の検索", + "aria.resize": "サイズ変更", + "aria.options.label": "オプション", + "aria.scroll.down": "一番下に戻る", + "aria.scroll.up": "一番上に戻る", + "aria.settings.label": "チャットボットのオプション", + "modal.edit": "編集", + "modal.save": "保存", + "modal.close": "閉じる", + "modal.cancel": "キャンセル", + "conversation.delete": "削除", + "conversation.rename": "名前の変更", + "conversation.addToPinnedChats": "固定", + "conversation.removeFromPinnedChats": "固定解除", + "conversation.announcement.userMessage": "ユーザーからのメッセージ: {{prompt}}。ボットからのメッセージを読み込んでいます。", + "user.guest": "ゲスト", + "user.loading": "...", + "tooltip.attach": "割り当て", + "tooltip.send": "送信", + "tooltip.microphone.active": "聞き取りを停止", + "tooltip.microphone.inactive": "マイクを使用する", + "button.newChat": "新しいチャット", + "tooltip.chatHistoryMenu": "チャット履歴メニュー", + "tooltip.responseRecorded": "回答が記録されました", + "tooltip.backToTop": "一番上に戻る", + "tooltip.backToBottom": "一番下に戻る", + "tooltip.settings": "チャットボットのオプション", + "modal.title.preview": "添付ファイルのプレビュー", + "modal.title.edit": "添付ファイルの編集", + "icon.lightspeed.alt": "lightspeed アイコン", + "icon.permissionRequired.alt": "権限不足アイコン", + "message.options.label": "オプション", + "file.upload.error.alreadyExists": "ファイルがすでに存在します。", + "file.upload.error.multipleFiles": "複数のファイルをアップロードしました。", + "file.upload.error.unsupportedType": "サポートされていないファイルタイプです。サポートされているタイプは、.txt、.yaml、.json です。", + "file.upload.error.fileTooLarge": "ファイルサイズが大きすぎます。ファイルサイズが 25 MB 未満であることを確認してください。", + "file.upload.error.readFailed": "ファイルの読み取りに失敗しました: {{errorMessage}}", + "error.context.fileAttachment": "useFileAttachmentContext が FileAttachmentContextProvider 内に収まっている必要があります", + "feedback.form.title": "なぜこの評価を選んだのですか?", + "feedback.form.textAreaPlaceholder": "その他ご意見をお聞かせください (任意)", + "feedback.form.submitWord": "送信", + "feedback.tooltips.goodResponse": "回答内容が良い", + "feedback.tooltips.badResponse": "回答内容が悪い", + "feedback.tooltips.copied": "コピー済み", + "feedback.tooltips.copy": "コピー", + "feedback.tooltips.listening": "聞き取り中", + "feedback.tooltips.listen": "聞き取り", + "feedback.quickResponses.positive.helpful": "情報が役に立つ", + "feedback.quickResponses.positive.easyToUnderstand": "わかりやすい", + "feedback.quickResponses.positive.resolvedIssue": "問題が解決した", + "feedback.quickResponses.negative.didntAnswer": "質問に対する答えが得られなかった", + "feedback.quickResponses.negative.hardToUnderstand": "わかりにくい", + "feedback.quickResponses.negative.notHelpful": "役に立たない", + "feedback.completion.title": "フィードバックを送信しました", + "feedback.completion.body": "ご回答を受け取りました。ご意見をお聞かせいただきありがとうございました!", + "conversation.category.pinnedChats": "固定", + "conversation.category.recent": "最近", + "settings.pinned.enable": "チャットの固定の有効化", + "settings.pinned.disable": "チャットの固定の無効化", + "settings.pinned.enabled.description": "チャットの固定は現在有効です", + "settings.pinned.disabled.description": "チャットの固定は現在無効です" + } + }, + "plugin.marketplace": { + "ja": { + "header.title": "拡張機能", + "header.extensions": "拡張機能", + "header.catalog": "カタログ", + "header.installedPackages": "インストール済みパッケージ", + "header.installedPackagesWithCount": "インストール済みパッケージ ({{count}})", + "header.pluginsPage": "プラグイン", + "header.packagesPage": "パッケージ", + "header.collectionsPage": "コレクション", + "button.install": "インストール", + "button.uninstall": "アンインストール", + "button.enable": "有効にする", + "button.disable": "無効にする", + "button.update": "更新", + "button.save": "保存", + "button.close": "閉じる", + "button.viewAll": "すべてのプラグインの表示", + "button.viewDocumentation": "ドキュメントの表示", + "button.viewInstalledPlugins": "インストール済みプラグインの表示 ({{count}})", + "button.restart": "再起動が必要です", + "status.notInstalled": "インストールされていません", + "status.installed": "インストール済み", + "status.disabled": "無効", + "status.partiallyInstalled": "部分的にインストール済み", + "status.updateAvailable": "更新が利用可能", + "role.backend": "バックエンド", + "role.backendModule": "バックエンドモジュール", + "role.frontend": "フロントエンド", + "emptyState.noPluginsFound": "プラグインが見つかりません", + "emptyState.mustEnableBackend": "Extensions バックエンドプラグインを有効にする必要があります", + "emptyState.noPluginsDescription": "プラグインの読み込み中にエラーが発生しました。解決するには、設定を確認するか、プラグインのドキュメントを確認してください。利用可能な他のプラグインを探すこともできます。", + "emptyState.configureBackend": "'@red-hat-developer-hub/backstage-plugin-marketplace-backend' プラグインを設定してください。", + "alert.productionDisabled": "実稼働環境ではプラグインのインストールが無効になっています。", + "alert.installationDisabled": "プラグインのインストールが無効になっています。", + "alert.missingDynamicArtifact": "このパッケージを管理できません。アクションを有効にするには、必要な **spec.dynamicArtifact** を持つカタログエンティティーを追加する必要があります。", + "alert.missingDynamicArtifactTitle": "パッケージを変更できません", + "alert.missingDynamicArtifactForPlugin": "このプラグインを管理できません。アクションを有効にするには、必要な **spec.dynamicArtifact** を持つカタログエンティティーを、関連するすべてのパッケージに追加する必要があります。", + "alert.missingDynamicArtifactTitlePlugin": "プラグインを変更できません", + "alert.extensionsExample": "これを有効にするには、dynamic-plugins 設定ファイルで拡張機能設定を追加または変更してください。", + "alert.singlePluginRestart": "**{{pluginName}}** プラグインが、インストール、更新、有効化、または無効化を完了するために、バックエンドシステムの再起動を必要としています。", + "alert.multiplePluginRestart": "**{{count}}** 個のプラグインが、インストール、更新、有効化、または無効化を完了するために、バックエンドシステムの再起動を必要としています。", + "alert.singlePackageRestart": "**{{packageName}}** パッケージが、インストール、更新、有効化、または無効化を完了するために、バックエンドシステムの再起動を必要としています。", + "alert.multiplePackageRestart": "**{{count}}** 個のパッケージが、インストール、更新、有効化、または無効化を完了するために、バックエンドシステムの再起動を必要としています。", + "alert.restartRequired": "{{count}} 個のプラグインがインストールされています", + "alert.backendRestartRequired": "バックエンドの再起動が必要です", + "alert.viewPlugins": "プラグインの表示", + "alert.viewPackages": "パッケージの表示", + "search.placeholder": "検索", + "search.clear": "検索のクリア", + "search.filter": "フィルター", + "search.clearFilter": "フィルターのクリア", + "search.category": "カテゴリー", + "search.author": "作成者", + "search.supportType": "サポートタイプ", + "search.noResults": "検索条件に一致するプラグインがありません", + "search.filterBy": "フィルター", + "search.clearFilters": "フィルターをクリア", + "search.noResultsFound": "結果が見つかりません。フィルターを調整してもう一度お試しください。", + "common.links": "リンク", + "common.by": " by ", + "common.comma": ",", + "common.noDescriptionAvailable": "説明がありません", + "common.readMore": "さらに表示する", + "common.close": "閉じる", + "common.apply": "適用", + "common.couldNotApplyYaml": "YAML を適用できませんでした: {{error}}", + "dialog.backendRestartRequired": "バックエンドの再起動が必要です", + "dialog.packageRestartMessage": "パッケージの変更を完了するために、バックエンドシステムを再起動してください。", + "dialog.pluginRestartMessage": "プラグインの変更を完了するために、バックエンドシステムを再起動してください。", + "plugin.description": "説明", + "plugin.documentation": "ドキュメント", + "plugin.repository": "リポジトリー", + "plugin.license": "ライセンス", + "plugin.version": "バージョン", + "plugin.author": "作成者", + "plugin.authors": "作成者", + "plugin.tags": "タグ", + "plugin.dependencies": "依存関係", + "plugin.configuration": "設定", + "plugin.installation": "インストール", + "package.name": "パッケージ名:", + "package.version": "バージョン:", + "package.dynamicPluginPath": "動的プラグインのパス:", + "package.backstageRole": "Backstage の役割:", + "package.supportedVersions": "サポートされているバージョン:", + "package.author": "作成者:", + "package.support": "サポート:", + "package.lifecycle": "ライフサイクル:", + "package.highlights": "ハイライト", + "package.about": "概要", + "package.notFound": "パッケージ {{namespace}}/{{name}} が見つかりません!", + "package.notAvailable": "パッケージ {{name}} は利用できません", + "package.ensureCatalogEntity": "このパッケージのカタログエンティティーが存在することを確認してください。", + "table.packageName": "パッケージ名", + "table.version": "バージョン", + "table.role": "役割", + "table.supportedVersion": "サポートされているバージョン", + "table.status": "ステータス", + "table.name": "名前", + "table.action": "アクション", + "table.description": "説明", + "table.versions": "バージョン", + "table.plugins": "プラグイン", + "table.packages": "パッケージ", + "table.pluginsCount": "プラグイン ({{count}})", + "table.packagesCount": "パッケージ ({{count}})", + "table.pluginsTable": "プラグインテーブル", + "installedPackages.table.title": "インストール済みパッケージ ({{count}})", + "installedPackages.table.searchPlaceholder": "検索", + "installedPackages.table.columns.name": "名前", + "installedPackages.table.columns.packageName": "npm パッケージ名", + "installedPackages.table.columns.role": "役割", + "installedPackages.table.columns.version": "バージョン", + "installedPackages.table.columns.actions": "アクション", + "installedPackages.table.tooltips.packageProductionDisabled": "パッケージは実稼働環境では管理できません。", + "installedPackages.table.tooltips.installationDisabled": "プラグインのインストールが無効になっているため、パッケージを管理できません。これを有効にするには、dynamic-plugins 設定ファイルで拡張機能設定を追加または変更してください。", + "installedPackages.table.tooltips.enableActions": "アクションを有効にするには、このパッケージのカタログエンティティーを追加してください", + "installedPackages.table.tooltips.noDownloadPermissions": "設定をダウンロードする権限がありません。管理者に連絡し、アクセス権を要求またはサポートを依頼してください。", + "installedPackages.table.tooltips.noEditPermissions": "設定を編集する権限がありません。管理者に連絡し、アクセス権を要求またはサポートを依頼してください。", + "installedPackages.table.tooltips.noTogglePermissions": "パッケージを有効化または無効化する権限がありません。管理者に連絡し、アクセス権を要求またはサポートを依頼してください。", + "installedPackages.table.tooltips.editPackage": "パッケージ設定を編集する", + "installedPackages.table.tooltips.downloadPackage": "パッケージ設定をダウンロードする", + "installedPackages.table.tooltips.enablePackage": "パッケージを有効にする", + "installedPackages.table.tooltips.disablePackage": "パッケージを無効にする", + "installedPackages.table.emptyMessages.noResults": "結果が見つかりません。別の検索語句を試してください。", + "installedPackages.table.emptyMessages.noRecords": "表示するレコードがありません", + "actions.install": "インストール", + "actions.view": "表示", + "actions.edit": "編集", + "actions.enable": "有効にする", + "actions.disable": "無効にする", + "actions.actions": "アクション", + "actions.editConfiguration": "編集", + "actions.pluginConfigurations": "プラグインの設定", + "actions.packageConfiguration": "パッケージの設定", + "actions.pluginCurrentlyEnabled": "プラグインは現在有効です", + "actions.pluginCurrentlyDisabled": "プラグインは現在無効です", + "actions.packageCurrentlyEnabled": "パッケージは現在有効です", + "actions.packageCurrentlyDisabled": "パッケージは現在無効です", + "actions.installTitle": "{{displayName}} のインストール", + "actions.editTitle": "{{displayName}} 設定の編集", + "metadata.by": " by ", + "metadata.comma": ",", + "metadata.pluginNotFound": "プラグイン {{name}} が見つかりません!", + "metadata.pluginNotAvailable": "プラグイン {{name}} は利用できません", + "metadata.ensureCatalogEntityPlugin": "このプラグインのカタログエンティティーが存在することを確認してください。", + "metadata.highlights": "ハイライト", + "metadata.about": "概要", + "metadata.publisher": "パブリッシャー", + "metadata.supportProvider": "サポートプロバイダー", + "metadata.entryName": "エントリー名", + "metadata.bySomeone": "提供元不明", + "metadata.category": "カテゴリー", + "metadata.versions": "バージョン", + "metadata.backstageCompatibility": "Backstage 互換バージョン", + "supportTypes.certifiedBy": "{{value}} により認定済み ({{count}})", + "supportTypes.verifiedBy": "{{value}} により検証済み ({{count}})", + "supportTypes.customPlugins": "カスタムプラグイン ({{count}})", + "collection.kubernetes": "Kubernetes", + "collection.monitoring": "モニタリング", + "collection.security": "セキュリティー", + "collection.viewMore": "詳細の表示", + "collection.pluginCount": "{{count}} 個のプラグイン", + "collection.featured.title": "注目のプラグイン", + "collection.featured.description": "ほとんどのユーザーに推奨される注目の厳選プラグイン集", + "install.title": "プラグインのインストール", + "install.configurationRequired": "必要な設定", + "install.optional": "任意", + "install.required": "必須", + "install.selectPackages": "インストールするパッケージの選択", + "install.allPackages": "すべてのパッケージ", + "install.customConfiguration": "カスタム設定", + "install.installProgress": "インストール...", + "install.success": "プラグインが正常にインストールされました", + "install.error": "プラグインのインストールに失敗しました", + "install.installFrontend": "フロントエンドプラグインのインストール", + "install.installBackend": "バックエンドプラグインのインストール", + "install.installTemplates": "ソフトウェアテンプレートのインストール", + "install.installationInstructions": "インストール手順", + "install.download": "ダウンロード", + "install.examples": "例", + "install.cancel": "キャンセル", + "install.reset": "リセット", + "install.pluginTabs": "プラグインタブ", + "install.settingUpPlugin": "プラグインのセットアップ", + "install.aboutPlugin": "プラグインについて", + "install.pluginUpdated": "プラグインが更新されました", + "install.pluginInstalled": "プラグインがインストールされました", + "install.instructions": "手順", + "install.editInstructions": "編集手順", + "install.back": "戻る", + "install.packageUpdated": "パッケージが更新されました", + "install.packageEnabled": "パッケージは有効です", + "install.packageDisabled": "パッケージは無効です", + "install.pluginEnabled": "プラグインは有効です", + "install.pluginDisabled": "プラグインは無効です", + "install.errors.missingPluginsList": "無効なエディターコンテンツ: 'plugins' リストがありません", + "install.errors.missingPackageItem": "無効なエディターコンテンツ: パッケージ項目がありません", + "install.errors.missingPackageField": "無効なエディターコンテンツ: 項目に 'package' フィールドがありません", + "install.errors.failedToSave": "保存に失敗しました", + "loading": "読み込み中...", + "error": "エラーが発生しました", + "retry": "再試行", + "errors.missingConfigFile": "設定ファイルが見つかりません", + "errors.missingConfigMessage": "{{メッセージ}}。このツールを有効にする場合は、app-config.yaml に設定を追加する必要があります。以下の例のように app-config.yaml ファイルを編集してください:", + "errors.invalidConfigFile": "無効な設定ファイル", + "errors.invalidConfigMessage": "'extensions.installation.saveToSingleFile.file' の読み込みに失敗しました。{{message}}。このツールを有効にする場合は、有効なインストール設定を提供してください。以下の例のように dynamic-plugins.yaml ファイルを編集してください:", + "errors.fileNotExists": "設定ファイルが正しくないか、スペルミスがあるか、存在しません", + "errors.fileNotExistsMessage": "{{メッセージ}}。このツールを有効にする場合は、以下の例に示すように、app-config.yaml で指定されているファイル名を再確認してください:", + "errors.unknownError": "設定ファイルの読み取り中にエラーが発生しました。", + "tooltips.productionDisabled": "実稼働環境ではプラグインのインストールが無効になっています。", + "tooltips.extensionsDisabled": "プラグインのインストールが無効になっています。これを有効にするには、dynamic-plugins 設定ファイルで拡張機能設定を追加または変更してください。", + "tooltips.noPermissions": "プラグインをインストールする権限またはその設定を表示する権限がありません。管理者に連絡し、アクセス権を要求またはサポートを依頼してください。", + "tooltips.missingDynamicArtifact": "この {{type}} を管理できません。アクションを有効にするには、必要な spec.dynamicArtifact を持つカタログエンティティーを追加する必要があります。", + "aria.openPlugin": "プラグイン {{name}} を開く", + "aria.closeDialog": "ダイアログを閉じる", + "aria.expandSection": "セクションを展開", + "aria.collapseSection": "セクションを折りたたむ", + "aria.sortBy": "{{field}} でソート", + "aria.filterBy": "{{field}} でフィルタリング", + "badges.certified": "認定済み", + "badges.certifiedBy": "{{provider}} により認定済み", + "badges.verified": "検証済み", + "badges.verifiedBy": "{{provider}} により検証済み", + "badges.customPlugin": "カスタムプラグイン", + "badges.stableAndSecured": "安定および {{provider}} により保護", + "badges.generallyAvailable": "一般提供 (GA)", + "badges.gaAndSupportedBy": "一般提供 (GA) および {{provider}} のサポート対象", + "badges.gaAndSupported": "一般提供 (GA) およびサポート対象", + "badges.productionReadyBy": "実稼働環境に対応および {{provider}} のサポート対象", + "badges.productionReady": "実稼働環境に対応およびサポート対象", + "badges.communityPlugin": "コミュニティープラグイン", + "badges.openSourceNoSupport": "オープンソースプラグイン、公式サポートなし", + "badges.techPreview": "テクノロジープレビュー (TP)", + "badges.pluginInDevelopment": "まだ開発中のプラグイン", + "badges.devPreview": "開発者プレビュー (DP)", + "badges.earlyStageExperimental": "初期段階の実験的なプラグイン", + "badges.addedByAdmin": "管理者によって追加されたプラグイン" + } + }, + "plugin.orchestrator": { + "ja": { + "page.title": "ワークフローオーケストレーター", + "page.tabs.workflows": "ワークフロー", + "page.tabs.allRuns": "すべての実行", + "page.tabs.workflowDetails": "ワークフロー詳細", + "page.tabs.workflowRuns": "ワークフロー実行", + "table.title.workflows": "ワークフロー", + "table.title.allRuns": "すべての実行 ({{count}})", + "table.title.allWorkflowRuns": "ワークフロー実行 ({{count}})", + "table.headers.name": "名前", + "table.headers.runStatus": "実行ステータス", + "table.headers.started": "開始済み", + "table.headers.status": "ステータス", + "table.headers.workflowStatus": "ワークフローステータス", + "table.headers.duration": "期間", + "table.headers.description": "説明", + "table.headers.lastRun": "最終実行", + "table.headers.lastRunStatus": "最終実行のステータス", + "table.headers.workflowName": "ワークフロー名", + "table.actions.run": "実行", + "table.actions.viewRuns": "実行の表示", + "table.actions.viewInputSchema": "入力スキーマの表示", + "table.status.running": "実行中", + "table.status.failed": "失敗", + "table.status.completed": "完了済み", + "table.status.aborted": "中止", + "table.status.pending": "保留中", + "table.status.active": "アクティブ", + "table.filters.status": "ステータス", + "table.filters.started": "開始済み", + "table.filters.startedOptions.today": "今日", + "table.filters.startedOptions.yesterday": "昨日", + "table.filters.startedOptions.last7days": "過去 7 日間", + "table.filters.startedOptions.thisMonth": "今月", + "workflow.details": "詳細", + "workflow.definition": "ワークフロー定義", + "workflow.progress": "ワークフロー進捗", + "workflow.status.available": "利用可能", + "workflow.status.unavailable": "利用不可", + "workflow.fields.workflow": "ワークフロー", + "workflow.fields.workflowStatus": "ワークフローステータス", + "workflow.fields.runStatus": "実行ステータス", + "workflow.fields.duration": "期間", + "workflow.fields.description": "説明", + "workflow.fields.started": "開始済み", + "workflow.fields.workflowId": "実行 ID", + "workflow.fields.workflowIdCopied": "実行 ID がクリップボードにコピーされました", + "workflow.errors.retriggerFailed": "再トリガーに失敗しました: {{reason}}", + "workflow.errors.abortFailed": "中止に失敗しました: すでに実行が完了しています。", + "workflow.errors.abortFailedWithReason": "中止に失敗しました: {{reason}}", + "workflow.errors.failedToLoadDetails": "ワークフロー ID: {{id}} の詳細の読み込みに失敗しました", + "workflow.messages.areYouSureYouWantToRunThisWorkflow": "このワークフローを実行してもよろしいですか?", + "workflow.messages.userNotAuthorizedExecute": "ユーザーにワークフローの実行権限がありません。", + "workflow.messages.workflowDown": "ワークフローは現在停止しているかエラー状態です。今実行すると、失敗や予期しない結果が生じる可能性があります。", + "workflow.buttons.run": "実行", + "workflow.buttons.runWorkflow": "ワークフローの実行", + "workflow.buttons.runAgain": "再実行", + "workflow.buttons.running": "実行中...", + "workflow.buttons.fromFailurePoint": "失敗箇所から", + "workflow.buttons.runFailedAgain": "実行が再び失敗しました", + "run.title": "ワークフローの実行", + "run.pageTitle": "{{processName}} の実行", + "run.variables": "実行変数", + "run.inputs": "入力", + "run.results": "結果", + "run.abort.title": "ワークフローの実行を中止しますか?", + "run.abort.button": "中止", + "run.abort.warning": "中止すると、進行中および保留中のすべてのステップが直ちに停止されます。進行中の作業がすべて失われます。", + "run.abort.completed.title": "実行完了", + "run.abort.completed.message": "実行はすでに完了しているため、中止することはできません。", + "run.status.completed": "実行は完了しました", + "run.status.failed": "実行は {{time}} に失敗しました", + "run.status.aborted": "実行は中止されました", + "run.status.completedWithMessage": "実行は {{time}} に完了しました。メッセージ:", + "run.status.failedAt": "実行は {{time}} に失敗しました", + "run.status.completedAt": "実行は {{time}} に完了しました", + "run.status.running": "ワークフローは実行中です。{{time}} に開始", + "run.status.runningWaitingAtNode": "ワークフローは実行中です - ノード {{node}} で {{formattedTime}} から待機しています", + "run.status.workflowIsRunning": "ワークフローは実行中です。{{time}} に開始", + "run.status.noAdditionalInfo": "このワークフローにはステータスに関する追加情報はありません。", + "run.status.resultsWillBeDisplayedHereOnceTheRunIsComplete": "実行が完了すると、結果がここに表示されます。", + "run.retrigger": "再トリガー", + "run.viewVariables": "変数の表示", + "run.suggestedNextWorkflow": "推奨される次のワークフロー", + "run.suggestedNextWorkflows": "推奨される次のワークフロー", + "tooltips.completed": "完了済み", + "tooltips.active": "アクティブ", + "tooltips.aborted": "中止", + "tooltips.suspended": "一時停止中", + "tooltips.pending": "保留中", + "tooltips.workflowDown": "ワークフローは現在停止しているかエラー状態です", + "tooltips.userNotAuthorizedAbort": "ユーザーにワークフローの中止権限がありません", + "tooltips.userNotAuthorizedExecute": "ユーザーにワークフローの実行権限がありません", + "messages.noDataAvailable": "利用可能なデータはありません", + "messages.noVariablesFound": "この実行の変数が見つかりません。", + "messages.noInputSchemaWorkflow": "このワークフローには入力スキーマが定義されていません。", + "messages.workflowInstanceNoInputs": "このワークフローインスタンスには入力がありません", + "messages.missingJsonSchema.title": "入力フォームの JSON スキーマがありません", + "messages.missingJsonSchema.message": "このワークフローには、入力検証用に定義された JSON スキーマがありません。ワークフローの実行は可能ですが、入力の検証は限定的になります。", + "messages.additionalDetailsAboutThisErrorAreNotAvailable": "このエラーに関する追加情報はありません", + "common.close": "閉じる", + "common.cancel": "キャンセル", + "common.execute": "実行", + "common.details": "詳細", + "common.links": "リンク", + "common.values": "値", + "common.back": "戻る", + "common.run": "実行", + "common.next": "次へ", + "common.review": "確認", + "common.unavailable": "---", + "stepperObjectField.error": "ステッパーオブジェクトフィールドは、プロパティーを含まないスキーマではサポートされていません", + "formDecorator.error": "フォームデコレーターはコンテキストデータを提供する必要があります。", + "aria.close": "閉じる" + } + }, + "plugin.quickstart": { + "ja": { + "header.title": "Developer Hub を使い始めましょう", + "header.subtitle": "いくつかの簡単なステップをご案内します", + "steps.setupAuthentication.title": "認証の設定", + "steps.setupAuthentication.description": "不正アクセスからアカウントを保護するために、セキュアなログイン認証情報を設定します。", + "steps.setupAuthentication.ctaTitle": "詳細", + "steps.configureRbac.title": "RBAC の設定", + "steps.configureRbac.description": "ロールと権限を割り当てて、リソースを表示、作成、または編集できるユーザーを制御し、セキュアで効率的なコラボレーションを実現できます。", + "steps.configureRbac.ctaTitle": "アクセスの管理", + "steps.configureGit.title": "Git の設定", + "steps.configureGit.description": "GitHub などの Git プロバイダーを接続して、コードの管理、ワークフローの自動化、プラットフォーム機能との統合を行います。", + "steps.configureGit.ctaTitle": "詳細", + "steps.managePlugins.title": "プラグインの管理", + "steps.managePlugins.description": "拡張機能を閲覧してインストールし、機能を追加したり、外部ツールと接続したり、エクスペリエンスをカスタマイズしたりできます。", + "steps.managePlugins.ctaTitle": "プラグインの探索", + "steps.importApplication.title": "アプリケーションのインポート", + "steps.importApplication.description": "既存のコードやサービスをカタログにインポートして整理し、開発者ポータルからアクセスできます。", + "steps.importApplication.ctaTitle": "インポート", + "steps.learnAboutCatalog.title": "カタログについて学ぶ", + "steps.learnAboutCatalog.description": "すべてのソフトウェアコンポーネント、サービス、API を探索し、その所有者やドキュメントを確認できます。", + "steps.learnAboutCatalog.ctaTitle": "カタログの表示", + "steps.exploreSelfServiceTemplates.title": "セルフサービステンプレートを探索する", + "steps.exploreSelfServiceTemplates.description": "セルフサービステンプレートを使用して、新しいプロジェクト、サービス、またはドキュメントをすばやく設定できます。", + "steps.exploreSelfServiceTemplates.ctaTitle": "テンプレートの探索", + "steps.findAllLearningPaths.title": "すべてのラーニングパスを見る", + "steps.findAllLearningPaths.description": "ラーニングパスを利用してカスタマイズした e ラーニングをワークフローに統合し、オンボーディングの加速、スキルギャップの解消、ベストプラクティスの浸透を実現できます。", + "steps.findAllLearningPaths.ctaTitle": "ラーニングパスの表示", + "button.quickstart": "クイックスタート", + "button.openQuickstartGuide": "クイックスタートガイドを開く", + "button.closeDrawer": "ドロワーを閉じる", + "button.gotIt": "了解しました!", + "footer.progress": "進捗 {{progress}}%", + "footer.notStarted": "開始されていません", + "footer.hide": "非表示", + "content.emptyState.title": "現在のロールではクイックスタートコンテンツを利用できません。", + "item.expandAriaLabel": "{{title}} の詳細を展開", + "item.collapseAriaLabel": "{{title}} の詳細を折りたたむ", + "item.expandButtonAriaLabel": "項目を展開", + "item.collapseButtonAriaLabel": "項目を折りたたむ", + "dev.pageTitle": "クイックスタートプラグインのテストページ", + "dev.pageDescription": "これはクイックスタートプラグインのテストページです。以下のボタンを使用し、クイックスタートドロワーを操作してください。", + "dev.drawerControls": "ドロワーのコントロール", + "dev.currentState": "現在のドロワーの状態: {{state}}", + "dev.stateOpen": "開", + "dev.stateClosed": "閉", + "dev.instructions": "手順", + "dev.step1": "1.\"クイックスタートガイドを開く\" をクリックしてドロワーを開きます", + "dev.step2": "2.クイックスタートのステップを順に進めます", + "dev.step3": "3.ステップを完了して進捗の追跡をテストします", + "dev.step4": "4.閉じるボタンまたはドロワー自体のコントロールを使用して、ドロワーを閉じることができます", + "dev.step5": "5.進捗が自動的に localStorage に保存されます" + } + }, + "plugin.scorecard": { + "ja": { + "emptyState.title": "スコアカードはまだ追加されていません", + "emptyState.description": "スコアカードを使用すると、コンポーネントの健全性を一目で監視できます。まず、セットアップ手順に関するドキュメントを参照してください。", + "emptyState.button": "ドキュメントの表示", + "emptyState.altText": "スコアカードなし", + "permissionRequired.title": "権限がありません", + "permissionRequired.description": "スコアカードプラグインを表示するには、管理者に連絡して {{permission}} 権限を付与してもらうよう依頼してください。", + "permissionRequired.button": "さらに表示する", + "permissionRequired.altText": "権限が必要", + "errors.entityMissingProperties": "スコアカードの検索に必要なプロパティーがエンティティーにありません", + "errors.invalidApiResponse": "スコアカード API からの応答形式が無効です", + "errors.fetchError": "スコアカードの取得中にエラーが発生しました: {{error}}", + "errors.metricDataUnavailable": "メトリクスデータがありません", + "errors.invalidThresholds": "無効なしきい値", + "metric.github.open_prs.title": "GitHub のオープン状態の PR", + "metric.github.open_prs.description": "特定の GitHub リポジトリーにおけるオープン状態のプルリクエストの数。", + "metric.jira.open_issues.title": "Jira のオープン状態の進行を妨げているチケット", + "metric.jira.open_issues.description": "Jira で現在オープン状態になっている、重大かつ進行を妨げている課題の数を明示します。", + "thresholds.success": "成功", + "thresholds.warning": "警告", + "thresholds.error": "エラー" + } + }, + "plugin.translations-test": { + "ja": { + "page.title": "翻訳テストプラグイン", + "page.subtitle": "翻訳機能と i18next 機能をテストするためのプラグイン", + "essentials.key": "キーの値", + "essentials.look.deep": "深い階層の参照の値", + "interpolation.key": "{{what}} は {{how}} です", + "interpolation.nested.key": "{{what}} は {{how.value}} です", + "interpolation.complex.message": "ここに {{link}} があります。", + "interpolation.complex.linkText": "リンク", + "formatting.intlNumber": "いくつかの {{val, number}}", + "formatting.intlNumberWithOptions": "いくつかの {{val, number(minimumFractionDigits: 2)}}", + "formatting.intlDateTime": "{{val, datetime}} に", + "formatting.intlRelativeTime": "Lorem {{val, relativetime}}", + "formatting.intlRelativeTimeWithOptions": "Lorem {{val, relativetime(quarter)}}", + "formatting.intlRelativeTimeWithOptionsExplicit": "Lorem {{val, relativetime(range: quarter; style: narrow;)}}", + "plurals.key_zero": "ゼロ", + "plurals.key_one": "1", + "plurals.key_two": "2", + "plurals.key_few": "少数", + "plurals.key_many": "多数", + "plurals.key_other": "その他", + "plurals.keyWithCount_one": "{{count}} 件の項目", + "plurals.keyWithCount_other": "{{count}} 件の項目", + "context.friend": "友達", + "context.friend_male": "彼氏", + "context.friend_female": "彼女", + "objects.tree.res": "{{something}} を追加しました" + } + }, + "plugin.translations": { + "ja": { + "page.title": "翻訳", + "page.subtitle": "読み込まれた翻訳の管理および表示", + "table.title": "読み込まれた翻訳 ({{count}})", + "table.headers.refId": "参照 ID", + "table.headers.key": "キー", + "table.options.pageSize": "1 ページの項目数", + "table.options.pageSizeOptions": "{{count}} 件の項目を表示", + "export.title": "翻訳", + "export.downloadButton": "デフォルトの翻訳のダウンロード (英語)", + "export.filename": "translations-{{timestamp}}.json", + "common.loading": "読み込み中...", + "common.error": "エラーが発生しました", + "common.noData": "利用可能なデータはありません", + "common.refresh": "更新", + "language.displayFormat": "{{displayName}} ({{code}})" + } + } +} \ No newline at end of file diff --git a/translations/rhdh-plugins__v1.8_s3281-fr-C.json b/translations/rhdh-plugins__v1.8_s3281-fr-C.json deleted file mode 100644 index 7dc4990add..0000000000 --- a/translations/rhdh-plugins__v1.8_s3281-fr-C.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "plugin.scorecard": { - "fr": { - "emptyState.title": "Aucune carte de score n'a encore été ajoutée", - "emptyState.description": "Les tableaux de bord vous aident à surveiller l’état des composants en un coup d’œil. Pour commencer, explorez notre documentation pour obtenir des instructions de configuration.", - "emptyState.button": "Voir la documentation", - "emptyState.altText": "Pas de tableau de bord", - "permissionRequired.title": "Autorisations manquantes", - "permissionRequired.description": "Pour afficher le plugin Scorecard, contactez votre administrateur pour lui accorder l'autorisation {{permission}}.", - "permissionRequired.button": "En savoir plus", - "permissionRequired.altText": "Autorisation requise", - "errors.entityMissingProperties": "Entité manquant les propriétés requises pour la recherche dans la fiche d'évaluation", - "errors.invalidApiResponse": "Format de réponse non valide de l'API de scorecard", - "errors.fetchError": "Erreur lors de la récupération des tableaux de bord : {{error}}", - "errors.metricDataUnavailable": "Données métriques indisponibles", - "errors.invalidThresholds": "Seuils invalides", - "metric.github.open-prs.title": "GitHub ouvre des PR", - "metric.github.open-prs.description": "Nombre actuel de requêtes d'extraction ouvertes pour un référentiel GitHub donné.", - "metric.jira.open-issues.title": "Jira ouvre des tickets bloquants", - "metric.jira.open-issues.description": "Met en évidence le nombre de problèmes critiques et bloquants actuellement ouverts dans Jira.", - "thresholds.success": "Succès", - "thresholds.warning": "Attention", - "thresholds.error": "Erreur" - } - }, - "plugin.quickstart": { - "fr": { - "header.title": "Commençons par vous familiariser avec Developer Hub", - "header.subtitle": "Nous vous guiderons à travers quelques étapes rapides", - "steps.setupAuthentication.title": "Configurer l'authentification", - "steps.setupAuthentication.description": "Configurez des informations de connexion sécurisées pour protéger votre compte contre tout accès non autorisé.", - "steps.setupAuthentication.ctaTitle": "En savoir plus", - "steps.configureRbac.title": "Configurer RBAC", - "steps.configureRbac.description": "Attribuez des rôles et des autorisations pour contrôler qui peut afficher, créer ou modifier des ressources, garantissant ainsi une collaboration sécurisée et efficace.", - "steps.configureRbac.ctaTitle": "Gérer l'accès", - "steps.configureGit.title": "Configurer Git", - "steps.configureGit.description": "Connectez vos fournisseurs Git, tels que GitHub pour gérer le code, automatiser les flux de travail et intégrer les fonctionnalités de la plateforme.", - "steps.configureGit.ctaTitle": "En savoir plus", - "steps.managePlugins.title": "Gérer les plugins", - "steps.managePlugins.description": "Parcourez et installez des extensions pour ajouter des fonctionnalités, vous connecter à des outils externes et personnaliser votre expérience.", - "steps.managePlugins.ctaTitle": "Explorer les plugins", - "steps.importApplication.title": "Demande d'importation", - "steps.importApplication.description": "Importez votre code et vos services existants dans le catalogue pour les organiser et y accéder via votre portail de développeur.", - "steps.importApplication.ctaTitle": "Importer", - "steps.learnAboutCatalog.title": "En savoir plus sur le catalogue", - "steps.learnAboutCatalog.description": "Découvrez tous les composants logiciels, services et API, et affichez leurs propriétaires et leur documentation.", - "steps.learnAboutCatalog.ctaTitle": "Voir le catalogue", - "steps.exploreSelfServiceTemplates.title": "Explorer les modèles en libre-service", - "steps.exploreSelfServiceTemplates.description": "Utilisez nos modèles en libre-service pour configurer rapidement de nouveaux projets, services ou documentations.", - "steps.exploreSelfServiceTemplates.ctaTitle": "Explorer les modèles", - "steps.findAllLearningPaths.title": "Trouver tous les Learning Paths", - "steps.findAllLearningPaths.description": "Intégrez l’apprentissage en ligne personnalisé dans vos flux de travail avec Learning Paths pour accélérer l’intégration, combler les lacunes en matière de compétences et promouvoir les meilleures pratiques.", - "steps.findAllLearningPaths.ctaTitle": "Voir Learning Paths", - "button.quickstart": "Démarrage rapide", - "button.openQuickstartGuide": "Ouvrir le guide de démarrage rapide", - "button.closeDrawer": "Fermer le tiroir", - "button.gotIt": "J'ai compris!", - "footer.progress": "{{progress}}% de progrès", - "footer.notStarted": "Non démarré", - "footer.hide": "Cacher", - "content.emptyState.title": "Le contenu de démarrage rapide n'est pas disponible pour votre rôle.", - "item.expandAriaLabel": "Développer les détails de {{title}}", - "item.collapseAriaLabel": "Réduire les détails de {{title}}", - "item.expandButtonAriaLabel": "Développer l'élément", - "item.collapseButtonAriaLabel": "Réduire l'élément", - "dev.pageTitle": "Page de test du plugin de démarrage rapide", - "dev.pageDescription": "Ceci est une page de test pour le plugin Quickstart. Utilisez les boutons ci-dessous pour interagir avec le tiroir de démarrage rapide.", - "dev.drawerControls": "Commandes des tiroirs", - "dev.currentState": "État actuel du tiroir : {{state}}", - "dev.stateOpen": "Ouvrir", - "dev.stateClosed": "Fermé", - "dev.instructions": "Instructions", - "dev.step1": "1. Cliquez sur « Ouvrir le guide de démarrage rapide » pour ouvrir le tiroir", - "dev.step2": "2. Parcourez les étapes de démarrage rapide", - "dev.step3": "3. Testez le suivi de la progression en complétant les étapes", - "dev.step4": "4. Le tiroir peut être fermé à l'aide du bouton de fermeture ou des commandes du tiroir", - "dev.step5": "5. La progression est automatiquement enregistrée dans le stockage local" - } - }, - "plugin.orchestrator": { - "fr": { - "page.title": "Orchestrateur de flux de travail", - "page.tabs.workflows": "Flux de travail", - "page.tabs.allRuns": "Toutes les exécutions", - "page.tabs.workflowDetails": "Détails du flux de travail", - "page.tabs.workflowRuns": "Le flux de travail s'exécute", - "table.title.workflows": "Flux de travail", - "table.title.allRuns": "Toutes les courses ({{count}})", - "table.title.allWorkflowRuns": "Exécutions du workflow ({{count}})", - "table.headers.name": "Nom", - "table.headers.runStatus": "État d'exécution", - "table.headers.started": "Commencé", - "table.headers.status": "Statut", - "table.headers.workflowStatus": "Statut du flux de travail", - "table.headers.duration": "Durée", - "table.headers.description": "Description", - "table.headers.lastRun": "Dernière course", - "table.headers.lastRunStatus": "Statut de la dernière exécution", - "table.headers.workflowName": "Nom du flux de travail", - "table.actions.run": "Exécution", - "table.actions.viewRuns": "Voir les exécutions", - "table.actions.viewInputSchema": "Afficher le schéma d'entrée", - "table.status.running": "En cours d'exécution", - "table.status.failed": "Échoué", - "table.status.completed": "Complété", - "table.status.aborted": "Avorté", - "table.status.pending": "En attente", - "table.status.active": "Actif", - "table.filters.status": "Statut", - "table.filters.started": "Commencé", - "table.filters.startedOptions.today": "Aujourd'hui", - "table.filters.startedOptions.yesterday": "Hier", - "table.filters.startedOptions.last7days": "Les 7 derniers jours", - "table.filters.startedOptions.thisMonth": "Ce mois-ci", - "workflow.details": "Détails", - "workflow.definition": "Définition du flux de travail", - "workflow.progress": "Progression du flux de travail", - "workflow.status.available": "Disponible", - "workflow.status.unavailable": "Non disponible", - "workflow.fields.workflow": "Flux de travail", - "workflow.fields.workflowStatus": "Statut du flux de travail", - "workflow.fields.runStatus": "État d'exécution", - "workflow.fields.duration": "Durée", - "workflow.fields.description": "Description", - "workflow.fields.started": "Commencé", - "workflow.fields.workflowId": "ID d'exécution", - "workflow.fields.workflowIdCopied": "ID d'exécution copié dans le presse-papiers", - "workflow.errors.retriggerFailed": "Échec du redéclenchement : {{reason}}", - "workflow.errors.abortFailed": "Échec de l'abandon : l'exécution a déjà été terminée.", - "workflow.errors.abortFailedWithReason": "Échec de l'abandon : {{reason}}", - "workflow.errors.failedToLoadDetails": "Échec du chargement des détails de l'ID de workflow : {{id}}", - "workflow.messages.areYouSureYouWantToRunThisWorkflow": "Êtes-vous sûr de vouloir exécuter ce workflow ?", - "workflow.messages.userNotAuthorizedExecute": "L'utilisateur n'est pas autorisé à exécuter le workflow.", - "workflow.messages.workflowDown": "Le flux de travail est actuellement en panne ou dans un état d'erreur. L'exécuter maintenant peut échouer ou produire des résultats inattendus.", - "workflow.buttons.run": "Exécution", - "workflow.buttons.runWorkflow": "Exécuter le flux de travail", - "workflow.buttons.runAgain": "Courir à nouveau", - "workflow.buttons.running": "En cours d'exécution", - "workflow.buttons.fromFailurePoint": "Du point de défaillance", - "workflow.buttons.runFailedAgain": "L'exécution a échoué à nouveau", - "run.title": "Exécuter le flux de travail", - "run.pageTitle": "{{processName}} exécuter", - "run.variables": "Variables d'exécution", - "run.inputs": "Entrées", - "run.results": "Résultats", - "run.abort.title": "Abandonner l’exécution du workflow ?", - "run.abort.button": "Avorter", - "run.abort.warning": "L'abandon arrêtera immédiatement toutes les étapes en cours et en attente. Tout travail en cours sera perdu.", - "run.abort.completed.title": "Exécution terminée", - "run.abort.completed.message": "Il n'est pas possible d'interrompre l'exécution car elle est déjà terminée.", - "run.status.completed": "Exécution terminée", - "run.status.failed": "L'exécution a échoué {{time}}", - "run.status.aborted": "L'exécution a été interrompue", - "run.status.completedWithMessage": "Exécution terminée {{time}} avec message", - "run.status.failedAt": "L'exécution a échoué {{time}}", - "run.status.completedAt": "Exécution terminée {{time}}", - "run.status.running": "Le flux de travail est en cours d'exécution. Démarré {{time}}", - "run.status.runningWaitingAtNode": "Le workflow est en cours d'exécution – en attente au nœud {{node}} depuis {{formattedTime}}", - "run.status.workflowIsRunning": "Le flux de travail est en cours d'exécution. Démarré {{time}}", - "run.status.noAdditionalInfo": "Le flux de travail n'a fourni aucune information supplémentaire sur le statut.", - "run.status.resultsWillBeDisplayedHereOnceTheRunIsComplete": "Les résultats seront affichés ici une fois l’exécution terminée.", - "run.retrigger": "Redéclencher", - "run.viewVariables": "Afficher les variables", - "run.suggestedNextWorkflow": "Prochain flux de travail suggéré", - "run.suggestedNextWorkflows": "Prochains flux de travail suggérés", - "tooltips.completed": "Complété", - "tooltips.active": "Actif", - "tooltips.aborted": "Avorté", - "tooltips.suspended": "Suspendu", - "tooltips.pending": "En attente", - "tooltips.workflowDown": "Le flux de travail est actuellement interrompu ou dans un état d'erreur", - "tooltips.userNotAuthorizedAbort": "l'utilisateur n'est pas autorisé à interrompre le flux de travail", - "tooltips.userNotAuthorizedExecute": "utilisateur non autorisé à exécuter le workflow", - "messages.noDataAvailable": "Aucune donnée disponible", - "messages.noVariablesFound": "Aucune variable trouvée pour cette exécution.", - "messages.noInputSchemaWorkflow": "Aucun schéma d'entrée n'est défini pour ce workflow.", - "messages.workflowInstanceNoInputs": "L'instance de workflow n'a aucune entrée", - "messages.missingJsonSchema.title": "Schéma JSON manquant pour le formulaire de saisie", - "messages.missingJsonSchema.message": "Ce workflow n'a pas de schéma JSON défini pour la validation des entrées. Vous pouvez toujours exécuter le workflow, mais la validation des entrées sera limitée.", - "messages.additionalDetailsAboutThisErrorAreNotAvailable": "Des détails supplémentaires sur cette erreur ne sont pas disponibles", - "common.close": "Fermer", - "common.cancel": "Annuler", - "common.execute": "Exécuter", - "common.details": "Détails", - "common.links": "Links", - "common.values": "Valeurs", - "common.back": "Arrière", - "common.run": "Exécution", - "common.next": "Suivant", - "common.review": "Revoir", - "common.unavailable": "---", - "stepperObjectField.error": "Le champ d'objet Stepper n'est pas pris en charge pour les schémas qui ne contiennent pas de propriétés", - "formDecorator.error": "Le décorateur de formulaire doit fournir des données contextuelles.", - "aria.close": "fermer" - } - } -} diff --git a/translations/core-plugins_v1.8_s3281-fr-C.json b/translations/rhdh-reference-2025-12-05-fr-C.json similarity index 90% rename from translations/core-plugins_v1.8_s3281-fr-C.json rename to translations/rhdh-reference-2025-12-05-fr-C.json index df9f5bf782..88c4c154a2 100644 --- a/translations/core-plugins_v1.8_s3281-fr-C.json +++ b/translations/rhdh-reference-2025-12-05-fr-C.json @@ -1,35 +1,307 @@ { - "home": { + "catalog": { "fr": { - "addWidgetDialog.title": "Ajouter un nouveau widget au tableau de bord", - "customHomepageButtons.edit": "Modifier", - "customHomepageButtons.restoreDefaults": "Restaurer les valeurs par défaut", - "customHomepageButtons.clearAll": "Tout effacer", - "customHomepageButtons.addWidget": "Ajouter un widget", - "customHomepageButtons.save": "Sauvegarder", - "customHomepage.noWidgets": "Aucun widget ajouté. Commencez par cliquer sur le bouton « Ajouter un widget ».", - "widgetSettingsOverlay.editSettingsTooptip": "Modifier les paramètres", - "widgetSettingsOverlay.deleteWidgetTooltip": "Supprimer le widget", - "widgetSettingsOverlay.submitButtonTitle": "Soumettre", - "widgetSettingsOverlay.cancelButtonTitle": "Annuler", - "starredEntityListItem.removeFavoriteEntityTitle": "Supprimer l'entité des favoris", - "visitList.empty.title": "Il n'y a pas encore de visites à afficher.", - "visitList.empty.description": "Une fois que vous commencez à utiliser Backstage, vos visites apparaîtront ici sous la forme d'un lien rapide pour reprendre là où vous vous êtes arrêté.", - "visitList.few.title": "Plus vous visitez de pages, plus de pages apparaîtront ici.", - "quickStart.title": "Intégration", - "quickStart.description": "Démarrer avec Backstage", - "quickStart.learnMoreLinkTitle": "En savoir plus", - "starredEntities.noStarredEntitiesMessage": "Cliquez sur l’étoile à côté du nom d’une entité pour l’ajouter à cette liste !", - "visitedByType.action.viewMore": "Voir plus", - "visitedByType.action.viewLess": "Voir moins", - "featuredDocsCard.learnMoreTitle": "POUR EN SAVOIR PLUS", - "featuredDocsCard.empty.title": "Aucun document à montrer", - "featuredDocsCard.empty.description": "Créez votre propre document. Consultez nos informations de démarrage", - "featuredDocsCard.empty.learnMoreLinkTitle": "DOCUMENTS" + "indexPage.createButtonTitle": "Self-service", + "indexPage.title": "Catalogue {{orgName}}", + "indexPage.supportButtonContent": "Toutes les entités de votre catalogue de logiciels", + "aboutCard.title": "À propos", + "aboutCard.refreshButtonTitle": "Actualisation de l'entité de planification", + "aboutCard.editButtonTitle": "Modifier les métadonnées", + "aboutCard.createSimilarButtonTitle": "Créer quelque chose de similaire", + "aboutCard.refreshScheduledMessage": "Actualisation programmée", + "aboutCard.launchTemplate": "Modèle de lancement", + "aboutCard.viewTechdocs": "Voir TechDocs", + "aboutCard.viewSource": "Voir la source", + "aboutCard.descriptionField.label": "Description", + "aboutCard.descriptionField.value": "Aucune description", + "aboutCard.ownerField.label": "Propriétaire", + "aboutCard.ownerField.value": "Pas de propriétaire", + "aboutCard.domainField.label": "Domaine", + "aboutCard.domainField.value": "Pas de domaine", + "aboutCard.systemField.label": "Système", + "aboutCard.systemField.value": "Pas de système", + "aboutCard.parentComponentField.label": "Composant parent", + "aboutCard.parentComponentField.value": "Aucun composant parent", + "aboutCard.typeField.label": "Taper", + "aboutCard.lifecycleField.label": "Cycle de vie", + "aboutCard.tagsField.label": "Mots-clés", + "aboutCard.tagsField.value": "Aucune balise", + "aboutCard.targetsField.label": "Cibles", + "searchResultItem.lifecycle": "Cycle de vie", + "searchResultItem.Owner": "Propriétaire", + "catalogTable.warningPanelTitle": "Impossible de récupérer les entités du catalogue.", + "catalogTable.viewActionTitle": "Voir", + "catalogTable.editActionTitle": "Modifier", + "catalogTable.starActionTitle": "Ajouter aux favoris", + "catalogTable.unStarActionTitle": "Supprimer des favoris", + "dependencyOfComponentsCard.title": "Dépendance des composants", + "dependencyOfComponentsCard.emptyMessage": "Aucun composant ne dépend de ce composant", + "dependsOnComponentsCard.title": "Cela dépend des composants", + "dependsOnComponentsCard.emptyMessage": "Aucun composant n'est une dépendance de ce composant", + "dependsOnResourcesCard.title": "Cela dépend des ressources", + "dependsOnResourcesCard.emptyMessage": "Aucune ressource n'est une dépendance de ce composant", + "entityContextMenu.copiedMessage": "Copié!", + "entityContextMenu.moreButtonTitle": "Plus", + "entityContextMenu.inspectMenuTitle": "Inspecter l'entité", + "entityContextMenu.copyURLMenuTitle": "Copier l'URL de l'entité", + "entityContextMenu.unregisterMenuTitle": "Désenregistrer l'entité", + "entityLabelsCard.title": "Étiquettes", + "entityLabelsCard.emptyDescription": "Aucune étiquette définie pour cette entité. Vous pouvez ajouter des étiquettes à votre entité YAML comme indiqué dans l'exemple en surbrillance ci-dessous :", + "entityLabelsCard.readMoreButtonTitle": "En savoir plus", + "entityLabels.warningPanelTitle": "Entité non trouvée", + "entityLabels.ownerLabel": "Propriétaire", + "entityLabels.lifecycleLabel": "Cycle de vie", + "entityLinksCard.title": "Links", + "entityLinksCard.emptyDescription": "Aucun lien défini pour cette entité. Vous pouvez ajouter des liens vers votre entité YAML comme indiqué dans l'exemple en surbrillance ci-dessous :", + "entityLinksCard.readMoreButtonTitle": "En savoir plus", + "entityNotFound.title": "L'entité n'a pas été trouvée", + "entityNotFound.description": "Vous voulez nous aider à construire cela ? Consultez notre documentation de mise en route.", + "entityNotFound.docButtonTitle": "DOCUMENTS", + "deleteEntity.dialogTitle": "Êtes-vous sûr de vouloir supprimer cette entité ?", + "deleteEntity.deleteButtonTitle": "Supprimer", + "deleteEntity.cancelButtonTitle": "Annuler", + "deleteEntity.description": "Cette entité n'est référencée par aucun emplacement et ne reçoit donc pas de mises à jour. Cliquez ici pour supprimer.", + "entityProcessingErrorsDescription": "L'erreur ci-dessous provient de", + "entityRelationWarningDescription": "Cette entité a des relations avec d'autres entités, qui ne peuvent pas être trouvées dans le catalogue. Les entités non trouvées sont : ", + "hasComponentsCard.title": "Contient des composants", + "hasComponentsCard.emptyMessage": "Aucun composant ne fait partie de ce système", + "hasResourcesCard.title": "Dispose de ressources", + "hasResourcesCard.emptyMessage": "Aucune ressource ne fait partie de ce système", + "hasSubcomponentsCard.title": "A des sous-composants", + "hasSubcomponentsCard.emptyMessage": "Aucun sous-composant ne fait partie de ce composant", + "hasSubdomainsCard.title": "A des sous-domaines", + "hasSubdomainsCard.emptyMessage": "Aucun sous-domaine ne fait partie de ce domaine", + "hasSystemsCard.title": "A des systèmes", + "hasSystemsCard.emptyMessage": "Aucun système ne fait partie de ce domaine", + "relatedEntitiesCard.emptyHelpLinkTitle": "Apprenez à changer cela", + "systemDiagramCard.title": "Diagramme du système", + "systemDiagramCard.description": "Utilisez le pincement et le zoom pour vous déplacer dans le diagramme.", + "systemDiagramCard.edgeLabels.partOf": "une partie de", + "systemDiagramCard.edgeLabels.provides": "fournit", + "systemDiagramCard.edgeLabels.dependsOn": "dépend de" + } + }, + "catalog-import": { + "fr": { + "defaultImportPage.headerTitle": "Importer un dépôt Git existant", + "importInfoCard.title": "Importer un dépôt Git existant", + "buttons.back": "Arrière", + "defaultImportPage.contentHeaderTitle": "Commencez à suivre votre composant dans {{appTitle}}", + "defaultImportPage.supportTitle": "Commencez à suivre votre composant dans {{appTitle}} en l'ajoutant au catalogue de logiciels.", + "importInfoCard.deepLinkTitle": "En savoir plus sur le catalogue de logiciels", + "importInfoCard.linkDescription": "Saisissez l'URL de votre référentiel de code source pour l'ajouter à {{appTitle}}.", + "importInfoCard.fileLinkTitle": "Lien vers un fichier d'entité existant", + "importInfoCard.examplePrefix": "Exemple: ", + "importInfoCard.fileLinkDescription": "L'assistant analyse le fichier, prévisualise les entités et les ajoute au catalogue {{appTitle}}.", + "importInfoCard.githubIntegration.title": "Lien vers un référentiel", + "importInfoCard.githubIntegration.label": "GitHub uniquement", + "importInfoCard.exampleDescription": "L'assistant découvre tous les fichiers {{catalogFilename}} dans le référentiel, prévisualise les entités et les ajoute au catalogue {{appTitle}}.", + "importInfoCard.preparePullRequestDescription": "Si aucune entité n'est trouvée, l'assistant préparera une Pull Request qui ajoute un exemple de {{catalogFilename}} et prépare le catalogue {{appTitle}} pour charger toutes les entités dès que la Pull Request est fusionnée.", + "importStepper.singleLocation.title": "Sélectionner des emplacements", + "importStepper.singleLocation.description": "Lieux découverts : 1", + "importStepper.multipleLocations.title": "Sélectionner des emplacements", + "importStepper.multipleLocations.description": "Lieux découverts : {{length, number}}", + "importStepper.noLocation.title": "Créer une demande d'extraction", + "importStepper.noLocation.createPr.detailsTitle": "Détails de la demande d'extraction", + "importStepper.noLocation.createPr.titleLabel": "Titre de la demande d'extraction", + "importStepper.noLocation.createPr.titlePlaceholder": "Ajouter des fichiers descripteurs d'entités de catalogue Backstage", + "importStepper.noLocation.createPr.bodyLabel": "Corps de la demande d'extraction", + "importStepper.noLocation.createPr.bodyPlaceholder": "Un texte descriptif avec prise en charge Markdown", + "importStepper.noLocation.createPr.configurationTitle": "Configuration de l'entité", + "importStepper.noLocation.createPr.componentNameLabel": "Nom du composant créé", + "importStepper.noLocation.createPr.componentNamePlaceholder": "mon-composant", + "importStepper.noLocation.createPr.ownerLoadingText": "Chargement des groupes…", + "importStepper.noLocation.createPr.ownerHelperText": "Sélectionnez un propriétaire dans la liste ou entrez une référence à un groupe ou à un utilisateur", + "importStepper.noLocation.createPr.ownerErrorHelperText": "valeur requise", + "importStepper.noLocation.createPr.ownerLabel": "Propriétaire de l'entité", + "importStepper.noLocation.createPr.ownerPlaceholder": "mon-groupe", + "importStepper.noLocation.createPr.codeownersHelperText": "AVERTISSEMENT : cette opération peut échouer si aucun fichier CODEOWNERS n'est trouvé à l'emplacement cible.", + "importStepper.analyze.title": "Sélectionnez l'URL", + "importStepper.prepare.title": "Actions d'importation", + "importStepper.prepare.description": "Facultatif", + "importStepper.review.title": "Revoir", + "importStepper.finish.title": "Finition", + "stepFinishImportLocation.backButtonText": "Enregistrer un autre", + "stepFinishImportLocation.repository.title": "La Pull Request suivante a été ouverte : ", + "stepFinishImportLocation.repository.description": "Vos entités seront importées dès que la Pull Request sera fusionnée.", + "stepFinishImportLocation.locations.new": "Les entités suivantes ont été ajoutées au catalogue :", + "stepFinishImportLocation.locations.existing": "Une actualisation a été déclenchée pour les emplacements suivants :", + "stepFinishImportLocation.locations.viewButtonText": "Afficher le composant", + "stepFinishImportLocation.locations.backButtonText": "Enregistrer un autre", + "stepInitAnalyzeUrl.error.repository": "Impossible de générer des entités pour votre référentiel", + "stepInitAnalyzeUrl.error.locations": "Il n'y a aucune entité à cet endroit", + "stepInitAnalyzeUrl.error.default": "Résultat d'analyse inconnu reçu de type {{type}}. Veuillez contacter l'équipe d'assistance.", + "stepInitAnalyzeUrl.error.url": "Doit commencer par http:// ou https://.", + "stepInitAnalyzeUrl.urlHelperText": "Saisissez le chemin complet vers votre fichier d'entité pour commencer à suivre votre composant", + "stepInitAnalyzeUrl.nextButtonText": "Analyser", + "stepPrepareCreatePullRequest.description": "Vous avez entré un lien vers un référentiel {{integrationType}} mais aucun {{catalogFilename}} n'a pu être trouvé. Utilisez ce formulaire pour ouvrir une Pull Request qui en crée une.", + "stepPrepareCreatePullRequest.previewPr.title": "Aperçu de la demande d'extraction", + "stepPrepareCreatePullRequest.previewPr.subheader": "Créer une nouvelle Pull Request", + "stepPrepareCreatePullRequest.previewCatalogInfo.title": "Aperçu des entités", + "stepPrepareCreatePullRequest.nextButtonText": "Créer des relations publiques", + "stepPrepareSelectLocations.locations.description": "Sélectionnez un ou plusieurs emplacements présents dans votre dépôt git :", + "stepPrepareSelectLocations.locations.selectAll": "Sélectionner tout", + "stepPrepareSelectLocations.existingLocations.description": "Ces emplacements existent déjà dans le catalogue :", + "stepPrepareSelectLocations.nextButtonText": "Revoir", + "stepReviewLocation.prepareResult.title": "La Pull Request suivante a été ouverte : ", + "stepReviewLocation.prepareResult.description": "Vous pouvez déjà importer l'emplacement et {{appTitle}} récupérera les entités dès que la Pull Request sera fusionnée.", + "stepReviewLocation.catalog.exists": "Les emplacements suivants existent déjà dans le catalogue :", + "stepReviewLocation.catalog.new": "Les entités suivantes seront ajoutées au catalogue :", + "stepReviewLocation.refresh": "Rafraîchir", + "stepReviewLocation.import": "Importer" + } + }, + "core-components": { + "fr": { + "table.filter.placeholder": "Tous les résultats", + "table.body.emptyDataSourceMessage": "Aucun enregistrement à afficher", + "table.pagination.firstTooltip": "Première page", + "table.pagination.labelDisplayedRows": "{de}-{à} de {count}", + "table.pagination.labelRowsSelect": "rangées", + "table.pagination.lastTooltip": "Dernière page", + "table.pagination.nextTooltip": "Page suivante", + "table.pagination.previousTooltip": "Page précédente", + "table.toolbar.search": "Filtre", + "alertDisplay.message_one": "({{ count }} message plus récent)", + "alertDisplay.message_other": "({{ count }} messages plus récents)", + "table.header.actions": "Actes", + "oauthRequestDialog.message": "Connectez-vous pour autoriser {{appTitle}} à accéder aux API et identités de {{provider}}.", + "signIn.title": "Se connecter", + "signIn.loginFailed": "La connexion a échoué", + "signIn.customProvider.title": "Utilisateur personnalisé", + "signIn.customProvider.subtitle": "Saisissez votre propre identifiant utilisateur et vos informations d'identification. Cette sélection ne sera pas enregistrée.", + "signIn.customProvider.userId": "ID de l'utilisateur", + "signIn.customProvider.tokenInvalid": "Le jeton n'est pas un jeton JWT OpenID Connect valide", + "signIn.customProvider.continue": "Continuer", + "signIn.customProvider.idToken": "Jeton d'identification (facultatif)", + "signIn.guestProvider.title": "Invité", + "signIn.guestProvider.subtitle": "Entrez en tant qu'utilisateur invité. Votre identité n'aura pas été vérifiée, ce qui signifie que certaines fonctionnalités pourraient ne pas être disponibles.", + "signIn.guestProvider.enter": "Entrer", + "skipToContent": "Accéder au contenu", + "copyTextButton.tooltipText": "Texte copié dans le presse-papiers", + "simpleStepper.reset": "Réinitialiser", + "simpleStepper.finish": "Finition", + "simpleStepper.next": "Suivant", + "simpleStepper.skip": "Ignorer", + "simpleStepper.back": "Arrière", + "errorPage.subtitle": "ERREUR {{status}} : {{statusMessage}}", + "errorPage.title": "On dirait que quelqu'un a laissé tomber le micro !", + "errorPage.goBack": "Retour", + "errorPage.showMoreDetails": "Afficher plus de détails", + "errorPage.showLessDetails": "Afficher moins de détails", + "emptyState.missingAnnotation.title": "Annotation manquante", + "emptyState.missingAnnotation.actionTitle": "Ajoutez l'annotation à votre composant YAML comme indiqué dans l'exemple en surbrillance ci-dessous :", + "emptyState.missingAnnotation.readMore": "En savoir plus", + "supportConfig.default.title": "Support non configuré", + "supportConfig.default.linkTitle": "Ajouter la clé de configuration « app.support »", + "errorBoundary.title": "Veuillez contacter {{slackChannel}} pour obtenir de l'aide.", + "oauthRequestDialog.title": "Connexion requise", + "oauthRequestDialog.authRedirectTitle": "Cela déclenchera une redirection http vers la connexion OAuth.", + "oauthRequestDialog.login": "Connexion", + "oauthRequestDialog.rejectAll": "Tout rejeter", + "supportButton.title": "Support", + "supportButton.close": "Fermer", + "table.filter.title": "Filtres", + "table.filter.clearAll": "Tout effacer", + "autoLogout.stillTherePrompt.title": "Déconnexion en raison d'inactivité", + "autoLogout.stillTherePrompt.buttonText": "Oui! Ne me déconnectez pas", + "proxiedSignInPage.title": "Vous ne semblez pas être connecté. Veuillez essayer de recharger la page du navigateur." + } + }, + "rhdh": { + "fr": { + "menuItem.home": "Home", + "menuItem.myGroup_one": "Mon groupe", + "menuItem.myGroup_other": "Mes groupes", + "menuItem.catalog": "Catalogue", + "menuItem.apis": "APIs", + "menuItem.learningPaths": "Learning Paths", + "menuItem.selfService": "Self-service", + "menuItem.userSettings": "Paramètres utilisateur", + "menuItem.administration": "Administration", + "menuItem.extensions": "Extensions", + "menuItem.clusters": "Groupes", + "menuItem.rbac": "RBAC", + "menuItem.bulkImport": "Importation en masse", + "menuItem.docs": "Docs", + "menuItem.lighthouse": "Lighthouse", + "menuItem.techRadar": "Tech Radar", + "menuItem.orchestrator": "Orchestrateur", + "menuItem.adoptionInsights": "Adoption Insights", + "sidebar.menu": "Menu", + "sidebar.home": "Home", + "sidebar.homeLogo": "Logo de la maison", + "signIn.page.title": "Sélectionnez une méthode de connexion", + "signIn.providers.auth0.title": "Auth0", + "signIn.providers.auth0.message": "Connectez-vous avec Auth0", + "signIn.providers.atlassian.title": "Atlassian", + "signIn.providers.atlassian.message": "Connectez-vous avec Atlassian", + "signIn.providers.microsoft.title": "Microsoft", + "signIn.providers.microsoft.message": "Connectez-vous avec Microsoft", + "signIn.providers.bitbucket.title": "Bitbucket", + "signIn.providers.bitbucket.message": "Connectez-vous avec Bitbucket", + "signIn.providers.bitbucketServer.title": "Serveur Bitbucket", + "signIn.providers.bitbucketServer.message": "Connectez-vous à l'aide de Bitbucket Server", + "signIn.providers.github.title": "GitHub", + "signIn.providers.github.message": "Connectez-vous avec GitHub", + "signIn.providers.gitlab.title": "GitLab", + "signIn.providers.gitlab.message": "Connectez-vous avec GitLab", + "signIn.providers.google.title": "Google", + "signIn.providers.google.message": "Connectez-vous avec Google", + "signIn.providers.oidc.title": "OIDC", + "signIn.providers.oidc.message": "Connectez-vous avec OIDC", + "signIn.providers.okta.title": "Okta", + "signIn.providers.okta.message": "Connectez-vous avec Okta", + "signIn.providers.onelogin.title": "OneLogin", + "signIn.providers.onelogin.message": "Connectez-vous avec OneLogin", + "signIn.providers.saml.title": "SAML", + "signIn.providers.saml.message": "Connectez-vous en utilisant SAML", + "catalog.entityPage.overview.title": "Vue d’ensemble", + "catalog.entityPage.topology.title": "Topologie", + "catalog.entityPage.issues.title": "Problèmes", + "catalog.entityPage.pullRequests.title": "Extraire/Merger les Demandes", + "catalog.entityPage.ci.title": "CI", + "catalog.entityPage.cd.title": "CD", + "catalog.entityPage.kubernetes.title": "Kubernetes", + "catalog.entityPage.imageRegistry.title": "Registre d’images", + "catalog.entityPage.monitoring.title": "Surveillance", + "catalog.entityPage.lighthouse.title": "Lighthouse", + "catalog.entityPage.api.title": "API", + "catalog.entityPage.dependencies.title": "Dépendances", + "catalog.entityPage.docs.title": "Docs", + "catalog.entityPage.definition.title": "Définition", + "catalog.entityPage.diagram.title": "Diagramme du système", + "catalog.entityPage.workflows.title": "Flux de travail", + "app.scaffolder.title": "Self-service", + "app.search.title": "Recherche", + "app.search.resultType": "Type de résultat", + "app.search.softwareCatalog": "Catalogue de logiciels", + "app.search.filters.kind": "Type", + "app.search.filters.lifecycle": "Cycle de vie", + "app.search.filters.component": "Composant", + "app.search.filters.template": "Modèle", + "app.search.filters.experimental": "expérimental", + "app.search.filters.production": "production", + "app.learningPaths.title": "Learning Paths", + "app.learningPaths.error.title": "Impossible de récupérer les données.", + "app.learningPaths.error.unknownError": "Erreur inconnue", + "app.userSettings.infoCard.title": "Métadonnées RHDH", + "app.userSettings.infoCard.metadataCopied": "Métadonnées copiées dans le presse-papiers", + "app.userSettings.infoCard.copyMetadata": "Copier les métadonnées dans votre presse-papiers", + "app.userSettings.infoCard.showLess": "Afficher moins", + "app.userSettings.infoCard.showMore": "Afficher plus", + "app.errors.contactSupport": "Contacter le support", + "app.errors.goBack": "Retour", + "app.errors.notFound.message": "Nous n'avons pas pu trouver cette page", + "app.errors.notFound.additionalInfo": "La page que vous recherchez a peut-être été supprimée, son nom a peut-être été modifié ou elle est temporairement indisponible.", + "app.table.createdAt": "Créé à", + "menuItem.myGroup": "Mon groupe", + "app.entityPage.diagram.title": "Diagramme du système" } }, "scaffolder": { "fr": { + "templateListPage.contentHeader.registerExistingButtonTitle": "Importer un dépôt Git existant", "aboutCard.launchTemplate": "Modèle de lancement", "actionsPage.title": "Actions installées", "actionsPage.pageTitle": "Créer un nouveau composant", @@ -185,7 +457,6 @@ "templateListPage.pageTitle": "Créer un nouveau composant", "templateListPage.templateGroups.defaultTitle": "Modèles", "templateListPage.templateGroups.otherTitle": "Autres modèles", - "templateListPage.contentHeader.registerExistingButtonTitle": "Importer un dépôt Git existant", "templateListPage.contentHeader.supportButtonTitle": "Créez de nouveaux composants logiciels à l’aide de modèles standard. Différents modèles créent différents types de composants (services, sites Web, documentation, ...).", "templateListPage.additionalLinksForEntity.viewTechDocsTitle": "Voir TechDocs", "templateWizardPage.title": "Créer un nouveau composant", @@ -208,63 +479,20 @@ "templateEditorToolbarTemplatesMenu.button": "Modèles" } }, - "catalog-react": { + "search": { "fr": { - "catalogFilter.title": "Filtres", - "catalogFilter.buttonTitle": "Filtres", - "entityKindPicker.title": "Kind", - "entityKindPicker.errorMessage": "Échec du chargement des types d'entités", - "entityLifecyclePicker.title": "Cycle de vie", - "entityNamespacePicker.title": "Espace de noms", - "entityOwnerPicker.title": "Propriétaire", - "entityProcessingStatusPicker.title": "Statut de traitement", - "entityTagPicker.title": "Mots-clés", - "entityPeekAheadPopover.title": "Accédez à l'entité pour voir toutes les balises.", - "entityPeekAheadPopover.emailCardAction.title": "Courriel {{email}}", - "entityPeekAheadPopover.emailCardAction.subTitle": "mailto {{email}}", - "entityPeekAheadPopover.entityCardActionsTitle": "Afficher les détails", - "entitySearchBar.placeholder": "Rechercher", - "entityTypePicker.title": "Taper", - "entityTypePicker.errorMessage": "Échec du chargement des types d'entités", - "entityTypePicker.optionAllTitle": "tous", - "favoriteEntity.addToFavorites": "Ajouter aux favoris", - "favoriteEntity.removeFromFavorites": "Supprimer des favoris", - "inspectEntityDialog.title": "Inspecteur d'entité", - "inspectEntityDialog.closeButtonTitle": "Fermer", - "inspectEntityDialog.ancestryPage.title": "Ascendance", - "inspectEntityDialog.colocatedPage.title": "Colocalisé", - "inspectEntityDialog.colocatedPage.description": "Il s'agit des entités qui sont colocalisées avec cette entité - comme si elles provenaient de la même source de données (par exemple, du même fichier YAML) ou de la même origine (par exemple, l'URL initialement enregistrée).", - "inspectEntityDialog.colocatedPage.alertNoLocation": "L'entité n'avait aucune information de localisation.", - "inspectEntityDialog.colocatedPage.alertNoEntity": "Il n’y avait aucune autre entité à cet endroit.", - "inspectEntityDialog.jsonPage.title": "Entité au format JSON", - "inspectEntityDialog.jsonPage.description": "Il s'agit des données d'entité brutes telles que reçues du catalogue, au format JSON.", - "inspectEntityDialog.overviewPage.title": "Aperçu", - "inspectEntityDialog.yamlPage.title": "Entité au format YAML", - "inspectEntityDialog.yamlPage.description": "Il s'agit des données d'entité brutes telles que reçues du catalogue, sous forme YAML.", - "unregisterEntityDialog.title": "Êtes-vous sûr de vouloir désinscrire cette entité ?", - "unregisterEntityDialog.cancelButtonTitle": "Annuler", - "unregisterEntityDialog.deleteButtonTitle": "Supprimer l'entité", - "unregisterEntityDialog.deleteEntitySuccessMessage": "Entité supprimée {{entityName}}", - "unregisterEntityDialog.bootstrapState.title": "Vous ne pouvez pas désinscrire cette entité, car elle provient d'une configuration Backstage protégée (emplacement « {{location}} »). Si vous pensez qu'il s'agit d'une erreur, veuillez contacter l'intégrateur {{appTitle}}.", - "unregisterEntityDialog.bootstrapState.advancedDescription": "Vous avez la possibilité de supprimer l'entité elle-même du catalogue. Notez que cela ne doit être fait que si vous savez que le fichier de catalogue a été supprimé ou déplacé de son emplacement d'origine. Si ce n’est pas le cas, l’entité réapparaîtra sous peu lors du prochain cycle d’actualisation effectué par le catalogue.", - "unregisterEntityDialog.bootstrapState.advancedOptions": "Options avancées", - "unregisterEntityDialog.onlyDeleteStateTitle": "Cette entité ne semble pas provenir d'un lieu enregistré. Vous n'avez donc que la possibilité de le supprimer purement et simplement du catalogue.", - "unregisterEntityDialog.unregisterState.title": "Cette action désenregistrera les entités suivantes :", - "unregisterEntityDialog.unregisterState.subTitle": "Situé à l'emplacement suivant :", - "unregisterEntityDialog.unregisterState.description": "Pour annuler, réenregistrez simplement l'entité dans {{appTitle}}.", - "unregisterEntityDialog.unregisterState.unregisterButtonTitle": "Désenregistrer l'emplacement", - "unregisterEntityDialog.unregisterState.advancedOptions": "Options avancées", - "unregisterEntityDialog.unregisterState.advancedDescription": "Vous avez également la possibilité de supprimer l'entité elle-même du catalogue. Notez que cela ne doit être fait que si vous savez que le fichier de catalogue a été supprimé ou déplacé de son emplacement d'origine. Si ce n’est pas le cas, l’entité réapparaîtra sous peu lors du prochain cycle d’actualisation effectué par le catalogue.", - "unregisterEntityDialog.errorStateTitle": "Erreur interne : état inconnu", - "userListPicker.defaultOrgName": "Entreprise", - "userListPicker.personalFilter.title": "Personnel", - "userListPicker.personalFilter.ownedLabel": "Possédé", - "userListPicker.personalFilter.starredLabel": "Étoilé", - "userListPicker.orgFilterAllLabel": "Tous" + "sidebarSearchModal.title": "Rechercher", + "searchModal.viewFullResults": "Voir les résultats complets", + "searchType.allResults": "Tous les résultats", + "searchType.tabs.allTitle": "Tous", + "searchType.accordion.allTitle": "Tous", + "searchType.accordion.collapse": "Effondrement", + "searchType.accordion.numberOfResults": "{{number}} résultats" } }, "user-settings": { "fr": { + "sidebarTitle": "Paramètres", "languageToggle.title": "Langue", "languageToggle.description": "Changer la langue", "languageToggle.select": "Sélectionnez la langue {{language}}", @@ -312,11 +540,94 @@ "featureFlags.flagItem.subtitle.registeredInApplication": "Enregistré dans l'application", "featureFlags.flagItem.subtitle.registeredInPlugin": "Enregistré dans le plugin {{pluginId}}", "settingsLayout.title": "Paramètres", - "sidebarTitle": "Paramètres", "profileCard.title": "Profil", "appearanceCard.title": "Apparence" } }, + "home": { + "fr": { + "addWidgetDialog.title": "Ajouter un nouveau widget au tableau de bord", + "customHomepageButtons.edit": "Modifier", + "customHomepageButtons.restoreDefaults": "Restaurer les valeurs par défaut", + "customHomepageButtons.clearAll": "Tout effacer", + "customHomepageButtons.addWidget": "Ajouter un widget", + "customHomepageButtons.save": "Sauvegarder", + "customHomepage.noWidgets": "Aucun widget ajouté. Commencez par cliquer sur le bouton « Ajouter un widget ».", + "widgetSettingsOverlay.editSettingsTooptip": "Modifier les paramètres", + "widgetSettingsOverlay.deleteWidgetTooltip": "Supprimer le widget", + "widgetSettingsOverlay.submitButtonTitle": "Soumettre", + "widgetSettingsOverlay.cancelButtonTitle": "Annuler", + "starredEntityListItem.removeFavoriteEntityTitle": "Supprimer l'entité des favoris", + "visitList.empty.title": "Il n'y a pas encore de visites à afficher.", + "visitList.empty.description": "Une fois que vous commencez à utiliser Backstage, vos visites apparaîtront ici sous la forme d'un lien rapide pour reprendre là où vous vous êtes arrêté.", + "visitList.few.title": "Plus vous visitez de pages, plus de pages apparaîtront ici.", + "quickStart.title": "Intégration", + "quickStart.description": "Démarrer avec Backstage", + "quickStart.learnMoreLinkTitle": "En savoir plus", + "starredEntities.noStarredEntitiesMessage": "Cliquez sur l’étoile à côté du nom d’une entité pour l’ajouter à cette liste !", + "visitedByType.action.viewMore": "Voir plus", + "visitedByType.action.viewLess": "Voir moins", + "featuredDocsCard.learnMoreTitle": "POUR EN SAVOIR PLUS", + "featuredDocsCard.empty.title": "Aucun document à montrer", + "featuredDocsCard.empty.description": "Créez votre propre document. Consultez nos informations de démarrage", + "featuredDocsCard.empty.learnMoreLinkTitle": "DOCUMENTS" + } + }, + "catalog-react": { + "fr": { + "catalogFilter.title": "Filtres", + "catalogFilter.buttonTitle": "Filtres", + "entityKindPicker.title": "Kind", + "entityKindPicker.errorMessage": "Échec du chargement des types d'entités", + "entityLifecyclePicker.title": "Cycle de vie", + "entityNamespacePicker.title": "Espace de noms", + "entityOwnerPicker.title": "Propriétaire", + "entityProcessingStatusPicker.title": "Statut de traitement", + "entityTagPicker.title": "Mots-clés", + "entityPeekAheadPopover.title": "Accédez à l'entité pour voir toutes les balises.", + "entityPeekAheadPopover.emailCardAction.title": "Courriel {{email}}", + "entityPeekAheadPopover.emailCardAction.subTitle": "mailto {{email}}", + "entityPeekAheadPopover.entityCardActionsTitle": "Afficher les détails", + "entitySearchBar.placeholder": "Rechercher", + "entityTypePicker.title": "Taper", + "entityTypePicker.errorMessage": "Échec du chargement des types d'entités", + "entityTypePicker.optionAllTitle": "tous", + "favoriteEntity.addToFavorites": "Ajouter aux favoris", + "favoriteEntity.removeFromFavorites": "Supprimer des favoris", + "inspectEntityDialog.title": "Inspecteur d'entité", + "inspectEntityDialog.closeButtonTitle": "Fermer", + "inspectEntityDialog.ancestryPage.title": "Ascendance", + "inspectEntityDialog.colocatedPage.title": "Colocalisé", + "inspectEntityDialog.colocatedPage.description": "Il s'agit des entités qui sont colocalisées avec cette entité - comme si elles provenaient de la même source de données (par exemple, du même fichier YAML) ou de la même origine (par exemple, l'URL initialement enregistrée).", + "inspectEntityDialog.colocatedPage.alertNoLocation": "L'entité n'avait aucune information de localisation.", + "inspectEntityDialog.colocatedPage.alertNoEntity": "Il n’y avait aucune autre entité à cet endroit.", + "inspectEntityDialog.jsonPage.title": "Entité au format JSON", + "inspectEntityDialog.jsonPage.description": "Il s'agit des données d'entité brutes telles que reçues du catalogue, au format JSON.", + "inspectEntityDialog.overviewPage.title": "Aperçu", + "inspectEntityDialog.yamlPage.title": "Entité au format YAML", + "inspectEntityDialog.yamlPage.description": "Il s'agit des données d'entité brutes telles que reçues du catalogue, sous forme YAML.", + "unregisterEntityDialog.title": "Êtes-vous sûr de vouloir désinscrire cette entité ?", + "unregisterEntityDialog.cancelButtonTitle": "Annuler", + "unregisterEntityDialog.deleteButtonTitle": "Supprimer l'entité", + "unregisterEntityDialog.deleteEntitySuccessMessage": "Entité supprimée {{entityName}}", + "unregisterEntityDialog.bootstrapState.title": "Vous ne pouvez pas désinscrire cette entité, car elle provient d'une configuration Backstage protégée (emplacement « {{location}} »). Si vous pensez qu'il s'agit d'une erreur, veuillez contacter l'intégrateur {{appTitle}}.", + "unregisterEntityDialog.bootstrapState.advancedDescription": "Vous avez la possibilité de supprimer l'entité elle-même du catalogue. Notez que cela ne doit être fait que si vous savez que le fichier de catalogue a été supprimé ou déplacé de son emplacement d'origine. Si ce n’est pas le cas, l’entité réapparaîtra sous peu lors du prochain cycle d’actualisation effectué par le catalogue.", + "unregisterEntityDialog.bootstrapState.advancedOptions": "Options avancées", + "unregisterEntityDialog.onlyDeleteStateTitle": "Cette entité ne semble pas provenir d'un lieu enregistré. Vous n'avez donc que la possibilité de le supprimer purement et simplement du catalogue.", + "unregisterEntityDialog.unregisterState.title": "Cette action désenregistrera les entités suivantes :", + "unregisterEntityDialog.unregisterState.subTitle": "Situé à l'emplacement suivant :", + "unregisterEntityDialog.unregisterState.description": "Pour annuler, réenregistrez simplement l'entité dans {{appTitle}}.", + "unregisterEntityDialog.unregisterState.unregisterButtonTitle": "Désenregistrer l'emplacement", + "unregisterEntityDialog.unregisterState.advancedOptions": "Options avancées", + "unregisterEntityDialog.unregisterState.advancedDescription": "Vous avez également la possibilité de supprimer l'entité elle-même du catalogue. Notez que cela ne doit être fait que si vous savez que le fichier de catalogue a été supprimé ou déplacé de son emplacement d'origine. Si ce n’est pas le cas, l’entité réapparaîtra sous peu lors du prochain cycle d’actualisation effectué par le catalogue.", + "unregisterEntityDialog.errorStateTitle": "Erreur interne : état inconnu", + "userListPicker.defaultOrgName": "Entreprise", + "userListPicker.personalFilter.title": "Personnel", + "userListPicker.personalFilter.ownedLabel": "Possédé", + "userListPicker.personalFilter.starredLabel": "Étoilé", + "userListPicker.orgFilterAllLabel": "Tous" + } + }, "org": { "fr": { "groupProfileCard.groupNotFound": "Groupe non trouvé", @@ -362,104 +673,11 @@ "searchResultPager.next": "Suivant" } }, - "catalog": { - "fr": { - "indexPage.title": "Catalogue {{orgName}}", - "indexPage.createButtonTitle": "Self-service", - "indexPage.supportButtonContent": "Toutes les entités de votre catalogue de logiciels", - "aboutCard.title": "À propos", - "aboutCard.refreshButtonTitle": "Actualisation de l'entité de planification", - "aboutCard.editButtonTitle": "Modifier les métadonnées", - "aboutCard.createSimilarButtonTitle": "Créer quelque chose de similaire", - "aboutCard.refreshScheduledMessage": "Actualisation programmée", - "aboutCard.launchTemplate": "Modèle de lancement", - "aboutCard.viewTechdocs": "Voir TechDocs", - "aboutCard.viewSource": "Voir la source", - "aboutCard.descriptionField.label": "Description", - "aboutCard.descriptionField.value": "Aucune description", - "aboutCard.ownerField.label": "Propriétaire", - "aboutCard.ownerField.value": "Pas de propriétaire", - "aboutCard.domainField.label": "Domaine", - "aboutCard.domainField.value": "Pas de domaine", - "aboutCard.systemField.label": "Système", - "aboutCard.systemField.value": "Pas de système", - "aboutCard.parentComponentField.label": "Composant parent", - "aboutCard.parentComponentField.value": "Aucun composant parent", - "aboutCard.typeField.label": "Taper", - "aboutCard.lifecycleField.label": "Cycle de vie", - "aboutCard.tagsField.label": "Mots-clés", - "aboutCard.tagsField.value": "Aucune balise", - "aboutCard.targetsField.label": "Cibles", - "searchResultItem.lifecycle": "Cycle de vie", - "searchResultItem.Owner": "Propriétaire", - "catalogTable.warningPanelTitle": "Impossible de récupérer les entités du catalogue.", - "catalogTable.viewActionTitle": "Voir", - "catalogTable.editActionTitle": "Modifier", - "catalogTable.starActionTitle": "Ajouter aux favoris", - "catalogTable.unStarActionTitle": "Supprimer des favoris", - "dependencyOfComponentsCard.title": "Dépendance des composants", - "dependencyOfComponentsCard.emptyMessage": "Aucun composant ne dépend de ce composant", - "dependsOnComponentsCard.title": "Cela dépend des composants", - "dependsOnComponentsCard.emptyMessage": "Aucun composant n'est une dépendance de ce composant", - "dependsOnResourcesCard.title": "Cela dépend des ressources", - "dependsOnResourcesCard.emptyMessage": "Aucune ressource n'est une dépendance de ce composant", - "entityContextMenu.copiedMessage": "Copié!", - "entityContextMenu.moreButtonTitle": "Plus", - "entityContextMenu.inspectMenuTitle": "Inspecter l'entité", - "entityContextMenu.copyURLMenuTitle": "Copier l'URL de l'entité", - "entityContextMenu.unregisterMenuTitle": "Désenregistrer l'entité", - "entityLabelsCard.title": "Étiquettes", - "entityLabelsCard.emptyDescription": "Aucune étiquette définie pour cette entité. Vous pouvez ajouter des étiquettes à votre entité YAML comme indiqué dans l'exemple en surbrillance ci-dessous :", - "entityLabelsCard.readMoreButtonTitle": "En savoir plus", - "entityLabels.warningPanelTitle": "Entité non trouvée", - "entityLabels.ownerLabel": "Propriétaire", - "entityLabels.lifecycleLabel": "Cycle de vie", - "entityLinksCard.title": "Links", - "entityLinksCard.emptyDescription": "Aucun lien défini pour cette entité. Vous pouvez ajouter des liens vers votre entité YAML comme indiqué dans l'exemple en surbrillance ci-dessous :", - "entityLinksCard.readMoreButtonTitle": "En savoir plus", - "entityNotFound.title": "L'entité n'a pas été trouvée", - "entityNotFound.description": "Vous voulez nous aider à construire cela ? Consultez notre documentation de mise en route.", - "entityNotFound.docButtonTitle": "DOCUMENTS", - "deleteEntity.dialogTitle": "Êtes-vous sûr de vouloir supprimer cette entité ?", - "deleteEntity.deleteButtonTitle": "Supprimer", - "deleteEntity.cancelButtonTitle": "Annuler", - "deleteEntity.description": "Cette entité n'est référencée par aucun emplacement et ne reçoit donc pas de mises à jour. Cliquez ici pour supprimer.", - "entityProcessingErrorsDescription": "L'erreur ci-dessous provient de", - "entityRelationWarningDescription": "Cette entité a des relations avec d'autres entités, qui ne peuvent pas être trouvées dans le catalogue. Les entités non trouvées sont : ", - "hasComponentsCard.title": "Contient des composants", - "hasComponentsCard.emptyMessage": "Aucun composant ne fait partie de ce système", - "hasResourcesCard.title": "Dispose de ressources", - "hasResourcesCard.emptyMessage": "Aucune ressource ne fait partie de ce système", - "hasSubcomponentsCard.title": "A des sous-composants", - "hasSubcomponentsCard.emptyMessage": "Aucun sous-composant ne fait partie de ce composant", - "hasSubdomainsCard.title": "A des sous-domaines", - "hasSubdomainsCard.emptyMessage": "Aucun sous-domaine ne fait partie de ce domaine", - "hasSystemsCard.title": "A des systèmes", - "hasSystemsCard.emptyMessage": "Aucun système ne fait partie de ce domaine", - "relatedEntitiesCard.emptyHelpLinkTitle": "Apprenez à changer cela", - "systemDiagramCard.title": "Diagramme du système", - "systemDiagramCard.description": "Utilisez le pincement et le zoom pour vous déplacer dans le diagramme.", - "systemDiagramCard.edgeLabels.partOf": "une partie de", - "systemDiagramCard.edgeLabels.provides": "fournit", - "systemDiagramCard.edgeLabels.dependsOn": "dépend de" - } - }, "kubernetes-react": { "fr": { "podDrawer.buttons.delete": "Supprimer le pod" } }, - "search": { - "fr": { - "searchModal.viewFullResults": "Voir les résultats complets", - "searchType.allResults": "Tous les résultats", - "searchType.tabs.allTitle": "Tous", - "searchType.accordion.allTitle": "Tous", - "searchType.accordion.collapse": "Effondrement", - "searchType.accordion.numberOfResults": "{{number}} résultats", - "sidebarSearchModal.title": "Rechercher" - } - }, "scaffolder-react": { "fr": { "passwordWidget.content": "Ce widget n'est pas sécurisé. Veuillez utiliser [`ui:field: Secret`](https://backstage.io/docs/features/software-templates/writing-templates/#using-secrets) au lieu de `ui:widget: password`", @@ -482,76 +700,6 @@ "workflow.noDescription": "Aucune description" } }, - "catalog-import": { - "fr": { - "buttons.back": "Arrière", - "defaultImportPage.headerTitle": "Importer un dépôt Git existant", - "defaultImportPage.contentHeaderTitle": "Commencez à suivre votre composant dans {{appTitle}}", - "defaultImportPage.supportTitle": "Commencez à suivre votre composant dans {{appTitle}} en l'ajoutant au catalogue de logiciels.", - "importInfoCard.title": "Importer un dépôt Git existant", - "importInfoCard.deepLinkTitle": "En savoir plus sur le catalogue de logiciels", - "importInfoCard.linkDescription": "Saisissez l'URL de votre référentiel de code source pour l'ajouter à {{appTitle}}.", - "importInfoCard.fileLinkTitle": "Lien vers un fichier d'entité existant", - "importInfoCard.examplePrefix": "Exemple: ", - "importInfoCard.fileLinkDescription": "L'assistant analyse le fichier, prévisualise les entités et les ajoute au catalogue {{appTitle}}.", - "importInfoCard.githubIntegration.title": "Lien vers un référentiel", - "importInfoCard.githubIntegration.label": "GitHub uniquement", - "importInfoCard.exampleDescription": "L'assistant découvre tous les fichiers {{catalogFilename}} dans le référentiel, prévisualise les entités et les ajoute au catalogue {{appTitle}}.", - "importInfoCard.preparePullRequestDescription": "Si aucune entité n'est trouvée, l'assistant préparera une Pull Request qui ajoute un exemple de {{catalogFilename}} et prépare le catalogue {{appTitle}} pour charger toutes les entités dès que la Pull Request est fusionnée.", - "importStepper.singleLocation.title": "Sélectionner des emplacements", - "importStepper.singleLocation.description": "Lieux découverts : 1", - "importStepper.multipleLocations.title": "Sélectionner des emplacements", - "importStepper.multipleLocations.description": "Lieux découverts : {{length, number}}", - "importStepper.noLocation.title": "Créer une demande d'extraction", - "importStepper.noLocation.createPr.detailsTitle": "Détails de la demande d'extraction", - "importStepper.noLocation.createPr.titleLabel": "Titre de la demande d'extraction", - "importStepper.noLocation.createPr.titlePlaceholder": "Ajouter des fichiers descripteurs d'entités de catalogue Backstage", - "importStepper.noLocation.createPr.bodyLabel": "Corps de la demande d'extraction", - "importStepper.noLocation.createPr.bodyPlaceholder": "Un texte descriptif avec prise en charge Markdown", - "importStepper.noLocation.createPr.configurationTitle": "Configuration de l'entité", - "importStepper.noLocation.createPr.componentNameLabel": "Nom du composant créé", - "importStepper.noLocation.createPr.componentNamePlaceholder": "mon-composant", - "importStepper.noLocation.createPr.ownerLoadingText": "Chargement des groupes…", - "importStepper.noLocation.createPr.ownerHelperText": "Sélectionnez un propriétaire dans la liste ou entrez une référence à un groupe ou à un utilisateur", - "importStepper.noLocation.createPr.ownerErrorHelperText": "valeur requise", - "importStepper.noLocation.createPr.ownerLabel": "Propriétaire de l'entité", - "importStepper.noLocation.createPr.ownerPlaceholder": "mon-groupe", - "importStepper.noLocation.createPr.codeownersHelperText": "AVERTISSEMENT : cette opération peut échouer si aucun fichier CODEOWNERS n'est trouvé à l'emplacement cible.", - "importStepper.analyze.title": "Sélectionnez l'URL", - "importStepper.prepare.title": "Actions d'importation", - "importStepper.prepare.description": "Facultatif", - "importStepper.review.title": "Revoir", - "importStepper.finish.title": "Finition", - "stepFinishImportLocation.backButtonText": "Enregistrer un autre", - "stepFinishImportLocation.repository.title": "La Pull Request suivante a été ouverte : ", - "stepFinishImportLocation.repository.description": "Vos entités seront importées dès que la Pull Request sera fusionnée.", - "stepFinishImportLocation.locations.new": "Les entités suivantes ont été ajoutées au catalogue :", - "stepFinishImportLocation.locations.existing": "Une actualisation a été déclenchée pour les emplacements suivants :", - "stepFinishImportLocation.locations.viewButtonText": "Afficher le composant", - "stepFinishImportLocation.locations.backButtonText": "Enregistrer un autre", - "stepInitAnalyzeUrl.error.repository": "Impossible de générer des entités pour votre référentiel", - "stepInitAnalyzeUrl.error.locations": "Il n'y a aucune entité à cet endroit", - "stepInitAnalyzeUrl.error.default": "Résultat d'analyse inconnu reçu de type {{type}}. Veuillez contacter l'équipe d'assistance.", - "stepInitAnalyzeUrl.error.url": "Doit commencer par http:// ou https://.", - "stepInitAnalyzeUrl.urlHelperText": "Saisissez le chemin complet vers votre fichier d'entité pour commencer à suivre votre composant", - "stepInitAnalyzeUrl.nextButtonText": "Analyser", - "stepPrepareCreatePullRequest.description": "Vous avez entré un lien vers un référentiel {{integrationType}} mais aucun {{catalogFilename}} n'a pu être trouvé. Utilisez ce formulaire pour ouvrir une Pull Request qui en crée une.", - "stepPrepareCreatePullRequest.previewPr.title": "Aperçu de la demande d'extraction", - "stepPrepareCreatePullRequest.previewPr.subheader": "Créer une nouvelle Pull Request", - "stepPrepareCreatePullRequest.previewCatalogInfo.title": "Aperçu des entités", - "stepPrepareCreatePullRequest.nextButtonText": "Créer des relations publiques", - "stepPrepareSelectLocations.locations.description": "Sélectionnez un ou plusieurs emplacements présents dans votre dépôt git :", - "stepPrepareSelectLocations.locations.selectAll": "Sélectionner tout", - "stepPrepareSelectLocations.existingLocations.description": "Ces emplacements existent déjà dans le catalogue :", - "stepPrepareSelectLocations.nextButtonText": "Revoir", - "stepReviewLocation.prepareResult.title": "La Pull Request suivante a été ouverte : ", - "stepReviewLocation.prepareResult.description": "Vous pouvez déjà importer l'emplacement et {{appTitle}} récupérera les entités dès que la Pull Request sera fusionnée.", - "stepReviewLocation.catalog.exists": "Les emplacements suivants existent déjà dans le catalogue :", - "stepReviewLocation.catalog.new": "Les entités suivantes seront ajoutées au catalogue :", - "stepReviewLocation.refresh": "Rafraîchir", - "stepReviewLocation.import": "Importer" - } - }, "catalog-graph": { "fr": { "catalogGraphCard.title": "Rapports", @@ -630,62 +778,5 @@ "providingComponentsCard.emptyContent.title": "Aucun composant ne fournit cette API.", "apisCardHelpLinkTitle": "Apprenez à changer cela" } - }, - "core-components": { - "fr": { - "signIn.title": "Se connecter", - "signIn.loginFailed": "La connexion a échoué", - "signIn.customProvider.title": "Utilisateur personnalisé", - "signIn.customProvider.subtitle": "Saisissez votre propre identifiant utilisateur et vos informations d'identification. Cette sélection ne sera pas enregistrée.", - "signIn.customProvider.userId": "ID de l'utilisateur", - "signIn.customProvider.tokenInvalid": "Le jeton n'est pas un jeton JWT OpenID Connect valide", - "signIn.customProvider.continue": "Continuer", - "signIn.customProvider.idToken": "Jeton d'identification (facultatif)", - "signIn.guestProvider.title": "Invité", - "signIn.guestProvider.subtitle": "Entrez en tant qu'utilisateur invité. Votre identité n'aura pas été vérifiée, ce qui signifie que certaines fonctionnalités pourraient ne pas être disponibles.", - "signIn.guestProvider.enter": "Entrer", - "skipToContent": "Accéder au contenu", - "copyTextButton.tooltipText": "Texte copié dans le presse-papiers", - "simpleStepper.reset": "Réinitialiser", - "simpleStepper.finish": "Finition", - "simpleStepper.next": "Suivant", - "simpleStepper.skip": "Ignorer", - "simpleStepper.back": "Arrière", - "errorPage.subtitle": "ERREUR {{status}} : {{statusMessage}}", - "errorPage.title": "On dirait que quelqu'un a laissé tomber le micro !", - "errorPage.goBack": "Retour", - "errorPage.showMoreDetails": "Afficher plus de détails", - "errorPage.showLessDetails": "Afficher moins de détails", - "emptyState.missingAnnotation.title": "Annotation manquante", - "emptyState.missingAnnotation.actionTitle": "Ajoutez l'annotation à votre composant YAML comme indiqué dans l'exemple en surbrillance ci-dessous :", - "emptyState.missingAnnotation.readMore": "En savoir plus", - "supportConfig.default.title": "Support non configuré", - "supportConfig.default.linkTitle": "Ajouter la clé de configuration « app.support »", - "errorBoundary.title": "Veuillez contacter {{slackChannel}} pour obtenir de l'aide.", - "oauthRequestDialog.title": "Connexion requise", - "oauthRequestDialog.authRedirectTitle": "Cela déclenchera une redirection http vers la connexion OAuth.", - "oauthRequestDialog.login": "Connexion", - "oauthRequestDialog.rejectAll": "Tout rejeter", - "oauthRequestDialog.message": "Connectez-vous pour autoriser {{appTitle}} à accéder aux API et identités de {{provider}}.", - "supportButton.title": "Support", - "supportButton.close": "Fermer", - "table.filter.title": "Filtres", - "table.filter.clearAll": "Tout effacer", - "table.filter.placeholder": "Tous les résultats", - "table.body.emptyDataSourceMessage": "Aucun enregistrement à afficher", - "table.pagination.firstTooltip": "Première page", - "table.pagination.labelDisplayedRows": "{de}-{à} de {count}", - "table.pagination.labelRowsSelect": "rangées", - "table.pagination.lastTooltip": "Dernière page", - "table.pagination.nextTooltip": "Page suivante", - "table.pagination.previousTooltip": "Page précédente", - "table.toolbar.search": "Filtre", - "table.header.actions": "Actes", - "alertDisplay.message_one": "({{ count }} message plus récent)", - "alertDisplay.message_other": "({{ count }} messages plus récents)", - "autoLogout.stillTherePrompt.title": "Déconnexion en raison d'inactivité", - "autoLogout.stillTherePrompt.buttonText": "Oui! Ne me déconnectez pas", - "proxiedSignInPage.title": "Vous ne semblez pas être connecté. Veuillez essayer de recharger la page du navigateur." - } } -} +} \ No newline at end of file diff --git a/translations/rhdh-reference-2025-12-05-it-C.json b/translations/rhdh-reference-2025-12-05-it-C.json new file mode 100644 index 0000000000..b074e01b50 --- /dev/null +++ b/translations/rhdh-reference-2025-12-05-it-C.json @@ -0,0 +1,134 @@ +{ + "catalog": { + "it": { + "indexPage.createButtonTitle": "Self-service" + } + }, + "catalog-import": { + "it": { + "defaultImportPage.headerTitle": "Importa un repository Git esistente", + "importInfoCard.title": "Importa un repository Git esistente" + } + }, + "core-components": { + "it": { + "table.filter.placeholder": "Tutti i risultati", + "table.body.emptyDataSourceMessage": "Nessun record da visualizzare", + "table.pagination.firstTooltip": "Prima pagina", + "table.pagination.labelDisplayedRows": "{from}-{to} di {count}", + "table.pagination.labelRowsSelect": "righe", + "table.pagination.lastTooltip": "Ultima pagina", + "table.pagination.nextTooltip": "Pagina successiva", + "table.pagination.previousTooltip": "Pagina precedente", + "table.toolbar.search": "Filtra", + "alertDisplay.message_one": "({{ count }} messaggio più recente)", + "alertDisplay.message_other": "({{ count }} messaggi più recenti)", + "table.header.actions": "Azioni", + "oauthRequestDialog.message": "Accedere per consentire a {{appTitle}} di accedere alle API e alle identità di {{provider}}." + } + }, + "rhdh": { + "it": { + "menuItem.home": "Home", + "menuItem.myGroup_one": "Il mio gruppo", + "menuItem.myGroup_other": "I miei gruppi", + "menuItem.catalog": "Catalogo", + "menuItem.apis": "API", + "menuItem.learningPaths": "Percorsi di apprendimento", + "menuItem.selfService": "Self-service", + "menuItem.userSettings": "Impostazioni utente", + "menuItem.administration": "Amministrazione", + "menuItem.extensions": "Estensioni", + "menuItem.clusters": "Cluster", + "menuItem.rbac": "RBAC", + "menuItem.bulkImport": "Importazione in blocco", + "menuItem.docs": "Documenti", + "menuItem.lighthouse": "Lighthouse", + "menuItem.techRadar": "Tech Radar", + "menuItem.orchestrator": "Orchestrator", + "menuItem.adoptionInsights": "Adoption Insights", + "sidebar.menu": "Menu", + "sidebar.home": "Home", + "sidebar.homeLogo": "Logo Home", + "signIn.page.title": "Selezionare un metodo di accesso", + "signIn.providers.auth0.title": "Auth0", + "signIn.providers.auth0.message": "Accesso tramite Auth0", + "signIn.providers.atlassian.title": "Atlassian", + "signIn.providers.atlassian.message": "Accesso tramite Atlassian", + "signIn.providers.microsoft.title": "Microsoft", + "signIn.providers.microsoft.message": "Accesso tramite Microsoft", + "signIn.providers.bitbucket.title": "Bitbucket", + "signIn.providers.bitbucket.message": "Accesso tramite Bitbucket", + "signIn.providers.bitbucketServer.title": "Bitbucket Server", + "signIn.providers.bitbucketServer.message": "Accesso tramite Bitbucket Server", + "signIn.providers.github.title": "GitHub", + "signIn.providers.github.message": "Accesso tramite GitHub", + "signIn.providers.gitlab.title": "GitLab", + "signIn.providers.gitlab.message": "Accesso tramite GitLab", + "signIn.providers.google.title": "Google", + "signIn.providers.google.message": "Accesso tramite Google", + "signIn.providers.oidc.title": "OIDC", + "signIn.providers.oidc.message": "Accesso tramite OIDC", + "signIn.providers.okta.title": "Okta", + "signIn.providers.okta.message": "Accesso tramite Okta", + "signIn.providers.onelogin.title": "OneLogin", + "signIn.providers.onelogin.message": "Accesso tramite OneLogin", + "signIn.providers.saml.title": "SAML", + "signIn.providers.saml.message": "Accesso tramite SAML", + "catalog.entityPage.overview.title": "Panoramica", + "catalog.entityPage.topology.title": "Topologia", + "catalog.entityPage.issues.title": "Problemi", + "catalog.entityPage.pullRequests.title": "Richieste di pull/merge", + "catalog.entityPage.ci.title": "CI", + "catalog.entityPage.cd.title": "CD", + "catalog.entityPage.kubernetes.title": "Kubernetes", + "catalog.entityPage.imageRegistry.title": "Registro delle immagini", + "catalog.entityPage.monitoring.title": "Monitoraggio", + "catalog.entityPage.lighthouse.title": "Lighthouse", + "catalog.entityPage.api.title": "API", + "catalog.entityPage.dependencies.title": "Dipendenze", + "catalog.entityPage.docs.title": "Documenti", + "catalog.entityPage.definition.title": "Definizione", + "catalog.entityPage.diagram.title": "Diagramma di sistema", + "catalog.entityPage.workflows.title": "Flussi di lavoro", + "app.scaffolder.title": "Self-service", + "app.search.title": "Ricerca", + "app.search.resultType": "Tipo di risultato", + "app.search.softwareCatalog": "Catalogo software", + "app.search.filters.kind": "Tipo", + "app.search.filters.lifecycle": "Ciclo di vita", + "app.search.filters.component": "Componente", + "app.search.filters.template": "Modello", + "app.search.filters.experimental": "sperimentale", + "app.search.filters.production": "produzione", + "app.learningPaths.title": "Percorsi di apprendimento", + "app.learningPaths.error.title": "Impossibile recuperare i dati.", + "app.learningPaths.error.unknownError": "Errore sconosciuto", + "app.userSettings.infoCard.title": "Metadati RHDH", + "app.userSettings.infoCard.metadataCopied": "Metadati copiati negli appunti", + "app.userSettings.infoCard.copyMetadata": "Copia i metadati negli appunti", + "app.userSettings.infoCard.showLess": "Mostra meno", + "app.userSettings.infoCard.showMore": "Mostra altro", + "app.errors.contactSupport": "Contattare l'assistenza", + "app.errors.goBack": "Indietro", + "app.errors.notFound.message": "Non è stato possibile trovare la pagina", + "app.errors.notFound.additionalInfo": "La pagina potrebbe essere stata rimossa, potrebbe aver cambiato nome o potrebbe non essere temporaneamente disponibile.", + "app.table.createdAt": "Creato alle" + } + }, + "scaffolder": { + "it": { + "templateListPage.contentHeader.registerExistingButtonTitle": "Importa un repository Git esistente" + } + }, + "search": { + "it": { + "sidebarSearchModal.title": "Ricerca" + } + }, + "user-settings": { + "it": { + "sidebarTitle": "Impostazioni" + } + } +} diff --git a/translations/rhdh-reference-2025-12-05-ja-C.json b/translations/rhdh-reference-2025-12-05-ja-C.json new file mode 100644 index 0000000000..36f1fdb5f7 --- /dev/null +++ b/translations/rhdh-reference-2025-12-05-ja-C.json @@ -0,0 +1,134 @@ +{ + "catalog": { + "ja": { + "indexPage.createButtonTitle": "セルフサービス" + } + }, + "catalog-import": { + "ja": { + "defaultImportPage.headerTitle": "既存の Git リポジトリーのインポート", + "importInfoCard.title": "既存の Git リポジトリーのインポート" + } + }, + "core-components": { + "ja": { + "table.filter.placeholder": "すべての結果", + "table.body.emptyDataSourceMessage": "表示するレコードがありません", + "table.pagination.firstTooltip": "最初のページ", + "table.pagination.labelDisplayedRows": "{count} 件中 {from}-{to} 件目", + "table.pagination.labelRowsSelect": "行", + "table.pagination.lastTooltip": "最後のページ", + "table.pagination.nextTooltip": "次のページ", + "table.pagination.previousTooltip": "前のページ", + "table.toolbar.search": "フィルター", + "alertDisplay.message_one": "({{ count }} 件の新しいメッセージ)", + "alertDisplay.message_other": "({{ count }} 件の新しいメッセージ)", + "table.header.actions": "アクション", + "oauthRequestDialog.message": "{{appTitle}} が {{provider}} API と ID にアクセスすることを許可するには、サインインしてください。" + } + }, + "rhdh": { + "ja": { + "menuItem.home": "ホーム", + "menuItem.myGroup_one": "マイグループ", + "menuItem.myGroup_other": "マイグループ", + "menuItem.catalog": "カタログ", + "menuItem.apis": "API", + "menuItem.learningPaths": "ラーニングパス", + "menuItem.selfService": "セルフサービス", + "menuItem.userSettings": "ユーザー設定", + "menuItem.administration": "管理", + "menuItem.extensions": "拡張機能", + "menuItem.clusters": "クラスター", + "menuItem.rbac": "RBAC", + "menuItem.bulkImport": "一括インポート", + "menuItem.docs": "ドキュメント", + "menuItem.lighthouse": "Lighthouse", + "menuItem.techRadar": "Tech Radar", + "menuItem.orchestrator": "オーケストレーター", + "menuItem.adoptionInsights": "Adoption Insights", + "sidebar.menu": "メニュー", + "sidebar.home": "ホーム", + "sidebar.homeLogo": "ホームロゴ", + "signIn.page.title": "サインイン方法の選択", + "signIn.providers.auth0.title": "Auth0", + "signIn.providers.auth0.message": "Auth0 を使用してサインイン", + "signIn.providers.atlassian.title": "Atlassian", + "signIn.providers.atlassian.message": "Atlassian を使用してサインイン", + "signIn.providers.microsoft.title": "Microsoft", + "signIn.providers.microsoft.message": "Microsoft を使用してサインイン", + "signIn.providers.bitbucket.title": "Bitbucket", + "signIn.providers.bitbucket.message": "Bitbucket を使用してサインイン", + "signIn.providers.bitbucketServer.title": "Bitbucket Server", + "signIn.providers.bitbucketServer.message": "Bitbucket Server を使用してサインイン", + "signIn.providers.github.title": "GitHub", + "signIn.providers.github.message": "GitHub を使用してサインイン", + "signIn.providers.gitlab.title": "GitLab", + "signIn.providers.gitlab.message": "GitLab を使用してサインイン", + "signIn.providers.google.title": "Google", + "signIn.providers.google.message": "Google を使用してサインイン", + "signIn.providers.oidc.title": "OIDC", + "signIn.providers.oidc.message": "OIDC を使用してサインイン", + "signIn.providers.okta.title": "Okta", + "signIn.providers.okta.message": "Okta を使用してサインイン", + "signIn.providers.onelogin.title": "OneLogin", + "signIn.providers.onelogin.message": "OneLogin を使用してサインイン", + "signIn.providers.saml.title": "SAML", + "signIn.providers.saml.message": "SAML を使用してサインイン", + "catalog.entityPage.overview.title": "概要", + "catalog.entityPage.topology.title": "トポロジー", + "catalog.entityPage.issues.title": "イシュー", + "catalog.entityPage.pullRequests.title": "プル/マージリクエスト", + "catalog.entityPage.ci.title": "CI", + "catalog.entityPage.cd.title": "CD", + "catalog.entityPage.kubernetes.title": "Kubernetes", + "catalog.entityPage.imageRegistry.title": "イメージレジストリー", + "catalog.entityPage.monitoring.title": "モニタリング", + "catalog.entityPage.lighthouse.title": "Lighthouse", + "catalog.entityPage.api.title": "API", + "catalog.entityPage.dependencies.title": "依存関係", + "catalog.entityPage.docs.title": "ドキュメント", + "catalog.entityPage.definition.title": "定義", + "catalog.entityPage.diagram.title": "システム図", + "catalog.entityPage.workflows.title": "ワークフロー", + "app.scaffolder.title": "セルフサービス", + "app.search.title": "検索", + "app.search.resultType": "結果タイプ", + "app.search.softwareCatalog": "ソフトウェアカタログ", + "app.search.filters.kind": "種類", + "app.search.filters.lifecycle": "ライフサイクル", + "app.search.filters.component": "コンポーネント", + "app.search.filters.template": "テンプレート", + "app.search.filters.experimental": "実験的", + "app.search.filters.production": "実稼働", + "app.learningPaths.title": "ラーニングパス", + "app.learningPaths.error.title": "データを取得できませんでした。", + "app.learningPaths.error.unknownError": "不明なエラー", + "app.userSettings.infoCard.title": "RHDH メタデータ", + "app.userSettings.infoCard.metadataCopied": "メタデータがクリップボードにコピーされました", + "app.userSettings.infoCard.copyMetadata": "メタデータをクリップボードにコピーする", + "app.userSettings.infoCard.showLess": "簡易表示", + "app.userSettings.infoCard.showMore": "詳細表示", + "app.errors.contactSupport": "サポートにお問い合わせください", + "app.errors.goBack": "戻る", + "app.errors.notFound.message": "該当するページが見つかりませんでした", + "app.errors.notFound.additionalInfo": "お探しのページは削除されたか、名前が変更されたか、一時的に利用できない可能性があります。", + "app.table.createdAt": "作成日時" + } + }, + "scaffolder": { + "ja": { + "templateListPage.contentHeader.registerExistingButtonTitle": "既存の Git リポジトリーのインポート" + } + }, + "search": { + "ja": { + "sidebarSearchModal.title": "検索" + } + }, + "user-settings": { + "ja": { + "sidebarTitle": "設定" + } + } +} diff --git a/translations/rhdh_v1.8_s3281-fr-C.json b/translations/rhdh_v1.8_s3281-fr-C.json deleted file mode 100644 index 51ac9d8b8e..0000000000 --- a/translations/rhdh_v1.8_s3281-fr-C.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "rhdh": { - "fr": { - "menuItem.home": "Home", - "menuItem.myGroup": "Mon groupe", - "menuItem.catalog": "Catalogue", - "menuItem.apis": "APIs", - "menuItem.learningPaths": "Learning Paths", - "menuItem.selfService": "Self-service", - "menuItem.userSettings": "Paramètres utilisateur", - "menuItem.administration": "Administration", - "menuItem.extensions": "Extensions", - "menuItem.clusters": "Groupes", - "menuItem.rbac": "RBAC", - "menuItem.bulkImport": "Importation en masse", - "menuItem.docs": "Docs", - "menuItem.lighthouse": "Lighthouse", - "menuItem.techRadar": "Tech Radar", - "menuItem.orchestrator": "Orchestrateur", - "menuItem.adoptionInsights": "Adoption Insights", - "sidebar.menu": "Menu", - "sidebar.home": "Home", - "sidebar.homeLogo": "Logo de la maison", - "signIn.page.title": "Sélectionnez une méthode de connexion", - "signIn.providers.auth0.title": "Auth0", - "signIn.providers.auth0.message": "Connectez-vous avec Auth0", - "signIn.providers.atlassian.title": "Atlassian", - "signIn.providers.atlassian.message": "Connectez-vous avec Atlassian", - "signIn.providers.microsoft.title": "Microsoft", - "signIn.providers.microsoft.message": "Connectez-vous avec Microsoft", - "signIn.providers.bitbucket.title": "Bitbucket", - "signIn.providers.bitbucket.message": "Connectez-vous avec Bitbucket", - "signIn.providers.bitbucketServer.title": "Serveur Bitbucket", - "signIn.providers.bitbucketServer.message": "Connectez-vous à l'aide de Bitbucket Server", - "signIn.providers.github.title": "GitHub", - "signIn.providers.github.message": "Connectez-vous avec GitHub", - "signIn.providers.gitlab.title": "GitLab", - "signIn.providers.gitlab.message": "Connectez-vous avec GitLab", - "signIn.providers.google.title": "Google", - "signIn.providers.google.message": "Connectez-vous avec Google", - "signIn.providers.oidc.title": "OIDC", - "signIn.providers.oidc.message": "Connectez-vous avec OIDC", - "signIn.providers.okta.title": "Okta", - "signIn.providers.okta.message": "Connectez-vous avec Okta", - "signIn.providers.onelogin.title": "OneLogin", - "signIn.providers.onelogin.message": "Connectez-vous avec OneLogin", - "signIn.providers.saml.title": "SAML", - "signIn.providers.saml.message": "Connectez-vous en utilisant SAML", - "app.scaffolder.title": "Self-service", - "app.search.title": "Recherche", - "app.search.resultType": "Type de résultat", - "app.search.softwareCatalog": "Catalogue de logiciels", - "app.search.filters.kind": "Kind", - "app.search.filters.lifecycle": "Cycle de vie", - "app.search.filters.component": "Composant", - "app.search.filters.template": "Modèle", - "app.search.filters.experimental": "expérimental", - "app.search.filters.production": "production", - "app.learningPaths.title": "Learning Paths", - "app.learningPaths.error.title": "Impossible de récupérer les données.", - "app.learningPaths.error.unknownError": "Erreur inconnue", - "app.entityPage.diagram.title": "Diagramme du système", - "app.userSettings.infoCard.title": "Métadonnées RHDH", - "app.userSettings.infoCard.metadataCopied": "Métadonnées copiées dans le presse-papiers", - "app.userSettings.infoCard.copyMetadata": "Copier les métadonnées dans votre presse-papiers", - "app.userSettings.infoCard.showLess": "Afficher moins", - "app.userSettings.infoCard.showMore": "Afficher plus", - "app.errors.contactSupport": "Contacter le support", - "app.errors.goBack": "Retour", - "app.errors.notFound.message": "Nous n'avons pas pu trouver cette page", - "app.errors.notFound.additionalInfo": "La page que vous recherchez a peut-être été supprimée, son nom a peut-être été modifié ou elle est temporairement indisponible.", - "app.table.createdAt": "Créé à" - } - } -} diff --git a/ui-i18n-downloads/1.8/rhdh-plugins/adoption-insights/rhdh-plugins__workspaces__adoption-insights__plugins__adoption-insights__src__translations__ref-en-fr-C.json b/ui-i18n-downloads/1.8/rhdh-plugins/adoption-insights/rhdh-plugins__workspaces__adoption-insights__plugins__adoption-insights__src__translations__ref-en-fr-C.json new file mode 100644 index 0000000000..f1efbbd081 --- /dev/null +++ b/ui-i18n-downloads/1.8/rhdh-plugins/adoption-insights/rhdh-plugins__workspaces__adoption-insights__plugins__adoption-insights__src__translations__ref-en-fr-C.json @@ -0,0 +1,64 @@ +{ + "page.title": "Adoption Insights", + "header.title": "Adoption Insights", + "header.dateRange.today": "Aujourd'hui", + "header.dateRange.lastWeek": "La semaine dernière", + "header.dateRange.lastMonth": "Mois dernier", + "header.dateRange.last28Days": "Les 28 derniers jours", + "header.dateRange.lastYear": "L'année dernière", + "header.dateRange.dateRange": "Plage de dates...", + "header.dateRange.cancel": "Annuler", + "header.dateRange.ok": "OK", + "header.dateRange.defaultLabel": "Les 28 derniers jours", + "activeUsers.title": "Utilisateurs actifs", + "activeUsers.averagePrefix": "Une moyenne de", + "activeUsers.averageText": "{{count}} utilisateurs actifs par {{period}}", + "activeUsers.averageSuffix": "étaient actifs durant cette période.", + "activeUsers.hour": "heure", + "activeUsers.day": "jour", + "activeUsers.legend.newUsers": "Nouveaux utilisateurs", + "activeUsers.legend.returningUsers": "Utilisateurs récurrents", + "templates.title": "Meilleurs modèles", + "templates.topNTitle": "Meilleurs {{count}} modèles", + "catalogEntities.title": "Principales entités du catalogue", + "plugins.title": "Meilleurs plugins", + "plugins.topNTitle": "Meilleurs {{count}} plugins", + "techDocs.title": "Top TechDocs", + "techDocs.topNTitle": "Meilleurs {{count}} TechDocs", + "searches.title": "Recherches les plus fréquentes", + "searches.totalCount": "{{count}} recherches", + "searches.averagePrefix": "Une moyenne de", + "searches.averageText": "{{count}} recherches par {{period}}", + "searches.averageSuffix": "ont été menées au cours de cette période.", + "searches.hour": "heure", + "searches.day": "jour", + "users.title": "Nombre total d'utilisateurs", + "users.haveLoggedIn": "se sont connectés", + "users.loggedInUsers": "Utilisateurs connectés", + "users.licensed": "Autorisé", + "users.licensedNotLoggedIn": "Sous licence (non connecté)", + "users.ofTotal": "de {{total}}", + "users.tooltip": "Définissez le nombre d'utilisateurs sous licence dans le fichier app-config.yaml", + "table.headers.name": "Nom", + "table.headers.kind": "Gentil", + "table.headers.lastUsed": "Dernière utilisation", + "table.headers.views": "Vues", + "table.headers.executions": "Exécutions", + "table.headers.trend": "S'orienter", + "table.headers.entity": "Entité", + "table.pagination.topN": "Meilleurs {{count}}", + "filter.all": "Tous", + "filter.selectKind": "Sélectionnez le type", + "common.noResults": "Aucun résultat pour cette plage de dates.", + "common.readMore": "En savoir plus", + "common.exportCSV": "Exporter au format CSV", + "common.downloading": "Téléchargement...", + "common.today": "Aujourd'hui", + "common.yesterday": "Hier", + "common.numberOfSearches": "Nombre de recherches", + "common.filteredBy": "filtré par", + "common.invalidDateFormat": "Format de date invalide", + "common.csvFilename": "utilisateurs_actifs", + "permission.title": "Autorisations manquantes", + "permission.description": "Pour afficher le plugin « Adoption Insights », contactez votre administrateur pour accorder les autorisations adoption-insights.events.read." +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index c8a2b3c439..5010ea0679 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1444,6 +1444,17 @@ __metadata: languageName: node linkType: hard +"@axe-core/playwright@npm:4.11.0": + version: 4.11.0 + resolution: "@axe-core/playwright@npm:4.11.0" + dependencies: + axe-core: ~4.11.0 + peerDependencies: + playwright-core: ">= 1.0.0" + checksum: 036d13cb73f9c3bdcff039caa8a3f4ae9c2fffeb41855053dd78f72d98d1635b0d7eec38ff5087beaa5e15c99e060a771d1b449f08df58694f02781d54aa155c + languageName: node + linkType: hard + "@azure/abort-controller@npm:^1.0.0": version: 1.1.0 resolution: "@azure/abort-controller@npm:1.1.0" @@ -1462,6 +1473,41 @@ __metadata: languageName: node linkType: hard +"@azure/abort-controller@npm:^2.1.2": + version: 2.1.2 + resolution: "@azure/abort-controller@npm:2.1.2" + dependencies: + tslib: ^2.6.2 + checksum: 22176c04ea01498311c6bbd336669f6e3faffad1cbb0c9ebc6ee9c1ff2cf958fd17ce73c7354b99d8bda9fcd311325ece7bee248875279174e3fc460e8b1a63d + languageName: node + linkType: hard + +"@azure/arm-network@npm:34.2.0": + version: 34.2.0 + resolution: "@azure/arm-network@npm:34.2.0" + dependencies: + "@azure/abort-controller": ^2.1.2 + "@azure/core-auth": ^1.9.0 + "@azure/core-client": ^1.9.3 + "@azure/core-lro": ^2.5.4 + "@azure/core-paging": ^1.6.2 + "@azure/core-rest-pipeline": ^1.19.1 + tslib: ^2.8.1 + checksum: d26082a052f3b0f97b488efc75e70f5d44fd0f0c48b2753a5baef6f1f388c674f472710154c9100bd1b3ea0507ec9691100fd991f0111c7ba3535c392d9d0254 + languageName: node + linkType: hard + +"@azure/core-auth@npm:^1.10.0": + version: 1.10.1 + resolution: "@azure/core-auth@npm:1.10.1" + dependencies: + "@azure/abort-controller": ^2.1.2 + "@azure/core-util": ^1.13.0 + tslib: ^2.6.2 + checksum: 230c1766d4cb3ac7beac45db65bd5e493e1530f6f1d51dc0fd3537f8144e5c9acfed94700fd28c7aee67bab7502e23a1588adc6aa76f918f08fe40b3b007e2a3 + languageName: node + linkType: hard + "@azure/core-auth@npm:^1.3.0, @azure/core-auth@npm:^1.4.0, @azure/core-auth@npm:^1.8.0, @azure/core-auth@npm:^1.9.0": version: 1.9.0 resolution: "@azure/core-auth@npm:1.9.0" @@ -1488,6 +1534,21 @@ __metadata: languageName: node linkType: hard +"@azure/core-client@npm:^1.9.3": + version: 1.10.1 + resolution: "@azure/core-client@npm:1.10.1" + dependencies: + "@azure/abort-controller": ^2.1.2 + "@azure/core-auth": ^1.10.0 + "@azure/core-rest-pipeline": ^1.22.0 + "@azure/core-tracing": ^1.3.0 + "@azure/core-util": ^1.13.0 + "@azure/logger": ^1.3.0 + tslib: ^2.6.2 + checksum: b1312966ec52dd4c48798bbdffbbd2faf18bc3eea65967a011cc2e4c0988e1135ecb937f91f13927585101941ee3f065f47db609155f2d337edbbad54a8d33b0 + languageName: node + linkType: hard + "@azure/core-http@npm:^3.0.0": version: 3.0.4 resolution: "@azure/core-http@npm:3.0.4" @@ -1510,7 +1571,7 @@ __metadata: languageName: node linkType: hard -"@azure/core-lro@npm:^2.2.0": +"@azure/core-lro@npm:^2.2.0, @azure/core-lro@npm:^2.5.4": version: 2.7.2 resolution: "@azure/core-lro@npm:2.7.2" dependencies: @@ -1531,6 +1592,15 @@ __metadata: languageName: node linkType: hard +"@azure/core-paging@npm:^1.6.2": + version: 1.6.2 + resolution: "@azure/core-paging@npm:1.6.2" + dependencies: + tslib: ^2.6.2 + checksum: 4b57f953998473ee784c3ea774a8b54f4be0ec239bd43cbabe28113ca18f141455289713302d4fcd802898dd7ab58380ff575b7ce9400ec1ec20c505791c0b25 + languageName: node + linkType: hard + "@azure/core-rest-pipeline@npm:^1.17.0, @azure/core-rest-pipeline@npm:^1.9.1": version: 1.19.0 resolution: "@azure/core-rest-pipeline@npm:1.19.0" @@ -1547,6 +1617,21 @@ __metadata: languageName: node linkType: hard +"@azure/core-rest-pipeline@npm:^1.19.1, @azure/core-rest-pipeline@npm:^1.22.0": + version: 1.22.2 + resolution: "@azure/core-rest-pipeline@npm:1.22.2" + dependencies: + "@azure/abort-controller": ^2.1.2 + "@azure/core-auth": ^1.10.0 + "@azure/core-tracing": ^1.3.0 + "@azure/core-util": ^1.13.0 + "@azure/logger": ^1.3.0 + "@typespec/ts-http-runtime": ^0.3.0 + tslib: ^2.6.2 + checksum: 965738fe8d3ea20d49fefa1a432bb8e5504537e000fc95d741094e94bcd0e3bd0cbabfb08b0befadc751ceb1826a3804aaa2e8e7cd2e59927e5b272c0eb0930b + languageName: node + linkType: hard + "@azure/core-tracing@npm:1.0.0-preview.13": version: 1.0.0-preview.13 resolution: "@azure/core-tracing@npm:1.0.0-preview.13" @@ -1566,6 +1651,15 @@ __metadata: languageName: node linkType: hard +"@azure/core-tracing@npm:^1.3.0": + version: 1.3.1 + resolution: "@azure/core-tracing@npm:1.3.1" + dependencies: + tslib: ^2.6.2 + checksum: 549d19af4b9459847947384a38d12566b85f5ffb44ef4e2391d3372865b8e3cc73d7d1738b4652ebca32e498a2e32f4993f0cd2db1a1f938b581f18e686348bb + languageName: node + linkType: hard + "@azure/core-util@npm:^1.1.1, @azure/core-util@npm:^1.11.0, @azure/core-util@npm:^1.2.0, @azure/core-util@npm:^1.6.1": version: 1.11.0 resolution: "@azure/core-util@npm:1.11.0" @@ -1576,6 +1670,36 @@ __metadata: languageName: node linkType: hard +"@azure/core-util@npm:^1.13.0": + version: 1.13.1 + resolution: "@azure/core-util@npm:1.13.1" + dependencies: + "@azure/abort-controller": ^2.1.2 + "@typespec/ts-http-runtime": ^0.3.0 + tslib: ^2.6.2 + checksum: c005e59109757bf0fe4ec099f8454c128fde5947e94dc19a7e709de32908f8c75571ac1e565227ef22a80ad0a0d44b69d0b21ed7b86c922b6dc21d6a21599b12 + languageName: node + linkType: hard + +"@azure/identity@npm:4.13.0": + version: 4.13.0 + resolution: "@azure/identity@npm:4.13.0" + dependencies: + "@azure/abort-controller": ^2.0.0 + "@azure/core-auth": ^1.9.0 + "@azure/core-client": ^1.9.2 + "@azure/core-rest-pipeline": ^1.17.0 + "@azure/core-tracing": ^1.0.0 + "@azure/core-util": ^1.11.0 + "@azure/logger": ^1.0.0 + "@azure/msal-browser": ^4.2.0 + "@azure/msal-node": ^3.5.0 + open: ^10.1.0 + tslib: ^2.2.0 + checksum: c07e609919bcbb84f6212076420ea4c1907cb09e9b8cbba5e69b99d2aae3cc8d883ceafd3edd3088c60fa887e810de5b23acd658df44501579b635a792ce673b + languageName: node + linkType: hard + "@azure/identity@npm:^4.0.0": version: 4.9.0 resolution: "@azure/identity@npm:4.9.0" @@ -1604,6 +1728,16 @@ __metadata: languageName: node linkType: hard +"@azure/logger@npm:^1.3.0": + version: 1.3.0 + resolution: "@azure/logger@npm:1.3.0" + dependencies: + "@typespec/ts-http-runtime": ^0.3.0 + tslib: ^2.6.2 + checksum: 2089429ef3eadc6d4d10c5e12f1cf6580587ac0eed5c7107fc621c56927fc162e150e57668e98092d4ba0dc10c6425ee61971dea67e80022fb3906e9c4efc3a6 + languageName: node + linkType: hard + "@azure/msal-browser@npm:^4.2.0": version: 4.3.0 resolution: "@azure/msal-browser@npm:4.3.0" @@ -7065,6 +7199,17 @@ __metadata: languageName: node linkType: hard +"@eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" + dependencies: + eslint-visitor-keys: ^3.4.3 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: ae9b98eea006d1354368804b0116b8b45017a4e47b486d1b9cfa048a8ed3dc69b9b074eb2b2acb14034e6897c24048fd42b6a6816d9dc8bb9daad79db7d478d2 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" @@ -7072,6 +7217,42 @@ __metadata: languageName: node linkType: hard +"@eslint-community/regexpp@npm:^4.12.1": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120 + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.21.1": + version: 0.21.1 + resolution: "@eslint/config-array@npm:0.21.1" + dependencies: + "@eslint/object-schema": ^2.1.7 + debug: ^4.3.1 + minimatch: ^3.1.2 + checksum: fc5b57803b059f7c1f62950ef83baf045a01887fc00551f9e87ac119246fcc6d71c854a7f678accc79cbf829ed010e8135c755a154b0f54b129c538950cd7e6a + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/config-helpers@npm:0.4.2" + dependencies: + "@eslint/core": ^0.17.0 + checksum: 63ff6a0730c9fff2edb80c89b39b15b28d6a635a1c3f32cf0d7eb3e2625f2efbc373c5531ae84e420ae36d6e37016dd40c365b6e5dee6938478e9907aaadae0b + languageName: node + linkType: hard + +"@eslint/core@npm:^0.17.0": + version: 0.17.0 + resolution: "@eslint/core@npm:0.17.0" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: ff9b5b4987f0bae4f2a4cfcdc7ae584ad3b0cb58526ca562fb281d6837700a04c7f3c86862e95126462318f33f60bf38e1cb07ed0e2449532d4b91cd5f4ab1f2 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.4": version: 2.1.4 resolution: "@eslint/eslintrc@npm:2.1.4" @@ -7089,6 +7270,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.3 + resolution: "@eslint/eslintrc@npm:3.3.3" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^10.0.1 + globals: ^14.0.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.1 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: d1e16e47f1bb29af32defa597eaf84ac0ff8c06760c0a5f4933c604cd9d931d48c89bed96252222f22abac231898a53bc41385a5e6129257f0060b5ec431bdb2 + languageName: node + linkType: hard + "@eslint/js@npm:8.57.1": version: 8.57.1 resolution: "@eslint/js@npm:8.57.1" @@ -7096,6 +7294,30 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.39.1": + version: 9.39.1 + resolution: "@eslint/js@npm:9.39.1" + checksum: b651930aec03a5aef97bc144627aebb05070afec5364cd3c5fd7c5dbb97f4fd82faf1b200b3be17572d5ebb7f8805211b655f463be96f2b02202ec7250868048 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.7": + version: 2.1.7 + resolution: "@eslint/object-schema@npm:2.1.7" + checksum: fc5708f192476956544def13455d60fd1bafbf8f062d1e05ec5c06dd470b02078eaf721e696a8b31c1c45d2056723a514b941ae5eea1398cc7e38eba6711a775 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/plugin-kit@npm:0.4.1" + dependencies: + "@eslint/core": ^0.17.0 + levn: ^0.4.1 + checksum: 3f4492e02a3620e05d46126c5cfeff5f651ecf33466c8f88efb4812ae69db5f005e8c13373afabc070ecca7becd319b656d6670ad5093f05ca63c2a8841d99ba + languageName: node + linkType: hard + "@fastify/busboy@npm:^2.0.0": version: 2.1.1 resolution: "@fastify/busboy@npm:2.1.1" @@ -7758,6 +7980,23 @@ __metadata: languageName: node linkType: hard +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 611e0545146f55ddfdd5c20239cfb7911f9d0e28258787c4fc1a1f6214250830c9367aaaeace0096ed90b6739bee1e9c52ad5ba8adaf74ab8b449119303babfe + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.7 + resolution: "@humanfs/node@npm:0.16.7" + dependencies: + "@humanfs/core": ^0.19.1 + "@humanwhocodes/retry": ^0.4.0 + checksum: 7d2a396a94d80158ce320c0fd7df9aebb82edb8b667e5aaf8f87f4ca50518d0941ca494e0cd68e06b061e777ce5f7d26c45f93ac3fa9f7b11fd1ff26e3cd1440 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.13.0": version: 0.13.0 resolution: "@humanwhocodes/config-array@npm:0.13.0" @@ -7783,6 +8022,13 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: d423455b9d53cf01f778603404512a4246fb19b83e74fe3e28c70d9a80e9d4ae147d2411628907ca983e91a855a52535859a8bb218050bc3f6dbd7a553b7b442 + languageName: node + linkType: hard + "@ianvs/prettier-plugin-sort-imports@npm:4.7.0": version: 4.7.0 resolution: "@ianvs/prettier-plugin-sort-imports@npm:4.7.0" @@ -7926,6 +8172,13 @@ __metadata: languageName: node linkType: hard +"@ioredis/commands@npm:1.4.0": + version: 1.4.0 + resolution: "@ioredis/commands@npm:1.4.0" + checksum: c2fca9809f4a5508e9c23cd837fb575c0a6b04351643da08f6b66b3b72a6a89ad183dd2da216add28ea5d5b9141925a3c3e4fff74103225a59f70264da50e5f2 + languageName: node + linkType: hard + "@iovalkey/commands@npm:^0.1.0": version: 0.1.0 resolution: "@iovalkey/commands@npm:0.1.0" @@ -7963,6 +8216,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: ^7.0.4 + checksum: 5d36d289960e886484362d9eb6a51d1ea28baed5f5d0140bbe62b99bac52eaf06cc01c2bc0d3575977962f84f6b2c4387b043ee632216643d4787b0999465bf2 + languageName: node + linkType: hard + "@isomorphic-git/pgp-plugin@npm:^0.0.7": version: 0.0.7 resolution: "@isomorphic-git/pgp-plugin@npm:0.0.7" @@ -8523,6 +8785,17 @@ __metadata: languageName: node linkType: hard +"@keycloak/keycloak-admin-client@npm:25.0.6": + version: 25.0.6 + resolution: "@keycloak/keycloak-admin-client@npm:25.0.6" + dependencies: + camelize-ts: ^3.0.0 + url-join: ^5.0.0 + url-template: ^3.1.1 + checksum: bd7d29674ba29463f8fbc33594491221ad9b5afb7b76f4c6d41209090c727bf2d4f17cb9abcaafecb7117a74e194b197af341e11f31ea695e103de0a362b9b32 + languageName: node + linkType: hard + "@keyv/memcache@npm:^2.0.1": version: 2.0.1 resolution: "@keyv/memcache@npm:2.0.1" @@ -8563,6 +8836,28 @@ __metadata: languageName: node linkType: hard +"@kubernetes/client-node@npm:0.22.3": + version: 0.22.3 + resolution: "@kubernetes/client-node@npm:0.22.3" + dependencies: + byline: ^5.0.0 + isomorphic-ws: ^5.0.0 + js-yaml: ^4.1.0 + jsonpath-plus: ^10.2.0 + openid-client: ^6.1.3 + request: ^2.88.0 + rfc4648: ^1.3.0 + stream-buffers: ^3.0.2 + tar: ^7.0.0 + tslib: ^2.4.1 + ws: ^8.18.0 + dependenciesMeta: + openid-client: + optional: true + checksum: bd51c8b7f999d31772bb949492c5e817be972db5c872047f61bc25084d8cbc5fb69a335182a1e3afcd247dc5d4249a073fc4960eeaea8ccd8a85dff107c2de16 + languageName: node + linkType: hard + "@leichtgewicht/ip-codec@npm:^2.0.1": version: 2.0.4 resolution: "@leichtgewicht/ip-codec@npm:2.0.4" @@ -8877,6 +9172,32 @@ __metadata: languageName: node linkType: hard +"@microsoft/microsoft-graph-client@npm:3.0.7": + version: 3.0.7 + resolution: "@microsoft/microsoft-graph-client@npm:3.0.7" + dependencies: + "@babel/runtime": ^7.12.5 + tslib: ^2.2.0 + peerDependenciesMeta: + "@azure/identity": + optional: true + "@azure/msal-browser": + optional: true + buffer: + optional: true + stream-browserify: + optional: true + checksum: 3daee3fc4faa56e22cc0c0a9bcd3887ff0cbd53ec09c792438f0f40b8cafb8654e5d8dcc24d0fd60fda9348ca185fa6c8b50762b72f5c9212e54003d32626ece + languageName: node + linkType: hard + +"@microsoft/microsoft-graph-types@npm:2.43.1": + version: 2.43.1 + resolution: "@microsoft/microsoft-graph-types@npm:2.43.1" + checksum: 07e4b03ff48f0dcce763227a3a764aac8f3620e45a52c72e57e7583c6ebe47a2374cdb51b9d215fe72b5f5341e9f3ddd93c5712bb5c0202457f516ba7a32365e + languageName: node + linkType: hard + "@modelcontextprotocol/sdk@npm:1.22.0, @modelcontextprotocol/sdk@npm:^1.17.2": version: 1.22.0 resolution: "@modelcontextprotocol/sdk@npm:1.22.0" @@ -9495,6 +9816,21 @@ __metadata: languageName: node linkType: hard +"@octokit/app@npm:^15.1.6": + version: 15.1.6 + resolution: "@octokit/app@npm:15.1.6" + dependencies: + "@octokit/auth-app": ^7.2.1 + "@octokit/auth-unauthenticated": ^6.1.3 + "@octokit/core": ^6.1.5 + "@octokit/oauth-app": ^7.1.6 + "@octokit/plugin-paginate-rest": ^12.0.0 + "@octokit/types": ^14.0.0 + "@octokit/webhooks": ^13.6.1 + checksum: 6d0c0e6a65a3080866fc474eb9ef5d5fc799024acf5c32d337eae6226ffc2a64575555862aa1cd7e3451e4f07a4c4dd323ccc81b7e1c1986ecdd18c713fffd6d + languageName: node + linkType: hard + "@octokit/auth-app@npm:^4.0.0": version: 4.0.13 resolution: "@octokit/auth-app@npm:4.0.13" @@ -9529,6 +9865,22 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-app@npm:^7.2.1": + version: 7.2.2 + resolution: "@octokit/auth-app@npm:7.2.2" + dependencies: + "@octokit/auth-oauth-app": ^8.1.4 + "@octokit/auth-oauth-user": ^5.1.4 + "@octokit/request": ^9.2.3 + "@octokit/request-error": ^6.1.8 + "@octokit/types": ^14.0.0 + toad-cache: ^3.7.0 + universal-github-app-jwt: ^2.2.0 + universal-user-agent: ^7.0.0 + checksum: f76228f474689e2a2de8782b4d2baf5bda7254b25c8e00528764dc9810b6b41850106ac69d6f9c1e2ebe4a67dbb9cc5b7fe1a366c24737ca5d64a17618f74a30 + languageName: node + linkType: hard + "@octokit/auth-oauth-app@npm:^5.0.0": version: 5.0.6 resolution: "@octokit/auth-oauth-app@npm:5.0.6" @@ -9559,6 +9911,19 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-oauth-app@npm:^8.1.3, @octokit/auth-oauth-app@npm:^8.1.4": + version: 8.1.4 + resolution: "@octokit/auth-oauth-app@npm:8.1.4" + dependencies: + "@octokit/auth-oauth-device": ^7.1.5 + "@octokit/auth-oauth-user": ^5.1.4 + "@octokit/request": ^9.2.3 + "@octokit/types": ^14.0.0 + universal-user-agent: ^7.0.0 + checksum: 7547f77d0753c9866ed429987fc376fc9ec451663a2356ee3906b6254ada636efa06cac5207b83658ad21c2cfb8a0967d94d1186ef88fea8a615f36d0c26ef23 + languageName: node + linkType: hard + "@octokit/auth-oauth-device@npm:^4.0.0": version: 4.0.5 resolution: "@octokit/auth-oauth-device@npm:4.0.5" @@ -9583,6 +9948,18 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-oauth-device@npm:^7.1.5": + version: 7.1.5 + resolution: "@octokit/auth-oauth-device@npm:7.1.5" + dependencies: + "@octokit/oauth-methods": ^5.1.5 + "@octokit/request": ^9.2.3 + "@octokit/types": ^14.0.0 + universal-user-agent: ^7.0.0 + checksum: 48172f9d9ecb7ccf56d0d56706a01cc29c56a2c4b6bb242a4564bf787c6e8481cd7e0acaab52760f44ad8461b954f1812ae77174865ce31b18415da65d3ea718 + languageName: node + linkType: hard + "@octokit/auth-oauth-user@npm:^2.0.0": version: 2.1.2 resolution: "@octokit/auth-oauth-user@npm:2.1.2" @@ -9611,6 +9988,19 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-oauth-user@npm:^5.1.3, @octokit/auth-oauth-user@npm:^5.1.4": + version: 5.1.6 + resolution: "@octokit/auth-oauth-user@npm:5.1.6" + dependencies: + "@octokit/auth-oauth-device": ^7.1.5 + "@octokit/oauth-methods": ^5.1.5 + "@octokit/request": ^9.2.3 + "@octokit/types": ^14.0.0 + universal-user-agent: ^7.0.0 + checksum: 35aeeb19d7a43d8a689d6908dba93cc697736c4bd36757d89dc9b3c95c14605a0eb07c238df1deee380895fcad604ada38873a0a0d1566700c23ff0edcd14382 + languageName: node + linkType: hard + "@octokit/auth-token@npm:^3.0.0": version: 3.0.4 resolution: "@octokit/auth-token@npm:3.0.4" @@ -9625,6 +10015,13 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-token@npm:^5.0.0": + version: 5.1.2 + resolution: "@octokit/auth-token@npm:5.1.2" + checksum: 1f02305bd75cabc7aadce7e0a707f84775fe067b81e4b325744acad2a125a88fbbc1df1e707caa782425e8afd8728d9ed3d6085fc15a38937777404de1f6c22c + languageName: node + linkType: hard + "@octokit/auth-unauthenticated@npm:^3.0.0": version: 3.0.5 resolution: "@octokit/auth-unauthenticated@npm:3.0.5" @@ -9645,6 +10042,16 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-unauthenticated@npm:^6.1.2, @octokit/auth-unauthenticated@npm:^6.1.3": + version: 6.1.3 + resolution: "@octokit/auth-unauthenticated@npm:6.1.3" + dependencies: + "@octokit/request-error": ^6.1.8 + "@octokit/types": ^14.0.0 + checksum: a3ff272a08de0d8993390d0f8290fc921fcbd57e1094e1a828d8c855e56ec75f6ba015402a3b8fa8614b4edd32a372c6eeae9eab370da89527e7f533df53a62c + languageName: node + linkType: hard + "@octokit/core@npm:^4.0.0, @octokit/core@npm:^4.2.1": version: 4.2.4 resolution: "@octokit/core@npm:4.2.4" @@ -9675,6 +10082,31 @@ __metadata: languageName: node linkType: hard +"@octokit/core@npm:^6.1.4, @octokit/core@npm:^6.1.5": + version: 6.1.6 + resolution: "@octokit/core@npm:6.1.6" + dependencies: + "@octokit/auth-token": ^5.0.0 + "@octokit/graphql": ^8.2.2 + "@octokit/request": ^9.2.3 + "@octokit/request-error": ^6.1.8 + "@octokit/types": ^14.0.0 + before-after-hook: ^3.0.2 + universal-user-agent: ^7.0.0 + checksum: ea5407dbe8de1489a14bd636280c82814a82ad6e8f6bc73f325f33daaf363e23a5e475056a24d18616118fa3388d2e802e6ab4e4071f4f6650b914e31b6b6790 + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^10.1.4": + version: 10.1.4 + resolution: "@octokit/endpoint@npm:10.1.4" + dependencies: + "@octokit/types": ^14.0.0 + universal-user-agent: ^7.0.2 + checksum: 83270f39fab12bb830549c0613783c3dd40d00e33ce19bb5c510c99be230102323f99549fc6baee779486c63927679cf3f4167ee0506924703c6645945ac6dea + languageName: node + linkType: hard + "@octokit/endpoint@npm:^7.0.0": version: 7.0.6 resolution: "@octokit/endpoint@npm:7.0.6" @@ -9728,6 +10160,17 @@ __metadata: languageName: node linkType: hard +"@octokit/graphql@npm:^8.2.2": + version: 8.2.2 + resolution: "@octokit/graphql@npm:8.2.2" + dependencies: + "@octokit/request": ^9.2.3 + "@octokit/types": ^14.0.0 + universal-user-agent: ^7.0.0 + checksum: b4d7e50b517a4119a16c54e2c55675fcee2eeee59aa5f70490d95548c4d3d37673caedc014f42be7b48cb8272d8a563508fe5a7058bbd5d11a4be294ccf948ab + languageName: node + linkType: hard + "@octokit/oauth-app@npm:^4.2.0": version: 4.2.4 resolution: "@octokit/oauth-app@npm:4.2.4" @@ -9761,6 +10204,22 @@ __metadata: languageName: node linkType: hard +"@octokit/oauth-app@npm:^7.1.6": + version: 7.1.6 + resolution: "@octokit/oauth-app@npm:7.1.6" + dependencies: + "@octokit/auth-oauth-app": ^8.1.3 + "@octokit/auth-oauth-user": ^5.1.3 + "@octokit/auth-unauthenticated": ^6.1.2 + "@octokit/core": ^6.1.4 + "@octokit/oauth-authorization-url": ^7.1.1 + "@octokit/oauth-methods": ^5.1.4 + "@types/aws-lambda": ^8.10.83 + universal-user-agent: ^7.0.0 + checksum: 0e1074387ee22b17b933983c8fc9c4401a5caced86c32e7b218e1bd43e51d170e5a037c10ea7dbed9e49029be833bbba9544c602c44f1cfad10761554e09fe00 + languageName: node + linkType: hard + "@octokit/oauth-authorization-url@npm:^5.0.0": version: 5.0.0 resolution: "@octokit/oauth-authorization-url@npm:5.0.0" @@ -9775,6 +10234,13 @@ __metadata: languageName: node linkType: hard +"@octokit/oauth-authorization-url@npm:^7.0.0, @octokit/oauth-authorization-url@npm:^7.1.1": + version: 7.1.1 + resolution: "@octokit/oauth-authorization-url@npm:7.1.1" + checksum: 02ad29fa4540c6b4b3a1e9f6936d40057174be91e9c7cad1afcd09d027fa2a50598dad5857699d1be25568bf70d86123dc9cd3874afe044ce6791e6805e97542 + languageName: node + linkType: hard + "@octokit/oauth-methods@npm:^2.0.0": version: 2.0.6 resolution: "@octokit/oauth-methods@npm:2.0.6" @@ -9801,6 +10267,18 @@ __metadata: languageName: node linkType: hard +"@octokit/oauth-methods@npm:^5.1.4, @octokit/oauth-methods@npm:^5.1.5": + version: 5.1.5 + resolution: "@octokit/oauth-methods@npm:5.1.5" + dependencies: + "@octokit/oauth-authorization-url": ^7.0.0 + "@octokit/request": ^9.2.3 + "@octokit/request-error": ^6.1.8 + "@octokit/types": ^14.0.0 + checksum: 529fc086beb5463599cc533e63ce3a0eeec8cdbaea128c8d4e236bade6a41c31753144d4854cbbebbadb67702423c97f5fdd78947f3fdafd136584dfcb629036 + languageName: node + linkType: hard + "@octokit/openapi-types@npm:^14.0.0": version: 14.0.0 resolution: "@octokit/openapi-types@npm:14.0.0" @@ -9829,6 +10307,20 @@ __metadata: languageName: node linkType: hard +"@octokit/openapi-types@npm:^25.1.0": + version: 25.1.0 + resolution: "@octokit/openapi-types@npm:25.1.0" + checksum: 441b17f801254629b3ddb4b878c589fee1fd23015253c8b72a3acb3eeedbe981691bb311649ab5f955005c5d7adb940f19e18eaf0c875752fe0cc12b3dc1d24b + languageName: node + linkType: hard + +"@octokit/openapi-webhooks-types@npm:11.0.0": + version: 11.0.0 + resolution: "@octokit/openapi-webhooks-types@npm:11.0.0" + checksum: ab6e461c0d7a4307d931325bcb63ba86a780233757df44fd85ffa5b4683d6c675b7f7d6715210da715e5ff29823f6a31415576078c88e58a273da1b7177aa069 + languageName: node + linkType: hard + "@octokit/plugin-paginate-graphql@npm:^4.0.0": version: 4.0.0 resolution: "@octokit/plugin-paginate-graphql@npm:4.0.0" @@ -9838,6 +10330,26 @@ __metadata: languageName: node linkType: hard +"@octokit/plugin-paginate-graphql@npm:^5.2.4": + version: 5.2.4 + resolution: "@octokit/plugin-paginate-graphql@npm:5.2.4" + peerDependencies: + "@octokit/core": ">=6" + checksum: f119999c8872f8c24eff653c3af53dea9d06b6863491ea52b888c1a9489019fcaa47423321b857073c609baaaf43fecf97ef335d780042334217abfe24b68bed + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^12.0.0": + version: 12.0.0 + resolution: "@octokit/plugin-paginate-rest@npm:12.0.0" + dependencies: + "@octokit/types": ^14.0.0 + peerDependencies: + "@octokit/core": ">=6" + checksum: a7eb9b1ca6485765043d9009902c02611073d5ac39147fc1f7b4e927d298fb34b0a17c329fab741402db1e0ea9ee223c8b055611a680e065bebf7c87505b113f + languageName: node + linkType: hard + "@octokit/plugin-paginate-rest@npm:^6.1.2": version: 6.1.2 resolution: "@octokit/plugin-paginate-rest@npm:6.1.2" @@ -9881,6 +10393,17 @@ __metadata: languageName: node linkType: hard +"@octokit/plugin-rest-endpoint-methods@npm:^14.0.0": + version: 14.0.0 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:14.0.0" + dependencies: + "@octokit/types": ^14.0.0 + peerDependencies: + "@octokit/core": ">=6" + checksum: beb8d666cb3d5394d9bef7afd43e402899e9f78ed0b2e51f701cbe599ba6004f11605c923877122ee943f0b2884e65b3116ac4b5edb5b930b372d9b1c9900dc6 + languageName: node + linkType: hard + "@octokit/plugin-rest-endpoint-methods@npm:^7.1.2": version: 7.2.3 resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.2.3" @@ -9905,6 +10428,31 @@ __metadata: languageName: node linkType: hard +"@octokit/plugin-retry@npm:^7.2.1": + version: 7.2.1 + resolution: "@octokit/plugin-retry@npm:7.2.1" + dependencies: + "@octokit/request-error": ^6.1.8 + "@octokit/types": ^14.0.0 + bottleneck: ^2.15.3 + peerDependencies: + "@octokit/core": ">=6" + checksum: 7effaf292d6b73f91d1ecdee92efd18def29f0af89e73a57ac330fb56edc7dfd71d22381e8014acd3be5bdaeacc0716c9257b3b95250fc8d2ce24eca5f9ba31b + languageName: node + linkType: hard + +"@octokit/plugin-throttling@npm:^10.0.0": + version: 10.0.0 + resolution: "@octokit/plugin-throttling@npm:10.0.0" + dependencies: + "@octokit/types": ^14.0.0 + bottleneck: ^2.15.3 + peerDependencies: + "@octokit/core": ^6.1.3 + checksum: abc587a393b850fc1329180c00f901679b07ecd10b35c6c0371630642d76f533483c896f7fe62d662443d460db64a1512902106f07505e973414911cf6b6603c + languageName: node + linkType: hard + "@octokit/plugin-throttling@npm:^8.0.0": version: 8.2.0 resolution: "@octokit/plugin-throttling@npm:8.2.0" @@ -9939,6 +10487,15 @@ __metadata: languageName: node linkType: hard +"@octokit/request-error@npm:^6.1.7, @octokit/request-error@npm:^6.1.8": + version: 6.1.8 + resolution: "@octokit/request-error@npm:6.1.8" + dependencies: + "@octokit/types": ^14.0.0 + checksum: 9354d9f6d95147fce0ab90d4a60d1a9b78a382876634d9504e49b3a077eb2857f92bef3aede2d9a6235e65ce9bbe93d72e4e99012e0a307bad6d23d637dfa802 + languageName: node + linkType: hard + "@octokit/request@npm:^6.0.0, @octokit/request@npm:^6.2.3": version: 6.2.8 resolution: "@octokit/request@npm:6.2.8" @@ -9965,6 +10522,19 @@ __metadata: languageName: node linkType: hard +"@octokit/request@npm:^9.2.3": + version: 9.2.4 + resolution: "@octokit/request@npm:9.2.4" + dependencies: + "@octokit/endpoint": ^10.1.4 + "@octokit/request-error": ^6.1.8 + "@octokit/types": ^14.0.0 + fast-content-type-parse: ^2.0.0 + universal-user-agent: ^7.0.2 + checksum: edd5d975543edaaf3db8abbb9bb61f19169155be5a87d6ee7001d295a5e3f1dadaf7b62e11ec2b79fe4ff5ed65b6d470eac5b87688d62c432e39999f5a9b7592 + languageName: node + linkType: hard + "@octokit/rest@npm:19.0.13, @octokit/rest@npm:^19.0.3": version: 19.0.13 resolution: "@octokit/rest@npm:19.0.13" @@ -10011,6 +10581,15 @@ __metadata: languageName: node linkType: hard +"@octokit/types@npm:^14.0.0": + version: 14.1.0 + resolution: "@octokit/types@npm:14.1.0" + dependencies: + "@octokit/openapi-types": ^25.1.0 + checksum: 0513520e26dc5395c3b3b407568151d32be1f51bedb151f5b294cadc72dc3fe2d0dbbccad96f01dc80d26247b4aed3358de0ce31ad3c013eb22b96e6234feeb5 + languageName: node + linkType: hard + "@octokit/types@npm:^8.0.0": version: 8.2.1 resolution: "@octokit/types@npm:8.2.1" @@ -10043,6 +10622,13 @@ __metadata: languageName: node linkType: hard +"@octokit/webhooks-methods@npm:^5.1.1": + version: 5.1.1 + resolution: "@octokit/webhooks-methods@npm:5.1.1" + checksum: ce989efdd0d2c4f1b077cd661f04d2b1c53b961fdd9c777ca5d8edcfcda5f164a8203dfa19a7b1b943910f6785af3d9add6ab5a1be72ec089b3d6db98927540c + languageName: node + linkType: hard + "@octokit/webhooks-types@npm:6.11.0": version: 6.11.0 resolution: "@octokit/webhooks-types@npm:6.11.0" @@ -10081,6 +10667,17 @@ __metadata: languageName: node linkType: hard +"@octokit/webhooks@npm:^13.6.1, @octokit/webhooks@npm:^13.8.3": + version: 13.9.1 + resolution: "@octokit/webhooks@npm:13.9.1" + dependencies: + "@octokit/openapi-webhooks-types": 11.0.0 + "@octokit/request-error": ^6.1.7 + "@octokit/webhooks-methods": ^5.1.1 + checksum: a53ec4dcdc100c5ad611be907fe55af720d615ad3129ed8f0930dcd97d0c7f12f47352728496aa8ede34e4633293350b95c45338d42c3293682b9f2723965f02 + languageName: node + linkType: hard + "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" @@ -11560,6 +12157,54 @@ __metadata: languageName: node linkType: hard +"@otplib/core@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/core@npm:12.0.1" + checksum: b3c34bc20b31bc3f49cc0dc3c0eb070491c0101e8c1efa83cec48ca94158bd736aaca8187df667fc0c4a239d4ac52076bc44084bee04a50c80c3630caf77affa + languageName: node + linkType: hard + +"@otplib/plugin-crypto@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/plugin-crypto@npm:12.0.1" + dependencies: + "@otplib/core": ^12.0.1 + checksum: 6867c74ee8aca6c2db9670362cf51e44f3648602c39318bf537421242e33f0012a172acd43bbed9a21d706e535dc4c66aff965380673391e9fd74cf685b5b13a + languageName: node + linkType: hard + +"@otplib/plugin-thirty-two@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/plugin-thirty-two@npm:12.0.1" + dependencies: + "@otplib/core": ^12.0.1 + thirty-two: ^1.0.2 + checksum: 920099e40d3e8c2941291c84c70064c2d86d0d1ed17230d650445d5463340e406bc413ddf2e40c374ddc4ee988ef1e3facacab9b5248b1ff361fd13df52bf88f + languageName: node + linkType: hard + +"@otplib/preset-default@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/preset-default@npm:12.0.1" + dependencies: + "@otplib/core": ^12.0.1 + "@otplib/plugin-crypto": ^12.0.1 + "@otplib/plugin-thirty-two": ^12.0.1 + checksum: 8133231384f6277f77eb8e42ef83bc32a8b01059bef147d1c358d9e9bfd292e1c239f581fe008367a48489dd68952b7ac0948e6c41412fc06079da2c91b71d16 + languageName: node + linkType: hard + +"@otplib/preset-v11@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/preset-v11@npm:12.0.1" + dependencies: + "@otplib/core": ^12.0.1 + "@otplib/plugin-crypto": ^12.0.1 + "@otplib/plugin-thirty-two": ^12.0.1 + checksum: 367cb09397e617c21ec748d54e920ab43f1c5dfba70cbfd88edf73aecca399cf0c09fefe32518f79c7ee8a06e7058d14b200da378cc7d46af3cac4e22a153e2f + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -11567,6 +12212,17 @@ __metadata: languageName: node linkType: hard +"@playwright/test@npm:1.57.0": + version: 1.57.0 + resolution: "@playwright/test@npm:1.57.0" + dependencies: + playwright: 1.57.0 + bin: + playwright: cli.js + checksum: 1a84783a240d69c2c8081a127b446f812a8dc86fe6f60a9511dd501cc0e6229cbec7e7753972678f3f063ad2bebb2cedbe9caebc5faa41014aebed35773ea242 + languageName: node + linkType: hard + "@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.7": version: 0.5.11 resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.11" @@ -16963,7 +17619,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.8": +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: bd93e2e415b6f182ec4da1074e1f36c480f1d26add3e696d54fb30c09bc470897e41361c8fd957bf0985024f8fbf1e6e2aff977d79352ef7eb93a5c6dcff6c11 @@ -17377,6 +18033,17 @@ __metadata: languageName: node linkType: hard +"@types/pg@npm:8.15.6": + version: 8.15.6 + resolution: "@types/pg@npm:8.15.6" + dependencies: + "@types/node": "*" + pg-protocol: "*" + pg-types: ^2.2.0 + checksum: 35a8fe848552be8f3f5d4d8428edf525bc48c96607992ef068edf2ed5c64bb015132b46a3f7f5524a911a055c76f103ac3407f2a9b9330a11d1174cbbafdb20e + languageName: node + linkType: hard + "@types/pg@npm:8.6.1": version: 8.6.1 resolution: "@types/pg@npm:8.6.1" @@ -17752,6 +18419,26 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.49.0" + dependencies: + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.49.0 + "@typescript-eslint/type-utils": 8.49.0 + "@typescript-eslint/utils": 8.49.0 + "@typescript-eslint/visitor-keys": 8.49.0 + ignore: ^7.0.0 + natural-compare: ^1.4.0 + ts-api-utils: ^2.1.0 + peerDependencies: + "@typescript-eslint/parser": ^8.49.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 0bae18dda8e8c86d8da311c382642e4e321e708ca7bad1ae86e43981b1679e99e7d9bd4e32d4874e8016cbe2e39f5a255a71f16cc2c64ec3471b23161e51afec + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^8.17.0": version: 8.21.0 resolution: "@typescript-eslint/eslint-plugin@npm:8.21.0" @@ -17773,6 +18460,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/parser@npm:8.49.0" + dependencies: + "@typescript-eslint/scope-manager": 8.49.0 + "@typescript-eslint/types": 8.49.0 + "@typescript-eslint/typescript-estree": 8.49.0 + "@typescript-eslint/visitor-keys": 8.49.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 27a157372fec09d72b9d3b266ca18cc6d4db040df6d507c5c9d30f97375e0be373d5fde9d02bcd997e40f21738edcc7a2e51d5a56e3cdd600147637bc96d920b + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^8.16.0": version: 8.21.0 resolution: "@typescript-eslint/parser@npm:8.21.0" @@ -17789,6 +18492,19 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/project-service@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/project-service@npm:8.49.0" + dependencies: + "@typescript-eslint/tsconfig-utils": ^8.49.0 + "@typescript-eslint/types": ^8.49.0 + debug: ^4.3.4 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 378cd7e6982820aa0bb1dfe78a8cf133dc8192ad68b4e2a3ed1615a1a1b4542a1a20da08de6f5dee2a5804192aeceabe06e6c16a0453a8aaa43e495527e6af6a + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/scope-manager@npm:7.18.0" @@ -17809,6 +18525,34 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/scope-manager@npm:8.49.0" + dependencies: + "@typescript-eslint/types": 8.49.0 + "@typescript-eslint/visitor-keys": 8.49.0 + checksum: 85aae146729547df03a2ffdb4e447a10023e7c71b426a2a5d7eb3b2a82ec1bbd8ba214d619363994c500a4cf742fbb3f3743723aa13784649e0b9e909ab4529f + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.49.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: be26283df8cf05a3a8d17596ac52e51ec27017f27ec5588e2fa3b804c31758864732a24e1ab777ac3e3567dda9b55de5b18d318b6a6e56025baa4f117f371804 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:^8.49.0": + version: 8.50.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.50.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 1c6e47673e0f701dca9075f1c29cb45dbdc330d9319c8dc906843899ebc22c2b6bb2037f61b5aaae129784bf285aa993a872abb43118b1a4a7f399601f11e1c7 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.21.0": version: 8.21.0 resolution: "@typescript-eslint/type-utils@npm:8.21.0" @@ -17824,6 +18568,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/type-utils@npm:8.49.0" + dependencies: + "@typescript-eslint/types": 8.49.0 + "@typescript-eslint/typescript-estree": 8.49.0 + "@typescript-eslint/utils": 8.49.0 + debug: ^4.3.4 + ts-api-utils: ^2.1.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: ce5795464be57b0a1cf5970103547a148e8971fe7cf1aafb9a62b40251c670fd1b03535edfc4622c520112705cd6ee5efd88124a7432d2fbbcfc5be54fbf131f + languageName: node + linkType: hard + "@typescript-eslint/types@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/types@npm:7.18.0" @@ -17838,6 +18598,20 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/types@npm:8.49.0" + checksum: e604e27f9ff7dd4c7ae0060db5f506338b64cc302563841e729f4da7730a1e94176db8ae1f1c4c0c0c8df5086f127408dc050f27595a36d412f60ed0e09f5a64 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:^8.49.0": + version: 8.50.0 + resolution: "@typescript-eslint/types@npm:8.50.0" + checksum: 1ce987036c0f5e8b5b05afa8897556680f0a07f37bb67c618057427a719444613cca60cfb34a6bc2af68d6c7d68029ce19d3ee5306ee5d311c850c1f9855250a + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" @@ -17875,6 +18649,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.49.0" + dependencies: + "@typescript-eslint/project-service": 8.49.0 + "@typescript-eslint/tsconfig-utils": 8.49.0 + "@typescript-eslint/types": 8.49.0 + "@typescript-eslint/visitor-keys": 8.49.0 + debug: ^4.3.4 + minimatch: ^9.0.4 + semver: ^7.6.0 + tinyglobby: ^0.2.15 + ts-api-utils: ^2.1.0 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: a03545eefdf2487172602930fdd27c8810dc775bdfa4d9c3a45651c5f5465c5e1fc652f318c61ece7f4f35425231961434e96d4ffca84f10149fca111e1fc520 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:8.21.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": version: 8.21.0 resolution: "@typescript-eslint/utils@npm:8.21.0" @@ -17890,6 +18683,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/utils@npm:8.49.0" + dependencies: + "@eslint-community/eslint-utils": ^4.7.0 + "@typescript-eslint/scope-manager": 8.49.0 + "@typescript-eslint/types": 8.49.0 + "@typescript-eslint/typescript-estree": 8.49.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: be1bdf2e4a8bb56bb0c39ba8b8a5f1fc187fb17a53af0ef4d50be95914027076dfac385b54d969fdaa2a42fa8a95f31d105457a3768875054a5507ebe6f6257a + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:^7.0.0": version: 7.18.0 resolution: "@typescript-eslint/utils@npm:7.18.0" @@ -17924,6 +18732,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.49.0" + dependencies: + "@typescript-eslint/types": 8.49.0 + eslint-visitor-keys: ^4.2.1 + checksum: 446d6345d9702bcdf8713a47561ea52657bbec1c8170b1559d9462e1d815b122adff35f1cc778ecb94f4459d51ac7aac7cafe9ec8d8319b2c7d7984a0edee6ba + languageName: node + linkType: hard + +"@typespec/ts-http-runtime@npm:^0.3.0": + version: 0.3.2 + resolution: "@typespec/ts-http-runtime@npm:0.3.2" + dependencies: + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.0 + tslib: ^2.6.2 + checksum: 2633230384644e23f47485fe6ae940527fc44ecc5d0eec9216fd485696bf4edaafa79051cded5bb9e0b65930232bd674e90bd45b61dd7033aea1d813d5375050 + languageName: node + linkType: hard + "@uiw/codemirror-extensions-basic-setup@npm:4.21.24": version: 4.21.24 resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.21.24" @@ -18501,7 +19330,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -18759,6 +19588,7 @@ __metadata: "@types/node": 22.19.1 "@types/react": 18.3.27 "@types/react-dom": 18.3.7 + eslint-plugin-unused-imports: ^4.1.4 lodash: 4.17.21 prettier: 3.7.4 react: 18.3.1 @@ -19065,7 +19895,7 @@ __metadata: languageName: node linkType: hard -"asn1@npm:^0.2.6": +"asn1@npm:^0.2.6, asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" dependencies: @@ -19074,6 +19904,13 @@ __metadata: languageName: node linkType: hard +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 + languageName: node + linkType: hard + "assert@npm:^1.1.1": version: 1.5.1 resolution: "assert@npm:1.5.1" @@ -19226,6 +20063,13 @@ __metadata: languageName: node linkType: hard +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 + languageName: node + linkType: hard + "aws-ssl-profiles@npm:^1.1.1": version: 1.1.2 resolution: "aws-ssl-profiles@npm:1.1.2" @@ -19233,6 +20077,13 @@ __metadata: languageName: node linkType: hard +"aws4@npm:^1.8.0": + version: 1.13.2 + resolution: "aws4@npm:1.13.2" + checksum: 9ac924e4a91c088b4928ea86b68d8c4558b0e6289ccabaae0e3e96a611bd75277c2eab6e3965821028768700516f612b929a5ce822f33a8771f74ba2a8cedb9c + languageName: node + linkType: hard + "axe-core@npm:^4.10.0": version: 4.10.2 resolution: "axe-core@npm:4.10.2" @@ -19240,6 +20091,13 @@ __metadata: languageName: node linkType: hard +"axe-core@npm:~4.11.0": + version: 4.11.0 + resolution: "axe-core@npm:4.11.0" + checksum: 57b0d7206d4dd63a1127b8ad6e173417857a3de43717cbb03561e75e2ff85765a228a7588fde4c828dbf179ef25f263ad98535656701e78def8f29a9524be866 + languageName: node + linkType: hard + "axios@npm:^1.6.0, axios@npm:^1.7.4, axios@npm:^1.8.2": version: 1.12.2 resolution: "axios@npm:1.12.2" @@ -19594,7 +20452,7 @@ __metadata: languageName: node linkType: hard -"bcrypt-pbkdf@npm:^1.0.2": +"bcrypt-pbkdf@npm:^1.0.0, bcrypt-pbkdf@npm:^1.0.2": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" dependencies: @@ -19610,6 +20468,13 @@ __metadata: languageName: node linkType: hard +"before-after-hook@npm:^3.0.2": + version: 3.0.2 + resolution: "before-after-hook@npm:3.0.2" + checksum: 5f76a9d31909f7f1f7125b7e017ff018799308f5c1fc5a5bfeba9986149da77e6a5cdde0d151671cf374a7fa6452533237bb1de62dfd6c235c20e7c61cc9569d + languageName: node + linkType: hard + "better-sqlite3@npm:^12.0.0": version: 12.2.0 resolution: "better-sqlite3@npm:12.2.0" @@ -20204,6 +21069,13 @@ __metadata: languageName: node linkType: hard +"camelize-ts@npm:^3.0.0": + version: 3.0.0 + resolution: "camelize-ts@npm:3.0.0" + checksum: 835f7f79ddec6e6e0364c6a8294ce82586bca5d9443001f28077169181801cb126d8bc608c85504aa6c877de6fe5f7c9533f80996dc81117d865ff92c676d680 + languageName: node + linkType: hard + "caniuse-api@npm:^3.0.0": version: 3.0.0 resolution: "caniuse-api@npm:3.0.0" @@ -20236,6 +21108,13 @@ __metadata: languageName: node linkType: hard +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 + languageName: node + linkType: hard + "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -20383,6 +21262,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: fd73a4bab48b79e66903fe1cafbdc208956f41ea4f856df883d0c7277b7ab29fd33ee65f93b2ec9192fc0169238f2f8307b7735d27c155821d886b84aa97aa8d + languageName: node + linkType: hard + "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" @@ -20732,7 +21618,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.8": +"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -21181,6 +22067,13 @@ __metadata: languageName: node linkType: hard +"core-util-is@npm:1.0.2": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab + languageName: node + linkType: hard + "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -21816,6 +22709,15 @@ __metadata: languageName: node linkType: hard +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: ^1.0.0 + checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 + languageName: node + linkType: hard + "data-uri-to-buffer@npm:^4.0.0": version: 4.0.1 resolution: "data-uri-to-buffer@npm:4.0.1" @@ -22637,6 +23539,43 @@ __metadata: languageName: node linkType: hard +"e2e-tests@workspace:e2e-tests": + version: 0.0.0-use.local + resolution: "e2e-tests@workspace:e2e-tests" + dependencies: + "@axe-core/playwright": 4.11.0 + "@azure/arm-network": 34.2.0 + "@azure/identity": 4.13.0 + "@eslint/js": 9.39.1 + "@keycloak/keycloak-admin-client": 25.0.6 + "@kubernetes/client-node": 0.22.3 + "@microsoft/microsoft-graph-client": 3.0.7 + "@microsoft/microsoft-graph-types": 2.43.1 + "@playwright/test": 1.57.0 + "@types/node": 22.19.1 + "@types/pg": 8.15.6 + "@typescript-eslint/eslint-plugin": 8.49.0 + "@typescript-eslint/parser": 8.49.0 + eslint: 9.39.1 + eslint-plugin-check-file: 3.3.1 + eslint-plugin-filenames: 1.3.2 + eslint-plugin-playwright: 2.4.0 + ioredis: 5.8.2 + isomorphic-fetch: 3.0.0 + js-yaml: 4.1.1 + node-fetch: 2.7.0 + octokit: 4.1.4 + otplib: 12.0.1 + pg: 8.16.3 + prettier: 3.7.4 + typescript: 5.9.3 + typescript-eslint: 8.49.0 + uuid: 11.1.0 + winston: 3.14.2 + yaml: 2.8.2 + languageName: unknown + linkType: soft + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -22653,6 +23592,16 @@ __metadata: languageName: node linkType: hard +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: ~0.1.0 + safer-buffer: ^2.1.0 + checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a + languageName: node + linkType: hard + "ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" @@ -23438,6 +24387,18 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-check-file@npm:3.3.1": + version: 3.3.1 + resolution: "eslint-plugin-check-file@npm:3.3.1" + dependencies: + is-glob: ^4.0.3 + micromatch: ^4.0.8 + peerDependencies: + eslint: ">=9.0.0" + checksum: 32b5c3954d4710901b0365308996432596ae1373e678255e016522bbefe19dfe5510dc9b661db937eeb8f3ebb11efa58b2d39c6554a31ae8e5edd2b864c7a79c + languageName: node + linkType: hard + "eslint-plugin-deprecation@npm:^3.0.0": version: 3.0.0 resolution: "eslint-plugin-deprecation@npm:3.0.0" @@ -23452,6 +24413,20 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-filenames@npm:1.3.2": + version: 1.3.2 + resolution: "eslint-plugin-filenames@npm:1.3.2" + dependencies: + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.upperfirst: 4.3.1 + peerDependencies: + eslint: "*" + checksum: 4048e9dfa9b22cf424edd5928832ce2b4a20dd10825eea7f13747e2cca2ce5fc9084da6a5f236fa17edce253ee36ccfb084cca61403775419dc1524c25b5ce5f + languageName: node + linkType: hard + "eslint-plugin-import@npm:^2.31.0": version: 2.31.0 resolution: "eslint-plugin-import@npm:2.31.0" @@ -23524,6 +24499,17 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-playwright@npm:2.4.0": + version: 2.4.0 + resolution: "eslint-plugin-playwright@npm:2.4.0" + dependencies: + globals: ^16.4.0 + peerDependencies: + eslint: ">=8.40.0" + checksum: 6c0ac57c2d06c8f25212459264133eff018dcb09076927898cd35eecf7f85d4297f8fc720c2be023fbe755933d632a82e7d8a060eb780fa45ac4c502b0dec4f3 + languageName: node + linkType: hard + "eslint-plugin-react-hooks@npm:^5.0.0": version: 5.1.0 resolution: "eslint-plugin-react-hooks@npm:5.1.0" @@ -23609,6 +24595,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: cf88f42cd5e81490d549dc6d350fe01e6fe420f9d9ea34f134bb359b030e3c4ef888d36667632e448937fe52449f7181501df48c08200e3d3b0fee250d05364e + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" @@ -23623,6 +24619,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 3a77e3f99a49109f6fb2c5b7784bc78f9743b834d238cdba4d66c602c6b52f19ed7bcd0a5c5dbbeae3a8689fd785e76c001799f53d2228b278282cf9f699fff5 + languageName: node + linkType: hard + "eslint-webpack-plugin@npm:^3.2.0": version: 3.2.0 resolution: "eslint-webpack-plugin@npm:3.2.0" @@ -23639,6 +24642,55 @@ __metadata: languageName: node linkType: hard +"eslint@npm:9.39.1": + version: 9.39.1 + resolution: "eslint@npm:9.39.1" + dependencies: + "@eslint-community/eslint-utils": ^4.8.0 + "@eslint-community/regexpp": ^4.12.1 + "@eslint/config-array": ^0.21.1 + "@eslint/config-helpers": ^0.4.2 + "@eslint/core": ^0.17.0 + "@eslint/eslintrc": ^3.3.1 + "@eslint/js": 9.39.1 + "@eslint/plugin-kit": ^0.4.1 + "@humanfs/node": ^0.16.6 + "@humanwhocodes/module-importer": ^1.0.1 + "@humanwhocodes/retry": ^0.4.2 + "@types/estree": ^1.0.6 + ajv: ^6.12.4 + chalk: ^4.0.0 + cross-spawn: ^7.0.6 + debug: ^4.3.2 + escape-string-regexp: ^4.0.0 + eslint-scope: ^8.4.0 + eslint-visitor-keys: ^4.2.1 + espree: ^10.4.0 + esquery: ^1.5.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^8.0.0 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + json-stable-stringify-without-jsonify: ^1.0.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 35583d4d93f431ea2716e18c912e0b10980e27377a89d2c644a3a755921e42a2665dfd7367b8e9b54c7e4e9f193dea4126ce503c866f5795b170934ffd3f1dd9 + languageName: node + linkType: hard + "eslint@npm:^8.49.0, eslint@npm:^8.6.0": version: 8.57.1 resolution: "eslint@npm:8.57.1" @@ -23694,6 +24746,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^10.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: ^8.15.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^4.2.1 + checksum: 5f9d0d7c81c1bca4bfd29a55270067ff9d575adb8c729a5d7f779c2c7b910bfc68ccf8ec19b29844b707440fc159a83868f22c8e87bbf7cbcb225ed067df6c85 + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -23734,6 +24797,15 @@ __metadata: languageName: node linkType: hard +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: ^5.1.0 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + languageName: node + linkType: hard + "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" @@ -24111,7 +25183,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:3.0.2, extend@npm:^3.0.0, extend@npm:^3.0.2": +"extend@npm:3.0.2, extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 @@ -24129,6 +25201,27 @@ __metadata: languageName: node linkType: hard +"extsprintf@npm:1.3.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 + languageName: node + linkType: hard + +"extsprintf@npm:^1.2.0": + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 + languageName: node + linkType: hard + +"fast-content-type-parse@npm:^2.0.0": + version: 2.0.1 + resolution: "fast-content-type-parse@npm:2.0.1" + checksum: 0ea4c7dce77c579d19805ea874d128832f535086465c57994a49a28a4784538ea4eeaa49261a5c675a4764c634e12a74bae26e09d64e886cb826c0b97e4c621d + languageName: node + linkType: hard + "fast-copy@npm:^3.0.2": version: 3.0.2 resolution: "fast-copy@npm:3.0.2" @@ -24330,6 +25423,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: bd537daa9d3cd53887eed35efa0eab2dbb1ca408790e10e024120e7a36c6e9ae2b33710cb8381e35def01bc9c1d7eaba746f886338413e68ff6ebaee07b9a6e8 + languageName: node + linkType: hard + "fecha@npm:^4.2.0": version: 4.2.3 resolution: "fecha@npm:4.2.3" @@ -24381,6 +25486,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: ^4.0.0 + checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f + languageName: node + linkType: hard + "file-type@npm:^21.0.0": version: 21.1.0 resolution: "file-type@npm:21.1.0" @@ -24534,6 +25648,16 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.4 + checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6 + languageName: node + linkType: hard + "flatted@npm:3.3.3, flatted@npm:^3.2.7, flatted@npm:^3.2.9": version: 3.3.3 resolution: "flatted@npm:3.3.3" @@ -24584,6 +25708,13 @@ __metadata: languageName: node linkType: hard +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 + languageName: node + linkType: hard + "fork-ts-checker-webpack-plugin@npm:^6.5.0": version: 6.5.3 resolution: "fork-ts-checker-webpack-plugin@npm:6.5.3" @@ -24676,6 +25807,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:~2.3.2": + version: 2.3.3 + resolution: "form-data@npm:2.3.3" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + languageName: node + linkType: hard + "format@npm:^0.2.0": version: 0.2.2 resolution: "format@npm:0.2.2" @@ -24882,6 +26024,16 @@ __metadata: languageName: node linkType: hard +"fsevents@npm:2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + conditions: os=darwin + languageName: node + linkType: hard + "fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" @@ -24892,6 +26044,15 @@ __metadata: languageName: node linkType: hard +"fsevents@patch:fsevents@2.3.2#~builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + "fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" @@ -25123,6 +26284,15 @@ __metadata: languageName: node linkType: hard +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: ^1.0.0 + checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 + languageName: node + linkType: hard + "git-up@npm:^7.0.0": version: 7.0.0 resolution: "git-up@npm:7.0.0" @@ -25316,6 +26486,20 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac + languageName: node + linkType: hard + +"globals@npm:^16.4.0": + version: 16.5.0 + resolution: "globals@npm:16.5.0" + checksum: e0363245cfc6e36ac6bf940415160a05d66e7985fa3856d5383ad49292b6d249d80fd03759e09d6491109648a121849b23b77c7391a11862923e6995268a7cd6 + languageName: node + linkType: hard + "globalthis@npm:^1.0.1, globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -25587,6 +26771,23 @@ __metadata: languageName: node linkType: hard +"har-schema@npm:^2.0.0": + version: 2.0.0 + resolution: "har-schema@npm:2.0.0" + checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b + languageName: node + linkType: hard + +"har-validator@npm:~5.1.3": + version: 5.1.5 + resolution: "har-validator@npm:5.1.5" + dependencies: + ajv: ^6.12.3 + har-schema: ^2.0.0 + checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 + languageName: node + linkType: hard + "harmony-reflect@npm:^1.4.6": version: 1.6.2 resolution: "harmony-reflect@npm:1.6.2" @@ -26045,6 +27246,17 @@ __metadata: languageName: node linkType: hard +"http-signature@npm:~1.2.0": + version: 1.2.0 + resolution: "http-signature@npm:1.2.0" + dependencies: + assert-plus: ^1.0.0 + jsprim: ^1.2.2 + sshpk: ^1.7.0 + checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c + languageName: node + linkType: hard + "http2-wrapper@npm:^2.2.1": version: 2.2.1 resolution: "http2-wrapper@npm:2.2.1" @@ -26233,6 +27445,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^7.0.0": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: d0862bf64d3d58bf34d5fb0a9f725bec9ca5ce8cd1aecc8f28034269e8f69b8009ffd79ca3eda96962a6a444687781cd5efdb8c7c8ddc0a6996e36d31c217f14 + languageName: node + linkType: hard + "immediate@npm:~3.0.5": version: 3.0.6 resolution: "immediate@npm:3.0.6" @@ -26442,6 +27661,23 @@ __metadata: languageName: node linkType: hard +"ioredis@npm:5.8.2": + version: 5.8.2 + resolution: "ioredis@npm:5.8.2" + dependencies: + "@ioredis/commands": 1.4.0 + cluster-key-slot: ^1.1.0 + debug: ^4.3.4 + denque: ^2.1.0 + lodash.defaults: ^4.2.0 + lodash.isarguments: ^3.1.0 + redis-errors: ^1.2.0 + redis-parser: ^3.0.0 + standard-as-callback: ^2.1.0 + checksum: eb351f2559233858cf1792992a183b956e9d8a3cc29669fd068ba6a9b5e16576c07c7197dc7ad1e4b78ecfcd5319ba0ae9ca4a90ba1b66a81b125b6d38565f21 + languageName: node + linkType: hard + "iovalkey@npm:^0.3.1": version: 0.3.2 resolution: "iovalkey@npm:0.3.2" @@ -27007,6 +28243,13 @@ __metadata: languageName: node linkType: hard +"is-typedarray@npm:~1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 + languageName: node + linkType: hard + "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -27134,6 +28377,16 @@ __metadata: languageName: node linkType: hard +"isomorphic-fetch@npm:3.0.0": + version: 3.0.0 + resolution: "isomorphic-fetch@npm:3.0.0" + dependencies: + node-fetch: ^2.6.1 + whatwg-fetch: ^3.4.1 + checksum: e5ab79a56ce5af6ddd21265f59312ad9a4bc5a72cebc98b54797b42cb30441d5c5f8d17c5cd84a99e18101c8af6f90c081ecb8d12fd79e332be1778d58486d75 + languageName: node + linkType: hard + "isomorphic-form-data@npm:^2.0.0": version: 2.0.0 resolution: "isomorphic-form-data@npm:2.0.0" @@ -27198,6 +28451,13 @@ __metadata: languageName: node linkType: hard +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" @@ -27827,6 +29087,13 @@ __metadata: languageName: node linkType: hard +"jose@npm:^6.1.0": + version: 6.1.3 + resolution: "jose@npm:6.1.3" + checksum: 7f51c7e77f82b70ef88ede9fd1760298bc0ffbf143b9d94f78c08462987ae61864535c1856bc6c26d335f857c7d41f4fffcc29134212c19ea929ce34a4c790f0 + languageName: node + linkType: hard + "joycon@npm:^3.0.1": version: 3.1.1 resolution: "joycon@npm:3.1.1" @@ -27876,7 +29143,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.1.1": +"js-yaml@npm:4.1.1, js-yaml@npm:^4.1.1": version: 4.1.1 resolution: "js-yaml@npm:4.1.1" dependencies: @@ -27917,6 +29184,13 @@ __metadata: languageName: node linkType: hard +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 + languageName: node + linkType: hard + "jsdom@npm:26.1.0, jsdom@npm:^26.0.0": version: 26.1.0 resolution: "jsdom@npm:26.1.0" @@ -28122,7 +29396,7 @@ __metadata: languageName: node linkType: hard -"json-schema@npm:^0.4.0": +"json-schema@npm:0.4.0, json-schema@npm:^0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 @@ -28136,7 +29410,7 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:^5.0.1": +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee @@ -28209,7 +29483,7 @@ __metadata: languageName: node linkType: hard -"jsonpath-plus@npm:^10.0.0, jsonpath-plus@npm:^10.3.0, jsonpath-plus@npm:^6.0.1 || ^10.1.0": +"jsonpath-plus@npm:^10.0.0, jsonpath-plus@npm:^10.2.0, jsonpath-plus@npm:^10.3.0, jsonpath-plus@npm:^6.0.1 || ^10.1.0": version: 10.3.0 resolution: "jsonpath-plus@npm:10.3.0" dependencies: @@ -28266,6 +29540,18 @@ __metadata: languageName: node linkType: hard +"jsprim@npm:^1.2.2": + version: 1.4.2 + resolution: "jsprim@npm:1.4.2" + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a + languageName: node + linkType: hard + "jss-plugin-camel-case@npm:^10.5.1": version: 10.10.0 resolution: "jss-plugin-camel-case@npm:10.10.0" @@ -28436,7 +29722,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -28825,7 +30111,7 @@ __metadata: languageName: node linkType: hard -"lodash.camelcase@npm:^4.3.0": +"lodash.camelcase@npm:4.3.0, lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0" checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 @@ -28951,6 +30237,13 @@ __metadata: languageName: node linkType: hard +"lodash.kebabcase@npm:4.1.1": + version: 4.1.1 + resolution: "lodash.kebabcase@npm:4.1.1" + checksum: 5a6c59161914e1bae23438a298c7433e83d935e0f59853fa862e691164696bc07f6dfa4c313d499fbf41ba8d53314e9850416502376705a357d24ee6ca33af78 + languageName: node + linkType: hard + "lodash.maxby@npm:^4.6.0": version: 4.6.0 resolution: "lodash.maxby@npm:4.6.0" @@ -28986,6 +30279,13 @@ __metadata: languageName: node linkType: hard +"lodash.snakecase@npm:4.1.1": + version: 4.1.1 + resolution: "lodash.snakecase@npm:4.1.1" + checksum: 1685ed3e83dda6eae5a4dcaee161a51cd210aabb3e1c09c57150e7dd8feda19e4ca0d27d0631eabe8d0f4eaa51e376da64e8c018ae5415417c5890d42feb72a8 + languageName: node + linkType: hard + "lodash.topath@npm:^4.5.2": version: 4.5.2 resolution: "lodash.topath@npm:4.5.2" @@ -29007,6 +30307,13 @@ __metadata: languageName: node linkType: hard +"lodash.upperfirst@npm:4.3.1": + version: 4.3.1 + resolution: "lodash.upperfirst@npm:4.3.1" + checksum: cadec6955900afe1928cc60cdc4923a79c2ef991e42665419cc81630ed9b4f952a1093b222e0141ab31cbc4dba549f97ec28ff67929d71e01861c97188a5fa83 + languageName: node + linkType: hard + "lodash@npm:4.17.21, lodash@npm:^4.15.0, lodash@npm:^4.16.4, lodash@npm:^4.17.0, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:~4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" @@ -30020,7 +31327,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -30263,7 +31570,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 @@ -30280,6 +31587,15 @@ __metadata: languageName: node linkType: hard +"minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: ^7.1.2 + checksum: a15e6f0128f514b7d41a1c68ce531155447f4669e32d279bba1c1c071ef6c2abd7e4d4579bb59ccc2ed1531346749665968fdd7be8d83eb6b6ae2fe1f3d370a7 + languageName: node + linkType: hard + "mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" @@ -31044,6 +32360,20 @@ __metadata: languageName: node linkType: hard +"oauth-sign@npm:~0.9.0": + version: 0.9.0 + resolution: "oauth-sign@npm:0.9.0" + checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 + languageName: node + linkType: hard + +"oauth4webapi@npm:^3.8.2": + version: 3.8.3 + resolution: "oauth4webapi@npm:3.8.3" + checksum: 66d5c8215aff90280339911061534c183c8cf645cad1870d8d41810888f3972b5705a7c45c564c60c5c4b79e3d5a62b401c7be59bbd7bf45509094379fad2a39 + languageName: node + linkType: hard + "oauth@npm:0.10.x": version: 0.10.0 resolution: "oauth@npm:0.10.0" @@ -31179,6 +32509,25 @@ __metadata: languageName: node linkType: hard +"octokit@npm:4.1.4": + version: 4.1.4 + resolution: "octokit@npm:4.1.4" + dependencies: + "@octokit/app": ^15.1.6 + "@octokit/core": ^6.1.5 + "@octokit/oauth-app": ^7.1.6 + "@octokit/plugin-paginate-graphql": ^5.2.4 + "@octokit/plugin-paginate-rest": ^12.0.0 + "@octokit/plugin-rest-endpoint-methods": ^14.0.0 + "@octokit/plugin-retry": ^7.2.1 + "@octokit/plugin-throttling": ^10.0.0 + "@octokit/request-error": ^6.1.8 + "@octokit/types": ^14.0.0 + "@octokit/webhooks": ^13.8.3 + checksum: 012a0ebe06dff7f3d9561fbab00b103891ff40c6eaa38ebb5fcaf04bd6285da592af2db0b7aa193fc00225aef9b34e877d31e16c24ac5eeb01f26e6eeffebb2e + languageName: node + linkType: hard + "octokit@npm:^3.0.0": version: 3.1.2 resolution: "octokit@npm:3.1.2" @@ -31374,6 +32723,16 @@ __metadata: languageName: node linkType: hard +"openid-client@npm:^6.1.3": + version: 6.8.1 + resolution: "openid-client@npm:6.8.1" + dependencies: + jose: ^6.1.0 + oauth4webapi: ^3.8.2 + checksum: 05b2cdfe8d8e66502e42e7152b437ea2800325fa1216648e522bcef3a3ed7f8c894d8f02e362d9a3ac0da77f995a58313275199e5d0d0ea672a54d070b3f48af + languageName: node + linkType: hard + "optionator@npm:^0.8.1": version: 0.8.3 resolution: "optionator@npm:0.8.3" @@ -31456,6 +32815,17 @@ __metadata: languageName: node linkType: hard +"otplib@npm:12.0.1": + version: 12.0.1 + resolution: "otplib@npm:12.0.1" + dependencies: + "@otplib/core": ^12.0.1 + "@otplib/preset-default": ^12.0.1 + "@otplib/preset-v11": ^12.0.1 + checksum: 4a1b91cf1b8e920b50ad4bac2ef2a89126630c62daf68e9b32ff15106b2551db905d3b979955cf5f8f114da0a8883cec3d636901d65e793c1745bb4174e2a572 + languageName: node + linkType: hard + "outvariant@npm:^1.2.1, outvariant@npm:^1.4.0": version: 1.4.3 resolution: "outvariant@npm:1.4.3" @@ -32127,6 +33497,13 @@ __metadata: languageName: node linkType: hard +"pg-cloudflare@npm:^1.2.7": + version: 1.2.7 + resolution: "pg-cloudflare@npm:1.2.7" + checksum: 8e66fa9aaf3be9da7570d294c6170ead48ae9187e670dcc4219eb381fb598a12823d90c20f301d76d70e49840dbec8c7eb5aa2af0d2698c0325b634c86bbcd18 + languageName: node + linkType: hard + "pg-connection-string@npm:2.6.2": version: 2.6.2 resolution: "pg-connection-string@npm:2.6.2" @@ -32141,6 +33518,13 @@ __metadata: languageName: node linkType: hard +"pg-connection-string@npm:^2.9.1": + version: 2.9.1 + resolution: "pg-connection-string@npm:2.9.1" + checksum: 23e63951f866ea400b227976be596963c5e68b84dc161df0aa3e36fe2dc281f405e5121d71ba9d2f27973e25a46dbb219056fd91080505bcadc9ae98c9663cf3 + languageName: node + linkType: hard + "pg-format@npm:^1.0.4": version: 1.0.4 resolution: "pg-format@npm:1.0.4" @@ -32162,6 +33546,15 @@ __metadata: languageName: node linkType: hard +"pg-pool@npm:^3.10.1": + version: 3.10.1 + resolution: "pg-pool@npm:3.10.1" + peerDependencies: + pg: ">=8.0" + checksum: 98135a7384be40886bba7100b9ce1a74671ff3877390f68e6db6d50ea56a7f524f7e44e01c02d61efeda97d9dc22d6115d0c66aa7f3cf5b8e892424862d0111a + languageName: node + linkType: hard + "pg-pool@npm:^3.6.1": version: 3.6.1 resolution: "pg-pool@npm:3.6.1" @@ -32178,7 +33571,14 @@ __metadata: languageName: node linkType: hard -"pg-types@npm:^2.1.0, pg-types@npm:^2.2.0": +"pg-protocol@npm:^1.10.3": + version: 1.10.3 + resolution: "pg-protocol@npm:1.10.3" + checksum: 2d8c3b2747526706d37fdf35fc6e87c4a170cf8deb89fac65c562df26b4e0f42b76d62c6d1dbd096725e9a081a8725796f27af874c9e72753499c794472faad7 + languageName: node + linkType: hard + +"pg-types@npm:2.2.0, pg-types@npm:^2.1.0, pg-types@npm:^2.2.0": version: 2.2.0 resolution: "pg-types@npm:2.2.0" dependencies: @@ -32206,6 +33606,28 @@ __metadata: languageName: node linkType: hard +"pg@npm:8.16.3": + version: 8.16.3 + resolution: "pg@npm:8.16.3" + dependencies: + pg-cloudflare: ^1.2.7 + pg-connection-string: ^2.9.1 + pg-pool: ^3.10.1 + pg-protocol: ^1.10.3 + pg-types: 2.2.0 + pgpass: 1.0.5 + peerDependencies: + pg-native: ">=3.0.1" + dependenciesMeta: + pg-cloudflare: + optional: true + peerDependenciesMeta: + pg-native: + optional: true + checksum: ebc98c9480a11f8de74fffd205c2c161f14fc7cd8e19b152b38c7464d7202f59ad52fb1facb3a25319c343118c2fff44f7f46302415e730485878ceccf24241a + languageName: node + linkType: hard + "pg@npm:^8.11.3": version: 8.11.3 resolution: "pg@npm:8.11.3" @@ -32230,7 +33652,7 @@ __metadata: languageName: node linkType: hard -"pgpass@npm:1.x": +"pgpass@npm:1.0.5, pgpass@npm:1.x": version: 1.0.5 resolution: "pgpass@npm:1.0.5" dependencies: @@ -32267,6 +33689,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 6817fb74eb745a71445debe1029768de55fd59a42b75606f478ee1d0dc1aa6e78b711d041a7c9d5550e042642029b7f373dc1a43b224c4b7f12d23436735dba0 + languageName: node + linkType: hard + "pidtree@npm:^0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -32345,6 +33774,30 @@ __metadata: languageName: node linkType: hard +"playwright-core@npm:1.57.0": + version: 1.57.0 + resolution: "playwright-core@npm:1.57.0" + bin: + playwright-core: cli.js + checksum: 960e80d6ec06305b11a3ca9e78e8e4201cc17f37dd37279cb6fece4df43d74bf589833f4f94535fadd284b427f98c5f1cf09368e22f0f00b6a9477571ce6b03b + languageName: node + linkType: hard + +"playwright@npm:1.57.0": + version: 1.57.0 + resolution: "playwright@npm:1.57.0" + dependencies: + fsevents: 2.3.2 + playwright-core: 1.57.0 + dependenciesMeta: + fsevents: + optional: true + bin: + playwright: cli.js + checksum: 176fd9fd890f390e0aa00d42697b70072d534243b15467d9430f3af329e77b3225b67a0afa12ea76fb440300dabd92d4cf040baf5edceee8eeff0ee1590ae5b7 + languageName: node + linkType: hard + "pluralize@npm:^8.0.0": version: 8.0.0 resolution: "pluralize@npm:8.0.0" @@ -33161,6 +34614,15 @@ __metadata: languageName: node linkType: hard +"psl@npm:^1.1.28": + version: 1.15.0 + resolution: "psl@npm:1.15.0" + dependencies: + punycode: ^2.3.1 + checksum: 6f777d82eecfe1c2406dadbc15e77467b186fec13202ec887a45d0209a2c6fca530af94a462a477c3c4a767ad892ec9ede7c482d98f61f653dd838b50e89dc15 + languageName: node + linkType: hard + "psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" @@ -33238,6 +34700,13 @@ __metadata: languageName: node linkType: hard +"qs@npm:~6.5.2": + version: 6.5.3 + resolution: "qs@npm:6.5.3" + checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 + languageName: node + linkType: hard + "querystring-es3@npm:^0.2.0, querystring-es3@npm:^0.2.1": version: 0.2.1 resolution: "querystring-es3@npm:0.2.1" @@ -34515,6 +35984,34 @@ __metadata: languageName: node linkType: hard +"request@npm:^2.88.0": + version: 2.88.2 + resolution: "request@npm:2.88.2" + dependencies: + aws-sign2: ~0.7.0 + aws4: ^1.8.0 + caseless: ~0.12.0 + combined-stream: ~1.0.6 + extend: ~3.0.2 + forever-agent: ~0.6.1 + form-data: ~2.3.2 + har-validator: ~5.1.3 + http-signature: ~1.2.0 + is-typedarray: ~1.0.0 + isstream: ~0.1.2 + json-stringify-safe: ~5.0.1 + mime-types: ~2.1.19 + oauth-sign: ~0.9.0 + performance-now: ^2.1.0 + qs: ~6.5.2 + safe-buffer: ^5.1.2 + tough-cookie: ~2.5.0 + tunnel-agent: ^0.6.0 + uuid: ^3.3.2 + checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af7062996983 + languageName: node + linkType: hard + "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -34759,6 +36256,13 @@ __metadata: languageName: node linkType: hard +"rfc4648@npm:^1.3.0": + version: 1.5.4 + resolution: "rfc4648@npm:1.5.4" + checksum: 4bfd555f16b8ed1bceb3cf4d79242cf3253a2600de51f45ac19549f366b4b8edc0d9b8feaae778059c137f1d10ebd87e125fc839636f6267a7b6badaa95a9f00 + languageName: node + linkType: hard + "rfdc@npm:^1.3.0, rfdc@npm:^1.4.1": version: 1.4.1 resolution: "rfdc@npm:1.4.1" @@ -35143,7 +36647,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:~2.1.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 @@ -36027,6 +37531,27 @@ __metadata: languageName: node linkType: hard +"sshpk@npm:^1.7.0": + version: 1.18.0 + resolution: "sshpk@npm:1.18.0" + dependencies: + asn1: ~0.2.3 + assert-plus: ^1.0.0 + bcrypt-pbkdf: ^1.0.0 + dashdash: ^1.12.0 + ecc-jsbn: ~0.1.1 + getpass: ^0.1.1 + jsbn: ~0.1.0 + safer-buffer: ^2.0.2 + tweetnacl: ~0.14.0 + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: 01d43374eee3a7e37b3b82fdbecd5518cbb2e47ccbed27d2ae30f9753f22bd6ffad31225cb8ef013bc3fb7785e686cea619203ee1439a228f965558c367c3cfa + languageName: node + linkType: hard + "ssri@npm:^10.0.0": version: 10.0.6 resolution: "ssri@npm:10.0.6" @@ -36162,6 +37687,13 @@ __metadata: languageName: node linkType: hard +"stream-buffers@npm:^3.0.2": + version: 3.0.3 + resolution: "stream-buffers@npm:3.0.3" + checksum: 3f0bdc4b1fd3ff370cef5a2103dd930b8981d42d97741eeb087a660771e27f0fc35fa8a351bb36e15bbbbce0eea00fefed60d6cdff4c6c3f527580529f183807 + languageName: node + linkType: hard + "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -36954,6 +38486,19 @@ __metadata: languageName: node linkType: hard +"tar@npm:^7.0.0": + version: 7.5.2 + resolution: "tar@npm:7.5.2" + dependencies: + "@isaacs/fs-minipass": ^4.0.0 + chownr: ^3.0.0 + minipass: ^7.1.2 + minizlib: ^3.1.0 + yallist: ^5.0.0 + checksum: 192559b0e7af17d57c7747592ef22c14d5eba2d9c35996320ccd20c3e2038160fe8d928fc5c08b2aa1b170c4d0a18c119441e81eae8f227ca2028d5bcaa6bf23 + languageName: node + linkType: hard + "tarn@npm:^3.0.2": version: 3.0.2 resolution: "tarn@npm:3.0.2" @@ -37116,6 +38661,13 @@ __metadata: languageName: node linkType: hard +"thirty-two@npm:^1.0.2": + version: 1.0.2 + resolution: "thirty-two@npm:1.0.2" + checksum: f6700b31d16ef942fdc0d14daed8a2f69ea8b60b0e85db8b83adf58d84bbeafe95a17d343ab55efaae571bb5148b62fc0ee12b04781323bf7af7d7e9693eec76 + languageName: node + linkType: hard + "throttle-debounce@npm:^3.0.1": version: 3.0.1 resolution: "throttle-debounce@npm:3.0.1" @@ -37200,6 +38752,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: ^6.5.0 + picomatch: ^4.0.3 + checksum: 0e33b8babff966c6ab86e9b825a350a6a98a63700fa0bb7ae6cf36a7770a508892383adc272f7f9d17aaf46a9d622b455e775b9949a3f951eaaf5dfb26331d44 + languageName: node + linkType: hard + "tinyrainbow@npm:^1.2.0": version: 1.2.0 resolution: "tinyrainbow@npm:1.2.0" @@ -37282,6 +38844,13 @@ __metadata: languageName: node linkType: hard +"toad-cache@npm:^3.7.0": + version: 3.7.0 + resolution: "toad-cache@npm:3.7.0" + checksum: d0f2092ab2c0f3355d3537c41b13888a12996f38080e6c39907e715eb382d997ccf61baab9e8eda3f202b6c07e304728106be3631c9fe3b6c001aaf15b7bdb8f + languageName: node + linkType: hard + "toggle-selection@npm:^1.0.6": version: 1.0.6 resolution: "toggle-selection@npm:1.0.6" @@ -37342,6 +38911,16 @@ __metadata: languageName: node linkType: hard +"tough-cookie@npm:~2.5.0": + version: 2.5.0 + resolution: "tough-cookie@npm:2.5.0" + dependencies: + psl: ^1.1.28 + punycode: ^2.1.1 + checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 + languageName: node + linkType: hard + "tr46@npm:^3.0.0": version: 3.0.0 resolution: "tr46@npm:3.0.0" @@ -37465,6 +39044,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 5b1ef89105654d93d67582308bd8dfe4bbf6874fccbcaa729b08fbb00a940fd4c691ca6d0d2b18c3c70878d9a7e503421b7cc473dbc3d0d54258b86401d4b15d + languageName: node + linkType: hard + "ts-checker-rspack-plugin@npm:^1.1.5": version: 1.1.5 resolution: "ts-checker-rspack-plugin@npm:1.1.5" @@ -37588,7 +39176,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.8.0, tslib@npm:^2.8.1": +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a @@ -37725,7 +39313,7 @@ __metadata: languageName: node linkType: hard -"tweetnacl@npm:^0.14.3": +"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 @@ -37990,6 +39578,21 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:8.49.0": + version: 8.49.0 + resolution: "typescript-eslint@npm:8.49.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.49.0 + "@typescript-eslint/parser": 8.49.0 + "@typescript-eslint/typescript-estree": 8.49.0 + "@typescript-eslint/utils": 8.49.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: fd91cffcf3c5de73a9ead2253dcb8516ed664fc9179d26c019e6be53f4d4429e280dd5c783c68789a4a2db34712e569468a6c9c7613fc918a310687ca53b91b1 + languageName: node + linkType: hard + "typescript-json-schema@npm:^0.64.0": version: 0.64.0 resolution: "typescript-json-schema@npm:0.64.0" @@ -38352,6 +39955,13 @@ __metadata: languageName: node linkType: hard +"universal-github-app-jwt@npm:^2.2.0": + version: 2.2.2 + resolution: "universal-github-app-jwt@npm:2.2.2" + checksum: 95c0801e69898aec15b42731b47e7a5a830dbe7e456ba84b66b9b78542d2e79a62d633424c98c58e6fe6b09fbad6951111cce7db85573955c14dd930ecda0ee4 + languageName: node + linkType: hard + "universal-user-agent@npm:^6.0.0": version: 6.0.1 resolution: "universal-user-agent@npm:6.0.1" @@ -38359,6 +39969,13 @@ __metadata: languageName: node linkType: hard +"universal-user-agent@npm:^7.0.0, universal-user-agent@npm:^7.0.2": + version: 7.0.3 + resolution: "universal-user-agent@npm:7.0.3" + checksum: c497e85f8b11eb8fa4dce584d7a39cc98710164959f494cafc3c269b51abb20fff269951838efd7424d15f6b3d001507f3cb8b52bb5676fdb642019dfd17e63e + languageName: node + linkType: hard + "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -38456,6 +40073,13 @@ __metadata: languageName: node linkType: hard +"url-join@npm:^5.0.0": + version: 5.0.0 + resolution: "url-join@npm:5.0.0" + checksum: 5921384a8ad4395b49ce4b50aa26efbc429cebe0bc8b3660ad693dd12fd859747b5369be0443e60e53a7850b2bc9d7d0687bcb94386662b40e743596bbf38101 + languageName: node + linkType: hard + "url-parse@npm:^1.5.10, url-parse@npm:^1.5.3": version: 1.5.10 resolution: "url-parse@npm:1.5.10" @@ -38473,6 +40097,13 @@ __metadata: languageName: node linkType: hard +"url-template@npm:^3.1.1": + version: 3.1.1 + resolution: "url-template@npm:3.1.1" + checksum: ac09daaeaec55a6b070b838ed161d66b050a46fc12ac251cb2db1ce356e786cfb117ee4391d943aaaa757971c509a0142b3cd83dfd8cc3d7b6d90a99d001a5f9 + languageName: node + linkType: hard + "url@npm:^0.11.0, url@npm:^0.11.4": version: 0.11.4 resolution: "url@npm:0.11.4" @@ -38646,25 +40277,25 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^11.0.0, uuid@npm:^11.0.2": - version: 11.0.5 - resolution: "uuid@npm:11.0.5" +"uuid@npm:11.1.0, uuid@npm:^11.1.0": + version: 11.1.0 + resolution: "uuid@npm:11.1.0" bin: uuid: dist/esm/bin/uuid - checksum: 8a8ed824c77ccc9387eed3049e75268a862379f0d41222716020743c438f31e9acfbe6495bd4cb1a7727c91fcf5ae20be40b306826a62c96f9ff42db48e8ed93 + checksum: 840f19758543c4631e58a29439e51b5b669d5f34b4dd2700b6a1d15c5708c7a6e0c3e2c8c4a2eae761a3a7caa7e9884d00c86c02622ba91137bd3deade6b4b4a languageName: node linkType: hard -"uuid@npm:^11.1.0": - version: 11.1.0 - resolution: "uuid@npm:11.1.0" +"uuid@npm:^11.0.0, uuid@npm:^11.0.2": + version: 11.0.5 + resolution: "uuid@npm:11.0.5" bin: uuid: dist/esm/bin/uuid - checksum: 840f19758543c4631e58a29439e51b5b669d5f34b4dd2700b6a1d15c5708c7a6e0c3e2c8c4a2eae761a3a7caa7e9884d00c86c02622ba91137bd3deade6b4b4a + checksum: 8a8ed824c77ccc9387eed3049e75268a862379f0d41222716020743c438f31e9acfbe6495bd4cb1a7727c91fcf5ae20be40b306826a62c96f9ff42db48e8ed93 languageName: node linkType: hard -"uuid@npm:^3.4.0": +"uuid@npm:^3.3.2, uuid@npm:^3.4.0": version: 3.4.0 resolution: "uuid@npm:3.4.0" bin: @@ -38791,6 +40422,17 @@ __metadata: languageName: node linkType: hard +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: ^1.0.0 + core-util-is: 1.0.2 + extsprintf: ^1.2.0 + checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea + languageName: node + linkType: hard + "vfile-message@npm:^3.0.0": version: 3.1.4 resolution: "vfile-message@npm:3.1.4" @@ -39154,7 +40796,7 @@ __metadata: languageName: node linkType: hard -"whatwg-fetch@npm:^3.6.0": +"whatwg-fetch@npm:^3.4.1, whatwg-fetch@npm:^3.6.0": version: 3.6.20 resolution: "whatwg-fetch@npm:3.6.20" checksum: c58851ea2c4efe5c2235f13450f426824cf0253c1d45da28f45900290ae602a20aff2ab43346f16ec58917d5562e159cd691efa368354b2e82918c2146a519c5 @@ -39577,6 +41219,22 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: eba51182400b9f35b017daa7f419f434424410691bbc5de4f4240cc830fdef906b504424992700dc047f16b4d99100a6f8b8b11175c193f38008e9c96322b6a5 + languageName: node + linkType: hard + +"yaml@npm:2.8.2": + version: 2.8.2 + resolution: "yaml@npm:2.8.2" + bin: + yaml: bin.mjs + checksum: 5ffd9f23bc7a450129cbd49dcf91418988f154ede10c83fd28ab293661ac2783c05da19a28d76a22cbd77828eae25d4bd7453f9a9fe2d287d085d72db46fd105 + languageName: node + linkType: hard + "yaml@npm:^1.10.0, yaml@npm:^1.10.2, yaml@npm:^1.7.2": version: 1.10.2 resolution: "yaml@npm:1.10.2" From 3b94d14dca7445e338deb943762432a9f0c38a44 Mon Sep 17 00:00:00 2001 From: Yi Cai Date: Fri, 19 Dec 2025 00:15:01 -0500 Subject: [PATCH 2/2] chore: update dynamic-plugins yarn.lock to match package.json version requirements --- dynamic-plugins/yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dynamic-plugins/yarn.lock b/dynamic-plugins/yarn.lock index a30e075786..5083ad3945 100644 --- a/dynamic-plugins/yarn.lock +++ b/dynamic-plugins/yarn.lock @@ -15168,9 +15168,9 @@ __metadata: languageName: node linkType: hard -"@red-hat-developer-hub/backstage-plugin-dynamic-home-page@npm:1.9.3": - version: 1.9.3 - resolution: "@red-hat-developer-hub/backstage-plugin-dynamic-home-page@npm:1.9.3" +"@red-hat-developer-hub/backstage-plugin-dynamic-home-page@npm:1.9.2": + version: 1.9.2 + resolution: "@red-hat-developer-hub/backstage-plugin-dynamic-home-page@npm:1.9.2" dependencies: "@backstage/catalog-client": ^1.11.0 "@backstage/catalog-model": ^1.7.5 @@ -15192,7 +15192,7 @@ __metadata: peerDependencies: react: 16.13.1 || ^17.0.0 || ^18.2.0 react-router-dom: 6.30.1 - checksum: 2c98507cd88ea3e5019b0c3f43c91101388587b0f7f7564e73fd7793ba3c96b9ecdaa045916618dc27fb4a4dd2c80d721a07e3b71f8aa98281e733f9d47c42ed + checksum: f3ddeb3ed84fc7e2a2c8662d94804a091b278ddccc9317e7d86998fe69b65d63c7149dffc9e0c6d87eae24aec60b31aab414657edd5c984d998514350fef6990 languageName: node linkType: hard @@ -36469,7 +36469,7 @@ __metadata: "@backstage/cli": ^0.34.1 "@janus-idp/cli": 3.6.1 "@mui/material": 5.18.0 - "@red-hat-developer-hub/backstage-plugin-dynamic-home-page": 1.9.3 + "@red-hat-developer-hub/backstage-plugin-dynamic-home-page": 1.9.2 typescript: 5.9.3 languageName: unknown linkType: soft