@seasketch/geoprocessing
Version:
Geoprocessing and reporting framework for SeaSketch 2.0
67 lines • 2.33 kB
JavaScript
import inquirer from "inquirer";
import { isinternalDatasource } from "../../src/index.js";
import { publishDatasources } from "../base/datasources/index.js";
import { getProjectClient } from "../base/project/projectClient.js";
// This is a standalone script used as a CLI command with a top-level function
const projectPath = process.argv[2];
const projectClient = getProjectClient(projectPath);
const internalDatasources = projectClient.datasources.filter((ds) => isinternalDatasource(ds));
const numDs = internalDatasources.length;
const publishAllAnswers = await publishAllQuestion(numDs);
if (publishAllAnswers.publish === "yes") {
await publishDatasources(projectClient);
}
else {
const dsAnswers = await datasourcesQuestion(internalDatasources);
await publishDatasources(projectClient, { matcher: dsAnswers.datasources });
}
export async function publishAllQuestion(numDs) {
return inquirer.prompt([
{
type: "list",
name: "publish",
message: `Do you want to publish all ${numDs} datasources at once?`,
default: "no",
choices: [
{
value: "no",
name: "No, let me choose",
},
{
value: "yes",
name: "Yes",
},
],
},
]);
}
export async function datasourcesQuestion(datasources) {
const datasourcesQuestion = await getDatasourcesQuestion(datasources);
const answer = await inquirer.prompt([
datasourcesQuestion,
]);
return answer;
}
export async function getDatasourcesQuestion(datasources) {
if (datasources.length === 0) {
console.error("No datasources found, exiting");
process.exit();
}
const datasourceQuestion = {
type: "checkbox",
name: "datasources",
message: "What datasources would you like to publish? (select as many as you want)",
choices: [],
};
return {
...datasourceQuestion,
choices: [
...datasourceQuestion.choices,
...datasources.map((ds) => ({
value: ds.datasourceId,
name: `${ds.datasourceId} - ${ds.geo_type}`,
})),
],
};
}
//# sourceMappingURL=publishData.js.map