@dittowords/cli 2.7.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +150 -137
  2. package/bin/add-project.js +5 -7
  3. package/bin/add-project.js.map +1 -1
  4. package/bin/api.js +0 -5
  5. package/bin/api.js.map +1 -1
  6. package/bin/config.js +38 -11
  7. package/bin/config.js.map +1 -1
  8. package/bin/ditto.js +66 -57
  9. package/bin/ditto.js.map +1 -1
  10. package/bin/http/fetchVariants.js +26 -0
  11. package/bin/http/fetchVariants.js.map +1 -0
  12. package/bin/init/init.js +17 -6
  13. package/bin/init/init.js.map +1 -1
  14. package/bin/init/project.js +38 -45
  15. package/bin/init/project.js.map +1 -1
  16. package/bin/init/token.js +22 -20
  17. package/bin/init/token.js.map +1 -1
  18. package/bin/pull.js +142 -193
  19. package/bin/pull.js.map +1 -1
  20. package/bin/remove-project.js +2 -7
  21. package/bin/remove-project.js.map +1 -1
  22. package/bin/utils/cleanFileName.js +11 -0
  23. package/bin/utils/cleanFileName.js.map +1 -0
  24. package/bin/utils/generateJsDriver.js +56 -0
  25. package/bin/utils/generateJsDriver.js.map +1 -0
  26. package/bin/utils/getSelectedProjects.js +3 -18
  27. package/bin/utils/getSelectedProjects.js.map +1 -1
  28. package/bin/utils/projectsToText.js +10 -1
  29. package/bin/utils/projectsToText.js.map +1 -1
  30. package/bin/utils/promptForProject.js +2 -3
  31. package/bin/utils/promptForProject.js.map +1 -1
  32. package/bin/utils/quit.js +10 -0
  33. package/bin/utils/quit.js.map +1 -0
  34. package/lib/add-project.ts +6 -9
  35. package/lib/api.ts +0 -5
  36. package/lib/config.ts +57 -19
  37. package/lib/ditto.ts +74 -58
  38. package/lib/http/fetchVariants.ts +30 -0
  39. package/lib/init/init.ts +38 -6
  40. package/lib/init/project.test.ts +3 -3
  41. package/lib/init/project.ts +47 -58
  42. package/lib/init/token.ts +17 -16
  43. package/lib/pull.ts +205 -261
  44. package/lib/remove-project.ts +2 -8
  45. package/lib/types.ts +24 -3
  46. package/lib/utils/cleanFileName.ts +6 -0
  47. package/lib/utils/generateJsDriver.ts +68 -0
  48. package/lib/utils/getSelectedProjects.ts +5 -24
  49. package/lib/utils/projectsToText.ts +11 -1
  50. package/lib/utils/promptForProject.ts +2 -3
  51. package/lib/utils/quit.ts +5 -0
  52. package/package.json +1 -1
  53. package/tsconfig.json +2 -1
package/bin/ditto.js CHANGED
@@ -10,82 +10,91 @@ const commander_1 = require("commander");
10
10
  require("v8-compile-cache");
11
11
  const init_1 = require("./init/init");
12
12
  const pull_1 = require("./pull");
13
+ const quit_1 = require("./utils/quit");
13
14
  const add_project_1 = __importDefault(require("./add-project"));
14
15
  const remove_project_1 = __importDefault(require("./remove-project"));
15
16
  const processMetaOption_1 = __importDefault(require("./utils/processMetaOption"));
