diff --git a/plugins/github-release-manager/dev/index.tsx b/plugins/github-release-manager/dev/index.tsx
index 1b5236b920..b6897e2a9b 100644
--- a/plugins/github-release-manager/dev/index.tsx
+++ b/plugins/github-release-manager/dev/index.tsx
@@ -16,6 +16,7 @@
import React from 'react';
import { createDevApp } from '@backstage/dev-utils';
+import { Alert } from '@material-ui/lab';
import {
gitHubReleaseManagerPlugin,
@@ -29,19 +30,69 @@ function DevWrapper({ children }: { children: React.ReactNode }) {
createDevApp()
.registerPlugin(gitHubReleaseManagerPlugin)
.addPage({
- title: 'Page 1',
+ title: 'Dynamic',
+ element: (
+ <>
+ Configure via select inputs
+
+
+
+
+ >
+ ),
+ })
+ .addPage({
+ title: 'Static',
element: (
-
+ Statically configured via props
+
+
),
})
.addPage({
- title: 'Page 2',
+ title: 'Omit',
element: (
- {' '}
-
+ Optionally omit components
+
+ {
+ // eslint-disable-next-line no-console
+ console.log(
+ 'Custom success callback for Create RC',
+ comparisonUrl,
+ createdTag,
+ gitHubReleaseName,
+ gitHubReleaseUrl,
+ previousTag,
+ );
+ },
+ },
+ promoteRc: { omit: true },
+ patch: { omit: true },
+ }}
+ />
),
})
diff --git a/plugins/github-release-manager/src/GitHubReleaseManager.tsx b/plugins/github-release-manager/src/GitHubReleaseManager.tsx
index be7eee982a..1160016a66 100644
--- a/plugins/github-release-manager/src/GitHubReleaseManager.tsx
+++ b/plugins/github-release-manager/src/GitHubReleaseManager.tsx
@@ -20,6 +20,7 @@ import { Alert } from '@material-ui/lab';
import { useApi, ContentHeader } from '@backstage/core';
import {
+ ComponentConfig,
ComponentConfigCreateRc,
ComponentConfigPatch,
ComponentConfigPromoteRc,
@@ -36,28 +37,32 @@ import { useQueryHandler } from './hooks/useQueryHandler';
import { useStyles } from './styles/styles';
export interface GitHubReleaseManagerProps {
+ project?: Omit;
components?: {
- default?: {
- createRc?: ComponentConfigCreateRc;
- promoteRc?: ComponentConfigPromoteRc;
- patch?: ComponentConfigPatch;
- };
+ info?: Pick, 'omit'>;
+ createRc?: ComponentConfigCreateRc;
+ promoteRc?: ComponentConfigPromoteRc;
+ patch?: ComponentConfigPatch;
};
}
-export function GitHubReleaseManager({
- components,
-}: GitHubReleaseManagerProps) {
+export function GitHubReleaseManager(props: GitHubReleaseManagerProps) {
const pluginApiClient = useApi(githubReleaseManagerApiRef);
const classes = useStyles();
const { getParsedQuery } = useQueryHandler();
const { parsedQuery } = getParsedQuery();
- const project: Project = {
- owner: parsedQuery.owner ?? '',
- repo: parsedQuery.repo ?? '',
- versioningStrategy: parsedQuery.versioningStrategy ?? 'semver',
- };
+ const project: Project = isProjectValid(props.project)
+ ? {
+ ...props.project,
+ isProvidedViaProps: true,
+ }
+ : {
+ owner: parsedQuery.owner ?? '',
+ repo: parsedQuery.repo ?? '',
+ versioningStrategy: parsedQuery.versioningStrategy ?? 'semver',
+ isProvidedViaProps: false,
+ };
const usernameResponse = useAsync(() =>
pluginApiClient.getUsername({ owner: project.owner, repo: project.repo }),
@@ -85,7 +90,7 @@ export function GitHubReleaseManager({
- {isProjectValid(project) && }
+ {isProjectValid(project) && }
diff --git a/plugins/github-release-manager/src/cards/Cards.tsx b/plugins/github-release-manager/src/cards/Cards.tsx
index 52a44ecd8b..f39697b664 100644
--- a/plugins/github-release-manager/src/cards/Cards.tsx
+++ b/plugins/github-release-manager/src/cards/Cards.tsx
@@ -94,32 +94,34 @@ export function Cards({
)}
-
+ {components?.info?.omit !== true && (
+
+ )}
- {components?.default?.createRc?.omit !== true && (
+ {components?.createRc?.omit !== true && (
)}
- {components?.default?.promoteRc?.omit !== true && (
+ {components?.promoteRc?.omit !== true && (
)}
- {components?.default?.patch?.omit !== true && (
+ {components?.patch?.omit !== true && (
)}
diff --git a/plugins/github-release-manager/src/cards/projectForm/Owner.tsx b/plugins/github-release-manager/src/cards/projectForm/Owner.tsx
index 5e7d5b2f30..8f67038697 100644
--- a/plugins/github-release-manager/src/cards/projectForm/Owner.tsx
+++ b/plugins/github-release-manager/src/cards/projectForm/Owner.tsx
@@ -46,7 +46,12 @@ export function Owner({ username }: { username: string }) {
.includes(project.owner);
return (
-
+
{loading ? (
) : (
diff --git a/plugins/github-release-manager/src/cards/projectForm/Repo.tsx b/plugins/github-release-manager/src/cards/projectForm/Repo.tsx
index fb05783e3e..4c7b995c44 100644
--- a/plugins/github-release-manager/src/cards/projectForm/Repo.tsx
+++ b/plugins/github-release-manager/src/cards/projectForm/Repo.tsx
@@ -52,7 +52,12 @@ export function Repo() {
const customRepoFromUrl = !repositories.concat(['']).includes(project.repo);
return (
-
+
{loading ? (
) : (
diff --git a/plugins/github-release-manager/src/cards/projectForm/VersioningStrategy.tsx b/plugins/github-release-manager/src/cards/projectForm/VersioningStrategy.tsx
index 23d42009df..ebbee5b419 100644
--- a/plugins/github-release-manager/src/cards/projectForm/VersioningStrategy.tsx
+++ b/plugins/github-release-manager/src/cards/projectForm/VersioningStrategy.tsx
@@ -36,7 +36,7 @@ export function VersioningStrategy() {
useEffect(() => {
const { parsedQuery } = getParsedQuery();
- if (!parsedQuery.versioningStrategy) {
+ if (!parsedQuery.versioningStrategy && !project.isProvidedViaProps) {
const { queryParams } = getQueryParamsWithUpdates({
updates: [
{ key: 'versioningStrategy', value: project.versioningStrategy },
@@ -48,7 +48,11 @@ export function VersioningStrategy() {
}, []); // eslint-disable-line react-hooks/exhaustive-deps
return (
-
+
Calendar strategy
(undefined);
diff --git a/plugins/github-release-manager/src/test-helpers/test-helpers.test.ts b/plugins/github-release-manager/src/test-helpers/test-helpers.test.ts
index 293bf01891..fb2735182e 100644
--- a/plugins/github-release-manager/src/test-helpers/test-helpers.test.ts
+++ b/plugins/github-release-manager/src/test-helpers/test-helpers.test.ts
@@ -52,6 +52,7 @@ describe('testHelpers', () => {
},
"mockBumpedTag": "rc-2020.01.01_1337",
"mockCalverProject": Object {
+ "isProvidedViaProps": false,
"owner": "mock_owner",
"repo": "mock_repo",
"versioningStrategy": "calver",
@@ -112,6 +113,7 @@ describe('testHelpers', () => {
"sha": "mock_sha_selected_patch_commit",
},
"mockSemverProject": Object {
+ "isProvidedViaProps": false,
"owner": "mock_owner",
"repo": "mock_repo",
"versioningStrategy": "semver",
diff --git a/plugins/github-release-manager/src/test-helpers/test-helpers.ts b/plugins/github-release-manager/src/test-helpers/test-helpers.ts
index 80200e2ff0..19e3c57184 100644
--- a/plugins/github-release-manager/src/test-helpers/test-helpers.ts
+++ b/plugins/github-release-manager/src/test-helpers/test-helpers.ts
@@ -31,12 +31,14 @@ export const mockSemverProject: Project = {
owner: mockOwner,
repo: mockRepo,
versioningStrategy: 'semver',
+ isProvidedViaProps: false,
};
export const mockCalverProject: Project = {
owner: mockOwner,
repo: mockRepo,
versioningStrategy: 'calver',
+ isProvidedViaProps: false,
};
export const mockSearchCalver = `?versioningStrategy=${mockCalverProject.versioningStrategy}&owner=${mockCalverProject.owner}&repo=${mockCalverProject.repo}`;
diff --git a/plugins/github-release-manager/src/types/types.ts b/plugins/github-release-manager/src/types/types.ts
index a92200614d..84a27add68 100644
--- a/plugins/github-release-manager/src/types/types.ts
+++ b/plugins/github-release-manager/src/types/types.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-interface ComponentConfig {
+export interface ComponentConfig {
successCb?: (args: Args) => Promise | void;
omit?: boolean;
}