From 68fe248d6326aee62bce7f042f2903186a2daa87 Mon Sep 17 00:00:00 2001 From: Erik Engervall Date: Sun, 18 Apr 2021 18:22:09 +0200 Subject: [PATCH] Slightly improve types Signed-off-by: Erik Engervall --- plugins/github-release-manager/README.md | 10 +++++ plugins/github-release-manager/dev/index.tsx | 41 ++++++++++++++----- .../src/cards/Cards.tsx | 8 ++-- .../github-release-manager/src/types/types.ts | 25 ++++++----- 4 files changed, 59 insertions(+), 25 deletions(-) diff --git a/plugins/github-release-manager/README.md b/plugins/github-release-manager/README.md index 075068c51a..43c842bc26 100644 --- a/plugins/github-release-manager/README.md +++ b/plugins/github-release-manager/README.md @@ -46,4 +46,14 @@ Looking at the flow above, a common release lifecycle could be: ## Usage +### Importing + The plugin exports a single full-page extension `GitHubReleaseManagerPage`, which one can add to an app like a usual top-level tool on a dedicated route. + +### Configuration + +The plugin is configurable either via props or the select elements on the page. + +If project configuration is provided via props, the select elements are disabled. It is also possible to omit components from the page via props, as well as attaching callbacks for successful executions. + +See the plugin's dev folder (`dev/index.tsx`) to see some examples. diff --git a/plugins/github-release-manager/dev/index.tsx b/plugins/github-release-manager/dev/index.tsx index b6897e2a9b..bca24d56a4 100644 --- a/plugins/github-release-manager/dev/index.tsx +++ b/plugins/github-release-manager/dev/index.tsx @@ -16,12 +16,13 @@ import React from 'react'; import { createDevApp } from '@backstage/dev-utils'; -import { Alert } from '@material-ui/lab'; +import { Typography } from '@material-ui/core'; import { gitHubReleaseManagerPlugin, GitHubReleaseManagerPage, } from '../src/plugin'; +import { InfoCardPlus } from '../src/components/InfoCardPlus'; function DevWrapper({ children }: { children: React.ReactNode }) { return
{children}
; @@ -31,21 +32,30 @@ createDevApp() .registerPlugin(gitHubReleaseManagerPlugin) .addPage({ title: 'Dynamic', + path: '/dynamic', element: ( - <> - Configure via select inputs + + + Dev notes + Configure plugin via select inputs + - - - - + + ), }) .addPage({ title: 'Static', + path: '/static', element: ( - Statically configured via props + + Dev notes + + Configure plugin statically by passing props to the + `GitHubReleaseManagerPage` component + + - Optionally omit components + + Dev notes + Each components can be omitted + Success callbacks can also be added + diff --git a/plugins/github-release-manager/src/cards/Cards.tsx b/plugins/github-release-manager/src/cards/Cards.tsx index f39697b664..5773717cd8 100644 --- a/plugins/github-release-manager/src/cards/Cards.tsx +++ b/plugins/github-release-manager/src/cards/Cards.tsx @@ -94,14 +94,14 @@ export function Cards({ )} - {components?.info?.omit !== true && ( + {!components?.info?.omit && ( )} - {components?.createRc?.omit !== true && ( + {!components?.createRc?.omit && ( )} - {components?.promoteRc?.omit !== true && ( + {!components?.promoteRc?.omit && ( )} - {components?.patch?.omit !== true && ( + {!components?.patch?.omit && ( { - successCb?: (args: Args) => Promise | void; - omit?: boolean; -} +export type ComponentConfig = + | { + omit?: void; + successCb?: (args: Args) => Promise | void; + } + | { + omit: boolean; + successCb?: void; + }; -interface ComponentConfigCreateRcSuccessCbArgs { +interface CreateRcSuccessCbArgs { gitHubReleaseUrl: string; gitHubReleaseName: string | null; comparisonUrl: string; previousTag?: string; createdTag: string; } -export type ComponentConfigCreateRc = ComponentConfig; +export type ComponentConfigCreateRc = ComponentConfig; -interface ComponentConfigPromoteRcSuccessCbArgs { +interface PromoteRcSuccessCbArgs { gitHubReleaseUrl: string; gitHubReleaseName: string | null; previousTagUrl: string; @@ -36,9 +41,9 @@ interface ComponentConfigPromoteRcSuccessCbArgs { updatedTagUrl: string; updatedTag: string; } -export type ComponentConfigPromoteRc = ComponentConfig; +export type ComponentConfigPromoteRc = ComponentConfig; -interface ComponentConfigPatchSuccessCbArgs { +interface PatchSuccessCbArgs { updatedReleaseUrl: string; updatedReleaseName: string | null; previousTag: string; @@ -46,7 +51,7 @@ interface ComponentConfigPatchSuccessCbArgs { patchCommitUrl: string; patchCommitMessage: string; } -export type ComponentConfigPatch = ComponentConfig; +export type ComponentConfigPatch = ComponentConfig; export interface ResponseStep { message: string | React.ReactNode;