badges-backend: drop support for defining badges in app config.

Signed-off-by: Andreas Stenius <andreas.stenius@svenskaspel.se>
This commit is contained in:
Andreas Stenius
2021-03-02 12:13:10 +01:00
committed by Fredrik Adelöw
parent d80bdf0324
commit 6a68e79217
8 changed files with 33 additions and 155 deletions
+1 -1
View File
@@ -16,7 +16,7 @@
import { Badge } from './types';
export const badges: Badge[] = [
export const createDefaultBadges = (): Badge[] => [
{
id: 'pingback',
kind: 'entity',
@@ -17,29 +17,31 @@
import { Logger } from 'winston';
import { makeBadge } from 'badge-maker';
import { BadgeBuilder, BadgeOptions } from './types';
import { Badge, BadgeConfig, BadgeStyle, BadgeStyles } from '../../types';
import { Badge, BadgeConfig, BadgeStyle, BADGE_STYLES } from '../../types';
import { interpolate } from '../../utils';
export class DefaultBadgeBuilder implements BadgeBuilder {
constructor(
private readonly logger: Logger,
private readonly config: BadgeConfig,
) {
for (const [badgeId, badge] of Object.entries(config)) {
if (badge) {
badge.id = badgeId;
private readonly badges: BadgeConfig = {};
constructor(private readonly logger: Logger, initBadges: Badge[]) {
for (const badge of initBadges) {
if (!badge.id) {
logger.warning(`badge without "id": ${JSON.stringify(badge, null, 2)}`);
} else {
this.badges[badge.id] = badge;
logger.info(`register ${badge.kind || 'entity'} badge: "${badge.id}"`);
}
}
}
public async getAllBadgeConfigs(): Promise<Badge[]> {
return Object.values(this.config);
return Object.values(this.badges);
}
public async getBadgeConfig(badgeId: string): Promise<Badge> {
return (
this.config[badgeId] ||
this.config.default ||
this.badges[badgeId] ||
this.badges.default ||
({
label: 'Unknown badge ID',
message: badgeId,
@@ -60,7 +62,7 @@ export class DefaultBadgeBuilder implements BadgeBuilder {
params.labelColor = badge.labelColor;
}
if (BadgeStyles.includes(badge.style as BadgeStyle)) {
if (BADGE_STYLES.includes(badge.style as BadgeStyle)) {
params.style = badge.style as BadgeStyle;
}
+4 -17
View File
@@ -25,7 +25,7 @@ import {
import { Entity } from '@backstage/catalog-model';
import { Config, JsonObject } from '@backstage/config';
import { BadgeBuilder, DefaultBadgeBuilder } from '../lib/BadgeBuilder';
import { Badge, BadgeConfig, BadgeStyle, BadgeStyles } from '../types';
import { Badge, BadgeStyle, BADGE_STYLES } from '../types';
export interface RouterOptions {
badgeBuilder?: BadgeBuilder;
@@ -42,22 +42,9 @@ export async function createRouter(
const logger = options.logger.child({ plugin: 'badges' });
const title = options.config.getString('app.title') || 'Backstage';
const catalogUrl = `${options.config.getString('app.baseUrl')}/catalog`;
const badgesConfig = (options.config.getOptional('badges') ??
{}) as BadgeConfig;
for (const badge of options.badges || []) {
if (!badge.id) {
logger.warning(`badge without "id": ${JSON.stringify(badge, null, 2)}`);
} else if (!badgesConfig[badge.id]) {
badgesConfig[badge.id] = badge;
logger.info(`register builtin badge: ${badge.id}`);
} else {
logger.info(`builtin badge replaced from configuration: ${badge.id}`);
}
}
const badgeBuilder =
options.badgeBuilder || new DefaultBadgeBuilder(logger, badgesConfig);
options.badgeBuilder ||
new DefaultBadgeBuilder(logger, options.badges || []);
router.get('/entity/:namespace/:kind/:name/badge-specs', async (req, res) => {
const entityUri = getEntityUri(req.params);
@@ -122,7 +109,7 @@ export async function createRouter(
format = 'application/json';
}
if (BadgeStyles.includes(req.query.style as BadgeStyle)) {
if (BADGE_STYLES.includes(req.query.style as BadgeStyle)) {
badge.style = req.query.style as BadgeStyle;
}
+2 -2
View File
@@ -14,14 +14,14 @@
* limitations under the License.
*/
export const BadgeStyles = [
export const BADGE_STYLES = [
'plastic',
'flat',
'flat-square',
'for-the-badge',
'social',
] as const;
export type BadgeStyle = typeof BadgeStyles[number];
export type BadgeStyle = typeof BADGE_STYLES[number];
export interface Badge {
/** Unique name for the badge. */