16
- /**
17
- * Catch and report unexpected error.
18
- * @param {any} error The thrown error object.
19
- * @returns {void}
20
- */
21
- function quit(exitCode = 2) {
22
- console.log("\nExiting Ditto CLI...\n");
23
- process.exitCode = exitCode;
24
- process.exit();
25
- }
17
+ const COMMANDS = [
18
+ {
19
+ name: "pull",
20
+ description: "Sync copy from Ditto into the current working directory",
21
+ },
22
+ {
23
+ name: "project",
24
+ description: "Add a Ditto project to sync copy from",
25
+ commands: [
26
+ {
27
+ name: "add",
28
+ description: "Add a Ditto project to sync copy from",
29
+ },
30
+ {
31
+ name: "remove",
32
+ description: "Stop syncing copy from a Ditto project",
33
+ },
34
+ ],
35
+ },
36
+ ];
26
37
  const setupCommands = () => {
27
38
  commander_1.program.name("ditto-cli");
28
- commander_1.program
29
- .command("pull")
30
- .description("Sync copy from Ditto into working directory")
31
- .action(() => checkInit("pull"));
32
- const projectDescription = "Add a Ditto project to sync copy from";
33
- const projectCommand = commander_1.program
34
- .command("project")
35
- .description(projectDescription)
36
- .action(() => checkInit("project"));
37
- projectCommand
38
- .command("add")
39
- .description(projectDescription)
40
- .action(() => checkInit("project"));
41
- projectCommand
42
- .command("remove")
43
- .description("Stop syncing copy from a Ditto project")
44
- .action(() => checkInit("project remove"));
39
+ COMMANDS.forEach((config) => {
40
+ const cmd = commander_1.program
41
+ .command(config.name)
42
+ .description(config.description)
43
+ .action(() => executeCommand(config.name));
44
+ if ("commands" in config) {
45
+ config.commands.forEach((nestedCommand) => {
46
+ cmd
47
+ .command(nestedCommand.name)
48
+ .description(nestedCommand.description)
49
+ .action(() => executeCommand(`${config.name} ${nestedCommand.name}`));
50
+ });
51
+ }
52
+ });
45
53
  };
46
54
  const setupOptions = () => {
47
- commander_1.program.option("-m, --meta <data...>", "Optional metadata for this command to send arbitrary data to the backend. Ex: -m githubActionRequest:true trigger:manual");
55
+ commander_1.program.option("-m, --meta <data...>", "Include arbitrary data in requests to the Ditto API. Ex: -m githubActionRequest:true trigger:manual");
48
56
  };
