1
0
Fork 0
cautious-journey/src/sync.ts

55 lines
1.3 KiB
TypeScript
Raw Normal View History

import { FlagLabel, getLabelNames, StateLabel } from './labels';
import { Remote } from './remote';
// TODO: turn this back on/remove the disable pragma
/* eslint-disable no-console */
export interface SyncOptions {
flags: Array<FlagLabel>;
project: string;
remote: Remote;
states: Array<StateLabel>;
}
export async function syncIssues(options: SyncOptions): Promise<unknown> {
const issues = await options.remote.listIssues({
project: options.project,
});
for (const issue of issues) {
2020-08-13 00:24:05 +00:00
console.log('issue:', issue);
}
return undefined;
}
export async function syncLabels(options: SyncOptions): Promise<unknown> {
const labels = await options.remote.listLabels({
project: options.project,
});
2020-08-13 00:24:05 +00:00
const existingLabels = new Set(labels.map((l) => l.name));
const expectedLabels = getLabelNames(options.flags, options.states);
2020-08-13 00:24:05 +00:00
for (const label of labels) {
2020-08-13 00:24:05 +00:00
const exists = existingLabels.has(label.name);
const expected = expectedLabels.has(label.name);
if (exists) {
if (expected) {
console.log('update label:', label);
} else {
console.log('remove label:', label);
}
} else {
if (expected) {
console.log('create label:', label);
} else {
// skip
}
}
}
return undefined;
}