Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
Fredrik Adelöw
2022-08-19 15:01:04 +02:00
parent 37fe3f71b7
commit 0f668b58eb
8 changed files with 22 additions and 31 deletions
+12 -9
View File
@@ -28,28 +28,31 @@ import {
} from 'circleci-api';
import { createApiRef, DiscoveryApi } from '@backstage/core-plugin-api';
/** @public */
export { GitType };
/** @public */
export type { BuildWithSteps, BuildStepAction, BuildSummary };
/** @public */
export const circleCIApiRef = createApiRef<CircleCIApi>({
id: 'plugin.circleci.service',
});
const DEFAULT_PROXY_PATH = '/circleci/api';
type Options = {
discoveryApi: DiscoveryApi;
/**
* Path to use for requests via the proxy, defaults to /circleci/api
*/
proxyPath?: string;
};
/** @public */
export class CircleCIApi {
private readonly discoveryApi: DiscoveryApi;
private readonly proxyPath: string;
constructor(options: Options) {
constructor(options: {
discoveryApi: DiscoveryApi;
/**
* Path to use for requests via the proxy, defaults to /circleci/api
*/
proxyPath?: string;
}) {
this.discoveryApi = options.discoveryApi;
this.proxyPath = options.proxyPath ?? DEFAULT_PROXY_PATH;
}
+2 -1
View File
@@ -14,7 +14,8 @@
* limitations under the License.
*/
export { CircleCIApi, circleCIApiRef, GitType } from './CircleCIApi';
export type { GitType } from './CircleCIApi';
export { CircleCIApi, circleCIApiRef } from './CircleCIApi';
export type {
BuildWithSteps,
BuildStepAction,
@@ -24,9 +24,11 @@ import { Entity } from '@backstage/catalog-model';
import { useEntity } from '@backstage/plugin-catalog-react';
import { MissingAnnotationEmptyState } from '@backstage/core-components';
/** @public */
export const isCircleCIAvailable = (entity: Entity) =>
Boolean(entity.metadata.annotations?.[CIRCLECI_ANNOTATION]);
/** @public */
export const Router = () => {
const { entity } = useEntity();
+1
View File
@@ -14,4 +14,5 @@
* limitations under the License.
*/
/** @public */
export const CIRCLECI_ANNOTATION = 'circleci.com/project-slug';
+2
View File
@@ -23,6 +23,7 @@ import {
createRoutableExtension,
} from '@backstage/core-plugin-api';
/** @public */
export const circleCIPlugin = createPlugin({
id: 'circleci',
apis: [
@@ -34,6 +35,7 @@ export const circleCIPlugin = createPlugin({
],
});
/** @public */
export const EntityCircleCIContent = circleCIPlugin.provide(
createRoutableExtension({
name: 'EntityCircleCIContent',
+2
View File
@@ -16,10 +16,12 @@
import { createRouteRef, createSubRouteRef } from '@backstage/core-plugin-api';
/** @public */
export const circleCIRouteRef = createRouteRef({
id: 'circle-ci',
});
/** @public */
export const circleCIBuildRouteRef = createSubRouteRef({
id: 'circle-ci/build',
parent: circleCIRouteRef,