fix file content explorer, use getEntitySourceLocation

Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
alde
2021-04-19 13:58:31 -04:00
committed by Fredrik Adelöw
parent 57a10500cd
commit 9132deaa76
2 changed files with 12 additions and 8 deletions
@@ -33,7 +33,11 @@ import { aggregateCoverage, CoverageUtils } from './CoverageUtils';
import { Cobertura } from './converter/cobertura';
import { Jacoco } from './converter/jacoco';
import { Converter } from './converter';
import { EntityRef, parseEntityName } from '@backstage/catalog-model';
import {
EntityRef,
getEntitySourceLocation,
parseEntityName,
} from '@backstage/catalog-model';
export interface RouterOptions {
config: Config;
@@ -127,20 +131,20 @@ export const makeRouter = async (
throw new InputError('Need path query parameter');
}
const sourceLocation =
entityLookup.metadata.annotations?.['backstage.io/source-location'];
const sourceLocation = getEntitySourceLocation(entityLookup);
if (!sourceLocation) {
throw new InputError(
`No "backstage.io/source-location" annotation on entity ${entity}`,
);
}
const vcs = scm.byUrl(sourceLocation);
const vcs = scm.byUrl(sourceLocation.target);
if (!vcs) {
throw new InputError(`Unable to determine SCM from ${sourceLocation}`);
}
const scmTree = await urlReader.readTree(sourceLocation);
const scmTree = await urlReader.readTree(sourceLocation.target);
const scmFile = (await scmTree.files()).find(f => f.path === path);
if (!scmFile) {
res.status(400).json({
@@ -19,7 +19,7 @@ import { useApi } from '@backstage/core-api';
import { useEntity } from '@backstage/plugin-catalog-react';
import { useAsync } from 'react-use';
import { codeCoverageApiRef } from '../../api';
import { Progress } from '@backstage/core';
import { Progress, ResponseErrorPanel } from '@backstage/core';
import { Alert } from '@material-ui/lab';
import { makeStyles, Paper } from '@material-ui/core';
import { highlightLines } from './Highlighter';
@@ -95,11 +95,11 @@ export const FileContent = ({ filename, coverage }: Props) => {
return <Progress />;
}
if (error) {
return <Alert severity="error">{error.message}</Alert>;
return <ResponseErrorPanel error={error} />;
}
if (!value) {
return (
<Alert severity="error">
<Alert severity="warning">
Unable to retrieve file content for {filename}
</Alert>
);