UNPKG

@spotinst/spinnaker-deck

Version:

Spinnaker-Deck service, forked with support to Spotinst

83 lines (74 loc) 2.53 kB
import { IQService, module } from 'angular'; import { isEmpty } from 'lodash'; import { CIReader } from './CIReader'; import { Application, ApplicationDataSourceRegistry, navigationCategoryRegistry } from '../application'; import { SETTINGS } from '../config/settings'; import { ICiBuild } from './domain'; export const CI_DATASOURCE = 'spinnaker.ci.dataSource'; export const name = CI_DATASOURCE; module(CI_DATASOURCE, []).run([ '$q', ($q: IQService) => { if (!SETTINGS.feature.ci) { return; } const loadBuilds = (application: Application) => { const { repoType, repoProjectKey, repoSlug } = application.attributes; if (isEmpty(repoProjectKey) || isEmpty(repoType) || isEmpty(repoSlug)) { return $q.when([]); } return CIReader.getBuilds(repoType, repoProjectKey, repoSlug); }; const loadRunningBuilds = (application: Application) => { const { repoType, repoProjectKey, repoSlug } = application.attributes; if (isEmpty(repoProjectKey) || isEmpty(repoType) || isEmpty(repoSlug)) { return $q.when([]); } return CIReader.getRunningBuilds(repoType, repoProjectKey, repoSlug); }; navigationCategoryRegistry.register({ key: 'integration', label: 'Integration', icon: 'icon-ci-branch', iconName: 'spCIBranch', primary: true, order: 0, }); ApplicationDataSourceRegistry.registerDataSource({ key: 'integration', badge: 'runningBuilds', icon: 'icon-ci-branch', iconName: 'spCIBranch', category: 'integration', label: 'Integration', optional: true, lazy: true, description: 'Visibility into builds for pull requests and branches', requireConfiguredApp: true, defaultData: [], }); ApplicationDataSourceRegistry.registerDataSource({ key: 'builds', sref: '.builds', badge: 'runningBuilds', icon: 'icon-ci-build', iconName: 'spCIBuild', category: 'integration', label: 'Builds', lazy: true, requireConfiguredApp: true, requiresDataSource: 'integration', loader: loadBuilds, onLoad: (_: Application, data: ICiBuild) => $q.when(data), defaultData: [], }); ApplicationDataSourceRegistry.registerDataSource({ key: 'runningBuilds', visible: false, description: 'running builds', loader: loadRunningBuilds, onLoad: (_: Application, data: ICiBuild) => $q.when(data), defaultData: [], }); }, ]);