49
- const checkInit = async (command) => {
50
- if ((0, init_1.needsInit)() && command !== "project remove") {
57
+ const executeCommand = async (command) => {
58
+ const needsInitialization = (0, init_1.needsTokenOrSource)();
59
+ if (needsInitialization) {
51
60
  try {
52
61
  await (0, init_1.init)();
53
- if (command === "pull")
54
- main(); // re-run to actually pull text now that init is finished
55
62
  }
56
63
  catch (error) {
57
- quit();
64
+ (0, quit_1.quit)("Exiting Ditto CLI...");
65
+ return;
58
66
  }
59
67
  }
60
- else {
61
- const { meta } = commander_1.program.opts();
62
- switch (command) {
63
- case "pull":
64
- (0, pull_1.pull)({ meta: (0, processMetaOption_1.default)(meta) });
65
- break;
66
- case "project":
67
- case "project add":
68
- (0, add_project_1.default)();
69
- break;
70
- case "project remove":
71
- (0, remove_project_1.default)();
72
- break;
73
- case "none":
74
- setupCommands();
75
- commander_1.program.help();
76
- break;
77
- default:
78
- quit();
68
+ const { meta } = commander_1.program.opts();
69
+ switch (command) {
70
+ case "none":
71
+ case "pull": {
72
+ return (0, pull_1.pull)({ meta: (0, processMetaOption_1.default)(meta) });
73
+ }
74
+ case "project":
75
+ case "project add": {
76
+ // initialization already includes the selection of a source,
77
+ // so if `project add` is called during initialization, don't
78
+ // prompt the user to select a source again
79
+ if (needsInitialization)
80
+ return;
81
+ return (0, add_project_1.default)();
82
+ }
83
+ case "project remove": {
84
+ return (0, remove_project_1.default)();
85
+ }
86
+ default: {
87
+ (0, quit_1.quit)("Exiting Ditto CLI...");
88
+ return;
79
89
  }
80
90
  }
81
91
  };
82
92
  const main = async () => {
93
+ setupCommands();
94
+ setupOptions();
83
95
  if (process.argv.length <= 2 && process.argv[1].includes("ditto-cli")) {
84
- await checkInit("none");
85
- }
86
- else {
87
- setupCommands();
88
- setupOptions();
96
+ await executeCommand("none");
97
+ return;
89
98
  }
90
99
  commander_1.program.parse(process.argv);
91
100
  };
package/bin/ditto.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ditto.js","sourceRoot":"","sources":["../lib/ditto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ditto.js","sourceRoot":"","sources":["../lib/ditto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchVariants = void 0;
7
+ const api_1 = __importDefault(require("../api"));
8
+ async function fetchVariants(source, options = {}) {
9
+ if (!source.variants) {
10
+ return null;
11
+ }
12
+ const { shouldFetchComponentLibrary, validProjects } = source;
13
+ const config = {
14
+ params: { ...options?.meta },
15
+ };
16
+ // if we're not syncing from the component library, then we pass the project ids
17
+ // to limit the list of returned variants to only those that are relevant for the
18
+ // specified projects
19
+ if (validProjects.length && !shouldFetchComponentLibrary) {
20
+ config.params.projectIds = validProjects.map(({ id }) => id);
21
+ }
22
+ const { data } = await api_1.default.get("/variants", config);
23
+ return data;
24
+ }
25
+ exports.fetchVariants = fetchVariants;
26
+ //# sourceMappingURL=fetchVariants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchVariants.js","sourceRoot":"","sources":["../../lib/http/fetchVariants.ts"],"names":[],"mappings":";;;;;;AACA,iDAAyB;AAIlB,KAAK,UAAU,aAAa,CACjC,MAAyB,EACzB,UAAuB,EAAE;IAEzB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,2BAA2B,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE9D,MAAM,MAAM,GAAuB;QACjC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE;KAC7B,CAAC;IAEF,gFAAgF;IAChF,iFAAiF;IACjF,qBAAqB;IACrB,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,2BAA2B,EAAE;QACxD,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KAC9D;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAG,CAAC,GAAG,CAAsB,WAAW,EAAE,MAAM,CAAC,CAAC;IAEzE,OAAO,IAAI,CAAC;AACd,CAAC;AAxBD,sCAwBC"}
package/bin/init/init.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.init = exports.needsInit = void 0;
6
+ exports.init = exports.needsTokenOrSource = void 0;
7
7
  // Related to initializing a user/environment to ditto.
8
8
  // expected to be run once per project.
9
9
  const boxen_1 = __importDefault(require("boxen"));
@@ -11,9 +11,11 @@ const chalk_1 = __importDefault(require("chalk"));
11
11
  const project_1 = require("./project");
12
12
  const token_1 = require("./token");
13
13
  const config_1 = __importDefault(require("../config"));
14
+ const output_1 = __importDefault(require("../output"));
14
15
  const sourcesToText_1 = __importDefault(require("../utils/sourcesToText"));
15
- const needsInit = () => (0, token_1.needsToken)() || (0, project_1.needsSource)();
16
- exports.needsInit = needsInit;
16
+ const quit_1 = require("../utils/quit");
17
+ const needsTokenOrSource = () => (0, token_1.needsToken)() || (0, project_1.needsSource)();
18
+ exports.needsTokenOrSource = needsTokenOrSource;
17
19
  function welcome() {
18
20
  const msg = chalk_1.default.white(`${chalk_1.default.bold("Welcome to the", chalk_1.default.magentaBright("Ditto CLI"))}.
19
21
 
@@ -25,9 +27,18 @@ const init = async () => {
25
27
  if ((0, token_1.needsToken)()) {
26
28
  await (0, token_1.collectAndSaveToken)();
27
29
  }
28
- const { hasSourceData, validProjects, shouldFetchComponentLibrary } = config_1.default.parseSourceInformation();
30
+ const { hasSourceData, validProjects, shouldFetchComponentLibrary, hasTopLevelComponentsField, hasTopLevelProjectsField, } = config_1.default.parseSourceInformation();
31
+ if (hasTopLevelProjectsField) {
32
+ return (0, quit_1.quit)(`${output_1.default.errorText(`Support for ${output_1.default.warnText("projects")} as a top-level field has been removed; please configure ${output_1.default.warnText("sources.projects")} instead.`)}
33
+ See ${output_1.default.url("https://github.com/dittowords/cli")} for more information.`);
34
+ }
35
+ if (hasTopLevelComponentsField) {
36
+ return (0, quit_1.quit)(`${output_1.default.errorText("Support for `components` as a top-level field has been removed; please configure `sources.components` instead.")}
37
+ See ${output_1.default.url("https://github.com/dittowords/cli")} for more information.`);
38
+ }
29
39
  if (!hasSourceData) {
30
- await (0, project_1.collectAndSaveProject)(true);
40
+ console.log(`Looks like there are no Ditto sources selected for your current directory: ${output_1.default.info(process.cwd())}.`);
41
+ await (0, project_1.collectAndSaveSource)({ initialize: true, components: true });
31
42
  return;
32
43
  }
33
44
  const message = "You're currently set up to sync text from " +
@@ -35,5 +46,5 @@ const init = async () => {
35
46
  console.log(message);
36
47
  };
37
48
  exports.init = init;
38
- exports.default = { needsInit: exports.needsInit, init: exports.init };
49
+ exports.default = { init: exports.init };
39
50
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../lib/init/init.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuD;AACvD,uCAAuC;AACvC,kDAA0B;AAC1B,kDAA0B;AAG1B,uCAA+D;AAC/D,mCAA0D;AAE1D,uDAA+B;AAC/B,2EAAmD;AAE5C,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAU,GAAE,IAAI,IAAA,qBAAW,GAAE,CAAC;AAAhD,QAAA,SAAS,aAAuC;AAE7D,SAAS,OAAO;IACd,MAAM,GAAG,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CACnC,gBAAgB,EAChB,eAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CACjC;;6BAE0B,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAEM,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IAC7B,OAAO,EAAE,CAAC;IAEV,IAAI,IAAA,kBAAU,GAAE,EAAE;QAChB,MAAM,IAAA,2BAAmB,GAAE,CAAC;KAC7B;IAED,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,2BAA2B,EAAE,GACjE,gBAAM,CAAC,sBAAsB,EAAE,CAAC;IAElC,IAAI,CAAC,aAAa,EAAE;QAClB,MAAM,IAAA,+BAAqB,EAAC,IAAI,CAAC,CAAC;QAClC,OAAO;KACR;IAED,MAAM,OAAO,GACX,4CAA4C;QAC5C,IAAA,uBAAa,EAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC;AApBW,QAAA,IAAI,QAoBf;AAEF,kBAAe,EAAE,SAAS,EAAT,iBAAS,EAAE,IAAI,EAAJ,YAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../lib/init/init.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuD;AACvD,uCAAuC;AACvC,kDAA0B;AAC1B,kDAA0B;AAG1B,uCAA8D;AAC9D,mCAA0D;AAE1D,uDAA+B;AAC/B,uDAA+B;AAC/B,2EAAmD;AACnD,wCAAqC;AAE9B,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAU,GAAE,IAAI,IAAA,qBAAW,GAAE,CAAC;AAAzD,QAAA,kBAAkB,sBAAuC;AAEtE,SAAS,OAAO;IACd,MAAM,GAAG,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CACnC,gBAAgB,EAChB,eAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CACjC;;6BAE0B,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAEM,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IAC7B,OAAO,EAAE,CAAC;IAEV,IAAI,IAAA,kBAAU,GAAE,EAAE;QAChB,MAAM,IAAA,2BAAmB,GAAE,CAAC;KAC7B;IAED,MAAM,EACJ,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,GACzB,GAAG,gBAAM,CAAC,sBAAsB,EAAE,CAAC;IAEpC,IAAI,wBAAwB,EAAE;QAC5B,OAAO,IAAA,WAAI,EAAC,GAAG,gBAAM,CAAC,SAAS,CAC7B,eAAe,gBAAM,CAAC,QAAQ,CAC5B,UAAU,CACX,4DAA4D,gBAAM,CAAC,QAAQ,CAC1E,kBAAkB,CACnB,WAAW,CACb;MACC,gBAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,wBAAwB,CAAC,CAAC;KAC5E;IAED,IAAI,0BAA0B,EAAE;QAC9B,OAAO,IAAA,WAAI,EACT,GAAG,gBAAM,CAAC,SAAS,CACjB,gHAAgH,CACjH;MACD,gBAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,wBAAwB,CACxE,CAAC;KACH;IAED,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,CAAC,GAAG,CACT,8EAA8E,gBAAM,CAAC,IAAI,CACvF,OAAO,CAAC,GAAG,EAAE,CACd,GAAG,CACL,CAAC;QACF,MAAM,IAAA,8BAAoB,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO;KACR;IAED,MAAM,OAAO,GACX,4CAA4C;QAC5C,IAAA,uBAAa,EAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC;AAlDW,QAAA,IAAI,QAkDf;AAEF,kBAAe,EAAE,IAAI,EAAJ,YAAI,EAAE,CAAC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports._testing = exports.collectAndSaveProject = exports.needsSource = void 0;
6
+ exports._testing = exports.collectAndSaveSource = exports.needsSource = void 0;
7
7
  const ora_1 = __importDefault(require("ora"));
8
8
  const api_1 = __importDefault(require("../api"));
9
9
  const config_1 = __importDefault(require("../config"));
@@ -12,21 +12,16 @@ const output_1 = __importDefault(require("../output"));
12
12
  const token_1 = require("./token");
13
13
  const getSelectedProjects_1 = require("../utils/getSelectedProjects");
14
14
  const promptForProject_1 = __importDefault(require("../utils/promptForProject"));
15
- function quit(exitCode = 2) {
16
- console.log("\nExiting Ditto CLI...\n");
17
- process.exitCode = exitCode;
18
- process.exit();
19
- }
15
+ const quit_1 = require("../utils/quit");
20
16
  function saveProject(file, name, id) {
21
- // old functionality included "ditto_component_library" in the `projects`
22
- // array, but we want to always treat the component library as a separate
23
- // entity and use the new notation of a top-level `components` key
24
17
  if (id === "components") {
25
- config_1.default.writeProjectConfigData(file, { components: true });
18
+ config_1.default.writeProjectConfigData(file, {
19
+ sources: { components: { enabled: true } },
20
+ });
26
21
  return;
27
22
  }
28
- const projects = [...(0, getSelectedProjects_1.getSelectedProjects)(), { name, id }];
29
- config_1.default.writeProjectConfigData(file, { projects });
23
+ const projects = [...(0, getSelectedProjects_1.getSelectedProjects)(file), { name, id }];
24
+ config_1.default.writeProjectConfigData(file, { sources: { projects } });
30
25
  }
31
26
  const needsSource = () => {
32
27
  return !config_1.default.parseSourceInformation().hasSourceData;
@@ -37,8 +32,8 @@ async function askForAnotherToken() {
37
32
  const message = "Looks like the API key you have saved no longer works. Please enter another one.";
38
33
  await (0, token_1.collectAndSaveToken)(message);
39
34
  }
40
- async function listProjects(token, projectsAlreadySelected, componentsSelected) {
41
- const spinner = (0, ora_1.default)("Fetching projects in your workspace...");
35
+ async function listProjects(token, projectsAlreadySelected) {
36
+ const spinner = (0, ora_1.default)("Fetching sources in your workspace...");
42
37
  spinner.start();
43
38
  let response;
44
39
  try {
@@ -52,49 +47,47 @@ async function listProjects(token, projectsAlreadySelected, componentsSelected)
52
47
  spinner.stop();
53
48
  throw e;
54
49
  }
50
+ const projectsAlreadySelectedSet = projectsAlreadySelected.reduce((set, project) => set.add(project.id.toString()), new Set());
51
+ const result = response.data.filter(({ id }) =>
52
+ // covers an edge case where v0 of the API includes the component library
53
+ // in the response from the `/project-names` endpoint
54
+ id !== "ditto_component_library" &&
55
+ !projectsAlreadySelectedSet.has(id.toString()));
55
56
  spinner.stop();
56
- return response.data.filter(({ id }) => {
57
- if (id === "ditto_component_library") {
58
- return !componentsSelected;
59
- }
60
- else {
61
- return !projectsAlreadySelected.some((project) => project.id === id);
62
- }
63
- });
57
+ return result;
64
58
  }
65
- async function collectProject(token, initialize) {
66
- const path = process.cwd();
67
- if (initialize) {
68
- console.log(`Looks like there are no Ditto projects selected for your current directory: ${output_1.default.info(path)}.`);
69
- }
59
+ async function collectSource(token, includeComponents) {
70
60
  const projectsAlreadySelected = (0, getSelectedProjects_1.getSelectedProjects)();
71
- const usingComponents = (0, getSelectedProjects_1.getIsUsingComponents)();
72
- const projects = await listProjects(token, projectsAlreadySelected, usingComponents);
73
- if (!(projects && projects.length)) {
61
+ const componentSourceSelected = (0, getSelectedProjects_1.getIsUsingComponents)();
62
+ let sources = await listProjects(token, projectsAlreadySelected);
63
+ if (includeComponents && !componentSourceSelected) {
64
+ sources = [
65
+ { id: "ditto_component_library", name: "Ditto Component Library" },
66
+ ...sources,
67
+ ];
68
+ }
69
+ if (!sources?.length) {
74
70
  console.log("You're currently syncing all projects in your workspace.");
75
71
  console.log(output_1.default.warnText("Not seeing a project that you were expecting? Verify that developer mode is enabled on that project. More info: https://www.dittowords.com/docs/ditto-developer-mode"));
76
72
  return null;
77
73
  }
78
- const nonInitPrompt = usingComponents
79
- ? "Add a project"
80
- : "Add a project or library";
81
74
  return (0, promptForProject_1.default)({
82
- projects,
83
- message: initialize
84
- ? "Choose the project or library you'd like to sync text from"
85
- : nonInitPrompt,
75
+ projects: sources,
76
+ message: "Choose the source you'd like to sync text from",
86
77
  });
87
78
  }
88
- const collectAndSaveProject = async (initialize = false) => {
79
+ const collectAndSaveSource = async ({ components = false } = {
80
+ components: false,
81
+ }) => {
89
82
  try {
90
83
  const token = config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
91
- const project = await collectProject(token, initialize);
84
+ const project = await collectSource(token, components);
92
85
  if (!project) {
93
- quit(0);
86
+ (0, quit_1.quit)("", 0);
94
87
  return;
95
88
  }
96
89
  console.log("\n" +
97
- `Thanks for adding ${output_1.default.info(project.name)} to your selected projects.\n` +
90
+ `Thanks for adding ${output_1.default.info(project.name)} to your selected sources.\n` +
98
91
  `We saved your updated configuration to: ${output_1.default.info(consts_1.default.PROJECT_CONFIG_FILE)}\n`);
99
92
  saveProject(consts_1.default.PROJECT_CONFIG_FILE, project.name, project.id);
100
93
  }
@@ -102,14 +95,14 @@ const collectAndSaveProject = async (initialize = false) => {
102
95
  console.log(e);
103
96
  if (e.response && e.response.status === 404) {
104
97
  await askForAnotherToken();
105
- await (0, exports.collectAndSaveProject)();
98
+ await (0, exports.collectAndSaveSource)({ components });
106
99
  }
107
100
  else {
108
- quit();
101
+ (0, quit_1.quit)("", 2);
109
102
  }
110
103
  }
111
104
  };
112
- exports.collectAndSaveProject = collectAndSaveProject;
105
+ exports.collectAndSaveSource = collectAndSaveSource;
113
106
  exports._testing = { saveProject, needsSource: exports.needsSource };
114
- exports.default = { needsSource: exports.needsSource, collectAndSaveProject: exports.collectAndSaveProject };
107
+ exports.default = { needsSource: exports.needsSource, collectAndSaveSource: exports.collectAndSaveSource };
115
108
  //# sourceMappingURL=project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../lib/init/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../lib/init/project.ts"],"names":[],"mappings":"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"}
package/bin/init/token.js CHANGED
@@ -11,6 +11,7 @@ const api_1 = require("../api");
11
11
  const consts_1 = __importDefault(require("../consts"));
12
12
  const output_1 = __importDefault(require("../output"));
13
13
  const config_1 = __importDefault(require("../config"));
14
+ const quit_1 = require("../utils/quit");
14
15
  const needsToken = (configFile, host = consts_1.default.API_HOST) => {
15
16
  if (config_1.default.getTokenFromEnv()) {
16
17
  return false;
@@ -29,22 +30,28 @@ exports.needsToken = needsToken;
29
30
  async function checkToken(token) {
30
31
  const axios = (0, api_1.create)(token);
31
32
  const endpoint = "/token-check";
32
- const resOrError = await axios
33
- .get(endpoint)
34
- .catch((error) => {
35
- if (error.code === "ENOTFOUND") {
36
- return output_1.default.errorText(`Can't connect to API: ${output_1.default.url(error.hostname)}`);
37
- }
38
- if (error.response.status === 401 || error.response.status === 404) {
39
- return output_1.default.errorText("This API key isn't valid. Please try another.");
40
- }
41
- return output_1.default.warnText("We're having trouble reaching the Ditto API.");
42
- })
43
- .catch(() => output_1.default.errorText("Sorry! We're having trouble reaching the Ditto API."));
44
- if (typeof resOrError === "string")
33
+ let resOrError;
34
+ try {
35
+ resOrError = await axios.get(endpoint).catch((error) => {
36
+ if (error.code === "ENOTFOUND") {
37
+ return output_1.default.errorText(`Can't connect to API: ${output_1.default.url(error.hostname)}`);
38
+ }
39
+ if (error.response.status === 401 || error.response.status === 404) {
40
+ return output_1.default.errorText("This API key isn't valid. Please try another.");
41
+ }
42
+ return output_1.default.warnText("We're having trouble reaching the Ditto API.");
43
+ });
44
+ }
45
+ catch (e) {
46
+ output_1.default.errorText(e);
47
+ output_1.default.errorText("Sorry! We're having trouble reaching the Ditto API.");
48
+ }
49
+ if (typeof resOrError === "string") {
45
50
  return resOrError;
46
- if (resOrError.status === 200)
51
+ }
52
+ if (resOrError?.status === 200) {
47
53
  return true;
54
+ }
48
55
  return output_1.default.errorText("This API key isn't valid. Please try another.");
49
56
  }
50
57
  async function collectToken(message) {
@@ -62,11 +69,6 @@ async function collectToken(message) {
62
69
  });
63
70
  return response.token;
64
71
  }
65
- function quit(exitCode = 2) {
66
- console.log("API key was not saved.");
67
- process.exitCode = exitCode;
68
- process.exit();
69
- }
70
72
  /**
71
73
  *
72
74
  * @param {string | null} message
@@ -81,7 +83,7 @@ const collectAndSaveToken = async (message = null) => {
81
83
  return token;
82
84
  }
83
85
  catch (error) {
84
- quit();
86
+ (0, quit_1.quit)("API token was not saved");
85
87
  }
86
88
  };
87
89
  exports.collectAndSaveToken = collectAndSaveToken;
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../lib/init/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../lib/init/token.ts"],"names":[],"mappings":"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"}