sb-mig
Version:
CLI to rule the world. (and handle stuff related to Storyblok CMS)
44 lines (43 loc) • 1.67 kB
JavaScript
import { managementApi } from "../../api/managementApi.js";
import { compare, discoverDatasources, discoverManyDatasources, LOOKUP_TYPE, SCOPE, } from "../utils/discover.js";
export const syncProvidedDatasources = async (args, config) => {
const { datasources, dryRun } = args;
const allLocalDatasources = await discoverManyDatasources({
scope: SCOPE.local,
type: LOOKUP_TYPE.fileName,
fileNames: datasources,
});
const allExternalDatasources = await discoverManyDatasources({
scope: SCOPE.external,
type: LOOKUP_TYPE.fileName,
fileNames: datasources,
});
// #3: compare results, prefer local ones (so we have to create final external paths array and local array of things to sync from where)
const { local, external } = compare({
local: allLocalDatasources,
external: allExternalDatasources,
});
await managementApi.datasources.syncDatasources({
providedDatasources: [...local, ...external],
dryRun,
}, config);
};
export const syncAllDatasources = async (config, args = {}) => {
const { dryRun } = args;
const allLocalDatasources = await discoverDatasources({
scope: SCOPE.local,
type: LOOKUP_TYPE.fileName,
});
const allExternalDatasources = await discoverDatasources({
scope: SCOPE.external,
type: LOOKUP_TYPE.fileName,
});
const { local, external } = compare({
local: allLocalDatasources,
external: allExternalDatasources,
});
await managementApi.datasources.syncDatasources({
providedDatasources: [...local, ...external],
dryRun,
}, config);
};