@dittowords/cli 2.5.0 → 2.5.2
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.
- package/README.md +14 -7
- package/babel.config.js +2 -8
- package/bin/add-project.js +38 -0
- package/bin/add-project.js.map +1 -0
- package/bin/api.js +20 -0
- package/bin/api.js.map +1 -0
- package/bin/config.js +174 -0
- package/bin/config.js.map +1 -0
- package/bin/consts.js +21 -0
- package/bin/consts.js.map +1 -0
- package/bin/ditto.js +71 -74
- package/bin/ditto.js.map +1 -0
- package/bin/init/init.js +39 -0
- package/bin/init/init.js.map +1 -0
- package/bin/init/project.js +115 -0
- package/bin/init/project.js.map +1 -0
- package/bin/init/token.js +89 -0
- package/bin/init/token.js.map +1 -0
- package/bin/output.js +34 -0
- package/bin/output.js.map +1 -0
- package/bin/pull.js +288 -0
- package/bin/pull.js.map +1 -0
- package/bin/remove-project.js +40 -0
- package/bin/remove-project.js.map +1 -0
- package/bin/types.js +3 -0
- package/bin/types.js.map +1 -0
- package/bin/utils/getSelectedProjects.js +76 -0
- package/bin/utils/getSelectedProjects.js.map +1 -0
- package/bin/utils/processMetaOption.js +15 -0
- package/bin/utils/processMetaOption.js.map +1 -0
- package/bin/utils/projectsToText.js +16 -0
- package/bin/utils/projectsToText.js.map +1 -0
- package/bin/utils/promptForProject.js +44 -0
- package/bin/utils/promptForProject.js.map +1 -0
- package/bin/utils/sourcesToText.js +25 -0
- package/bin/utils/sourcesToText.js.map +1 -0
- package/jest.config.js +1 -1
- package/lib/add-project.ts +51 -0
- package/lib/api.ts +15 -0
- package/lib/{config.test.js → config.test.ts} +14 -25
- package/lib/config.ts +214 -0
- package/lib/consts.ts +20 -0
- package/lib/ditto.ts +97 -0
- package/lib/init/{init.js → init.ts} +11 -12
- package/lib/init/project.test.ts +49 -0
- package/lib/init/{project.js → project.ts} +58 -32
- package/lib/init/{token.test.js → token.test.ts} +3 -3
- package/lib/init/{token.js → token.ts} +23 -19
- package/lib/output.ts +21 -0
- package/lib/pull.test.ts +142 -0
- package/lib/{pull.js → pull.ts} +119 -92
- package/lib/remove-project.ts +50 -0
- package/lib/types.ts +23 -0
- package/lib/utils/getSelectedProjects.ts +55 -0
- package/lib/utils/processMetaOption.test.ts +18 -0
- package/lib/utils/processMetaOption.ts +16 -0
- package/lib/utils/{projectsToText.js → projectsToText.ts} +5 -4
- package/lib/utils/{promptForProject.js → promptForProject.ts} +18 -9
- package/lib/utils/{sourcesToText.js → sourcesToText.ts} +6 -5
- package/package.json +20 -15
- package/testing/fixtures/project-config-pull.yml +0 -0
- package/tsconfig.json +12 -0
- package/lib/add-project.js +0 -30
- package/lib/api.js +0 -18
- package/lib/config.js +0 -169
- package/lib/consts.js +0 -14
- package/lib/init/project.test.js +0 -99
- package/lib/output.js +0 -21
- package/lib/pull.test.js +0 -173
- package/lib/remove-project.js +0 -39
- package/lib/utils/getSelectedProjects.js +0 -35
- package/lib/utils/processMetaOption.js +0 -16
- package/lib/utils/processMetaOption.test.js +0 -16
package/README.md
CHANGED
|
@@ -54,9 +54,7 @@ Once you've successfully authenticated and a config file has been created, you
|
|
|
54
54
|
|
|
55
55
|
The CLI will not prompt for an API key if a value is provided in the environment variable `DITTO_API_KEY`.
|
|
56
56
|
|
|
57
|
-
If the `DITTO_API_KEY` environment variable is not set,
|
|
58
|
-
path `~/.config/ditto`. If this file does not exist or does not contain a valid API key, then the CLI will prompt
|
|
59
|
-
for one.
|
|
57
|
+
If the `DITTO_API_KEY` environment variable is not set, the CLI will attempt to parse a token from [your authentication file](#authentication). If this file does not exist or does not contain a valid API key, the CLI will prompt for one.
|
|
60
58
|
|
|
61
59
|
We don't recommend editing the file manually; if you need to remove a saved API key and put another one in its place,
|
|
62
60
|
it's better to fully delete the file and then re-run the CLI so that a new key is prompted for.
|
|
@@ -86,13 +84,14 @@ For more details on files generated by the `pull` command, see [JSON Files](#jso
|
|
|
86
84
|
**Action:** Removes a project from the list of Ditto projects stored in `config.yml`.
|
|
87
85
|
|
|
88
86
|
## Options
|
|
87
|
+
|
|
89
88
|
`-m, --meta <data...>` Optional metadata to send arbitrary data to the backend. Ex: `-m githubActionRequest:true trigger:manual`. Currently, this option should only be utilized when the CLI is ran within a GitHub action (see [Ditto GitHub Action](https://github.com/dittowords/ditto-github-action)) via `githubActionRequest:true`.
|
|
90
89
|
|
|
91
90
|
## Files
|
|
92
91
|
|
|
93
92
|
### `ditto/`
|
|
94
93
|
|
|
95
|
-
This folder houses the configuration file (`ditto/config.yml`) used by the CLI and is also the write destination for any files the CLI generates.
|
|
94
|
+
This folder houses the configuration file (`ditto/config.yml`) used by the CLI and is also the default write destination for any files the CLI generates. See [Output Directory](#output-directory) for details about how to customize the location that files are written to.
|
|
96
95
|
|
|
97
96
|
If you run the CLI in a directory that does not contain a `ditto/` folder, the folder and a `config.yml` file will be automatically created.
|
|
98
97
|
|
|
@@ -106,7 +105,7 @@ If you run the CLI in a directory that does not contain a `ditto/` folder, the f
|
|
|
106
105
|
|
|
107
106
|
##### `projects`
|
|
108
107
|
|
|
109
|
-
A list of project names and ids to pull text from.
|
|
108
|
+
A list of project names and ids to pull text from.
|
|
110
109
|
|
|
111
110
|
Required if `components: true` is not specified.
|
|
112
111
|
|
|
@@ -228,9 +227,17 @@ If you run the CLI in a directory that does not contain a `ditto/` folder, the f
|
|
|
228
227
|
const App = () => <DittoProvider source={source}>...</DittoProvider>;
|
|
229
228
|
```
|
|
230
229
|
|
|
231
|
-
|
|
230
|
+
## Files
|
|
231
|
+
|
|
232
|
+
### Output Directory
|
|
233
|
+
|
|
234
|
+
By default, the CLI writes it's output files to `./ditto` (relative to the current working directory of the running process). The default path can be overwritten by specifying a custom one via the environment variable `DITTO_TEXT_DIR`.
|
|
235
|
+
|
|
236
|
+
### Authentication
|
|
237
|
+
|
|
238
|
+
By default, your API key is saved to `$HOME/.config/ditto`; the default path can be overwritten by specifying a custom one via the environment variable `DITTO_CONFIG_FILE`.
|
|
232
239
|
|
|
233
|
-
|
|
240
|
+
To change your API key, delete this file and you'll be prompted for a new key the next time that the CLI executes.
|
|
234
241
|
|
|
235
242
|
## SDKs
|
|
236
243
|
|
package/babel.config.js
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
const project_1 = require("./init/project");
|
|
7
|
+
const projectsToText_1 = __importDefault(require("./utils/projectsToText"));
|
|
8
|
+
const getSelectedProjects_1 = require("./utils/getSelectedProjects");
|
|
9
|
+
const output_1 = __importDefault(require("./output"));
|
|
10
|
+
function quit(exitCode = 2) {
|
|
11
|
+
console.log("Project selection was not updated.");
|
|
12
|
+
process.exitCode = exitCode;
|
|
13
|
+
process.exit();
|
|
14
|
+
}
|
|
15
|
+
const addProject = async () => {
|
|
16
|
+
const projects = (0, getSelectedProjects_1.getSelectedProjects)();
|
|
17
|
+
const usingComponents = (0, getSelectedProjects_1.getIsUsingComponents)();
|
|
18
|
+
try {
|
|
19
|
+
if (usingComponents) {
|
|
20
|
+
if (projects.length) {
|
|
21
|
+
console.log(`\nYou're currently syncing text from the ${output_1.default.info("Component Library")} and from the following projects: ${(0, projectsToText_1.default)(projects)}`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.log(`\nYou're currently only syncing text from the ${output_1.default.info("Component Library")}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if (projects.length) {
|
|
28
|
+
console.log(`\nYou're currently set up to sync text from the following projects: ${(0, projectsToText_1.default)(projects)}`);
|
|
29
|
+
}
|
|
30
|
+
await (0, project_1.collectAndSaveProject)(false);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.log(`\nSorry, there was an error adding a project to your workspace: `, error);
|
|
34
|
+
quit();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.default = addProject;
|
|
38
|
+
//# sourceMappingURL=add-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-project.js","sourceRoot":"","sources":["../lib/add-project.ts"],"names":[],"mappings":";;;;;AAAA,4CAAuD;AACvD,4EAAoD;AACpD,qEAGqC;AACrC,sDAA8B;AAE9B,SAAS,IAAI,CAAC,QAAQ,GAAG,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IAC5B,MAAM,QAAQ,GAAG,IAAA,yCAAmB,GAAE,CAAC;IACvC,MAAM,eAAe,GAAG,IAAA,0CAAoB,GAAE,CAAC;IAE/C,IAAI;QACF,IAAI,eAAe,EAAE;YACnB,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,OAAO,CAAC,GAAG,CACT,4CAA4C,gBAAM,CAAC,IAAI,CACrD,mBAAmB,CACpB,qCAAqC,IAAA,wBAAc,EAAC,QAAQ,CAAC,EAAE,CACjE,CAAC;aACH;iBAAM;gBACL,OAAO,CAAC,GAAG,CACT,iDAAiD,gBAAM,CAAC,IAAI,CAC1D,mBAAmB,CACpB,EAAE,CACJ,CAAC;aACH;SACF;aAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC1B,OAAO,CAAC,GAAG,CACT,uEAAuE,IAAA,wBAAc,EACnF,QAAQ,CACT,EAAE,CACJ,CAAC;SACH;QACD,MAAM,IAAA,+BAAqB,EAAC,KAAK,CAAC,CAAC;KACpC;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,GAAG,CACT,kEAAkE,EAClE,KAAK,CACN,CAAC;QACF,IAAI,EAAE,CAAC;KACR;AACH,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
package/bin/api.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
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.create = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const config_1 = __importDefault(require("./config"));
|
|
9
|
+
const consts_1 = __importDefault(require("./consts"));
|
|
10
|
+
const create = (token) => {
|
|
11
|
+
return axios_1.default.create({
|
|
12
|
+
baseURL: consts_1.default.API_HOST,
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `token ${token}`,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
exports.create = create;
|
|
19
|
+
exports.default = (0, exports.create)(config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST));
|
|
20
|
+
//# sourceMappingURL=api.js.map
|
package/bin/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../lib/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,sDAA8B;AAC9B,sDAA8B;AAEvB,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE;IACvC,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,gBAAM,CAAC,QAAQ;QACxB,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,KAAK,EAAE;SAChC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAPW,QAAA,MAAM,UAOjB;AAEF,kBAAe,IAAA,cAAM,EAAC,gBAAM,CAAC,QAAQ,CAAC,gBAAM,CAAC,WAAW,EAAE,gBAAM,CAAC,QAAQ,CAAC,CAAC,CAAC"}
|
package/bin/config.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
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
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const url_1 = __importDefault(require("url"));
|
|
9
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
10
|
+
const consts_1 = __importDefault(require("./consts"));
|
|
11
|
+
function createFileIfMissing(filename) {
|
|
12
|
+
const dir = path_1.default.dirname(filename);
|
|
13
|
+
if (!fs_1.default.existsSync(dir))
|
|
14
|
+
fs_1.default.mkdirSync(dir);
|
|
15
|
+
if (!fs_1.default.existsSync(filename)) {
|
|
16
|
+
fs_1.default.closeSync(fs_1.default.openSync(filename, "w"));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function jsonIsConfigYAML(json) {
|
|
20
|
+
return typeof json === "object";
|
|
21
|
+
}
|
|
22
|
+
function jsonIsGlobalYAML(json) {
|
|
23
|
+
return (!!json &&
|
|
24
|
+
typeof json === "object" &&
|
|
25
|
+
Object.values(json).every((arr) => arr.every((val) => typeof val === "object" && Object.keys(val).includes("token"))));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read data from a project config file
|
|
29
|
+
* @param {string} file defaults to `PROJECT_CONFIG_FILE` defined in `constants.js`
|
|
30
|
+
* @param {*} defaultData defaults to `{}`
|
|
31
|
+
* @returns { ConfigYAML }
|
|
32
|
+
*/
|
|
33
|
+
function readProjectConfigData(file = consts_1.default.PROJECT_CONFIG_FILE, defaultData = {}) {
|
|
34
|
+
createFileIfMissing(file);
|
|
35
|
+
const fileContents = fs_1.default.readFileSync(file, "utf8");
|
|
36
|
+
const yamlData = js_yaml_1.default.load(fileContents);
|
|
37
|
+
if (jsonIsConfigYAML(yamlData)) {
|
|
38
|
+
return yamlData;
|
|
39
|
+
}
|
|
40
|
+
return defaultData;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Read data from a global config file
|
|
44
|
+
* @param {string} file defaults to `CONFIG_FILE` defined in `constants.js`
|
|
45
|
+
* @param {*} defaultData defaults to `{}`
|
|
46
|
+
* @returns { Record<string, { token: string }[]> }
|
|
47
|
+
*/
|
|
48
|
+
function readGlobalConfigData(file = consts_1.default.CONFIG_FILE, defaultData = {}) {
|
|
49
|
+
createFileIfMissing(file);
|
|
50
|
+
const fileContents = fs_1.default.readFileSync(file, "utf8");
|
|
51
|
+
const yamlData = js_yaml_1.default.load(fileContents);
|
|
52
|
+
if (jsonIsGlobalYAML(yamlData)) {
|
|
53
|
+
return yamlData;
|
|
54
|
+
}
|
|
55
|
+
return defaultData;
|
|
56
|
+
}
|
|
57
|
+
function writeProjectConfigData(file, data) {
|
|
58
|
+
createFileIfMissing(file);
|
|
59
|
+
const existingData = readProjectConfigData(file);
|
|
60
|
+
const yamlStr = js_yaml_1.default.dump({ ...existingData, ...data });
|
|
61
|
+
fs_1.default.writeFileSync(file, yamlStr, "utf8");
|
|
62
|
+
}
|
|
63
|
+
function writeGlobalConfigData(file, data) {
|
|
64
|
+
createFileIfMissing(file);
|
|
65
|
+
const existingData = readGlobalConfigData(file);
|
|
66
|
+
const yamlStr = js_yaml_1.default.dump({ ...existingData, ...data });
|
|
67
|
+
fs_1.default.writeFileSync(file, yamlStr, "utf8");
|
|
68
|
+
}
|
|
69
|
+
function justTheHost(host) {
|
|
70
|
+
if (!host.includes("://"))
|
|
71
|
+
return host;
|
|
72
|
+
return url_1.default.parse(host).hostname || "";
|
|
73
|
+
}
|
|
74
|
+
function deleteToken(file, host) {
|
|
75
|
+
const data = readGlobalConfigData(file);
|
|
76
|
+
const hostParsed = justTheHost(host);
|
|
77
|
+
data[hostParsed] = [];
|
|
78
|
+
data[hostParsed][0] = { token: "" };
|
|
79
|
+
writeGlobalConfigData(file, data);
|
|
80
|
+
}
|
|
81
|
+
function saveToken(file, host, token) {
|
|
82
|
+
const data = readGlobalConfigData(file);
|
|
83
|
+
const hostParsed = justTheHost(host);
|
|
84
|
+
data[hostParsed] = []; // only allow one token per host
|
|
85
|
+
data[hostParsed][0] = { token };
|
|
86
|
+
writeGlobalConfigData(file, data);
|
|
87
|
+
}
|
|
88
|
+
function getTokenFromEnv() {
|
|
89
|
+
return process.env.DITTO_API_KEY;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
*
|
|
93
|
+
* @param {string} file
|
|
94
|
+
* @param {string} host
|
|
95
|
+
* @returns {Token}
|
|
96
|
+
*/
|
|
97
|
+
function getToken(file, host) {
|
|
98
|
+
const tokenFromEnv = getTokenFromEnv();
|
|
99
|
+
if (tokenFromEnv) {
|
|
100
|
+
return tokenFromEnv;
|
|
101
|
+
}
|
|
102
|
+
const data = readGlobalConfigData(file);
|
|
103
|
+
const hostEntry = data[justTheHost(host)];
|
|
104
|
+
if (!hostEntry)
|
|
105
|
+
return undefined;
|
|
106
|
+
const { length } = hostEntry;
|
|
107
|
+
return hostEntry[length - 1].token;
|
|
108
|
+
}
|
|
109
|
+
const IS_DUPLICATE = /-(\d+$)/;
|
|
110
|
+
function dedupeProjectName(projectNames, projectName) {
|
|
111
|
+
let dedupedName = projectName;
|
|
112
|
+
if (projectNames.has(dedupedName)) {
|
|
113
|
+
while (projectNames.has(dedupedName)) {
|
|
114
|
+
const [_, numberStr] = dedupedName.match(IS_DUPLICATE) || [];
|
|
115
|
+
if (numberStr && !isNaN(parseInt(numberStr))) {
|
|
116
|
+
dedupedName = `${dedupedName.replace(IS_DUPLICATE, "")}-${parseInt(numberStr) + 1}`;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
dedupedName = `${dedupedName}-1`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return dedupedName;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Reads from the config file, filters out
|
|
127
|
+
* invalid projects, dedupes those remaining, and returns:
|
|
128
|
+
* - whether or not the data required to `pull` is present
|
|
129
|
+
* - whether or not the component library should be fetched
|
|
130
|
+
* - an array of valid, deduped projects
|
|
131
|
+
* - the `variants` and `format` config options
|
|
132
|
+
*/
|
|
133
|
+
function parseSourceInformation() {
|
|
134
|
+
const { projects, components, variants, format } = readProjectConfigData();
|
|
135
|
+
const projectNames = new Set();
|
|
136
|
+
const validProjects = [];
|
|
137
|
+
let componentLibraryInProjects = false;
|
|
138
|
+
(projects || []).forEach((project) => {
|
|
139
|
+
const isValid = project.id && project.name;
|
|
140
|
+
if (!isValid) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (project.id === "ditto_component_library") {
|
|
144
|
+
componentLibraryInProjects = true;
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
project.fileName = dedupeProjectName(projectNames, project.name);
|
|
148
|
+
projectNames.add(project.fileName);
|
|
149
|
+
validProjects.push(project);
|
|
150
|
+
});
|
|
151
|
+
const shouldFetchComponentLibrary = !!components || componentLibraryInProjects;
|
|
152
|
+
const hasSourceData = !!validProjects.length || shouldFetchComponentLibrary;
|
|
153
|
+
return {
|
|
154
|
+
hasSourceData,
|
|
155
|
+
validProjects,
|
|
156
|
+
shouldFetchComponentLibrary,
|
|
157
|
+
variants: variants || false,
|
|
158
|
+
format,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
exports.default = {
|
|
162
|
+
createFileIfMissing,
|
|
163
|
+
readProjectConfigData,
|
|
164
|
+
readGlobalConfigData,
|
|
165
|
+
writeGlobalConfigData,
|
|
166
|
+
writeProjectConfigData,
|
|
167
|
+
justTheHost,
|
|
168
|
+
saveToken,
|
|
169
|
+
deleteToken,
|
|
170
|
+
getToken,
|
|
171
|
+
getTokenFromEnv,
|
|
172
|
+
parseSourceInformation,
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../lib/config.ts"],"names":[],"mappings":"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"}
|
package/bin/consts.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
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.TEXT_FILE = exports.TEXT_DIR = exports.PROJECT_CONFIG_FILE = exports.CONFIG_FILE = exports.API_HOST = void 0;
|
|
7
|
+
const os_1 = require("os");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
exports.API_HOST = process.env.DITTO_API_HOST || "https://api.dittowords.com";
|
|
10
|
+
exports.CONFIG_FILE = process.env.DITTO_CONFIG_FILE || path_1.default.join((0, os_1.homedir)(), ".config", "ditto");
|
|
11
|
+
exports.PROJECT_CONFIG_FILE = path_1.default.normalize(path_1.default.join("ditto", "config.yml"));
|
|
12
|
+
exports.TEXT_DIR = process.env.DITTO_TEXT_DIR || "ditto";
|
|
13
|
+
exports.TEXT_FILE = path_1.default.normalize(path_1.default.join(exports.TEXT_DIR, "text.json"));
|
|
14
|
+
exports.default = {
|
|
15
|
+
API_HOST: exports.API_HOST,
|
|
16
|
+
CONFIG_FILE: exports.CONFIG_FILE,
|
|
17
|
+
PROJECT_CONFIG_FILE: exports.PROJECT_CONFIG_FILE,
|
|
18
|
+
TEXT_DIR: exports.TEXT_DIR,
|
|
19
|
+
TEXT_FILE: exports.TEXT_FILE,
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../lib/consts.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA6B;AAC7B,gDAAwB;AAEX,QAAA,QAAQ,GACnB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,4BAA4B,CAAC;AAChD,QAAA,WAAW,GACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/D,QAAA,mBAAmB,GAAG,cAAI,CAAC,SAAS,CAC/C,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CACjC,CAAC;AACW,QAAA,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC;AACjD,QAAA,SAAS,GAAG,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAE1E,kBAAe;IACb,QAAQ,EAAR,gBAAQ;IACR,WAAW,EAAX,mBAAW;IACX,mBAAmB,EAAnB,2BAAmB;IACnB,QAAQ,EAAR,gBAAQ;IACR,SAAS,EAAT,iBAAS;CACV,CAAC"}
|
package/bin/ditto.js
CHANGED
|
@@ -1,96 +1,93 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
7
|
// This is the main entry point for the ditto-cli command.
|
|
3
|
-
const
|
|
8
|
+
const commander_1 = require("commander");
|
|
4
9
|
// to use V8's code cache to speed up instantiation time
|
|
5
10
|
require("v8-compile-cache");
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const removeProject = require("../lib/remove-project");
|
|
12
|
-
const processMetaOption = require("../lib/utils/processMetaOption");
|
|
13
|
-
|
|
11
|
+
const init_1 = require("./init/init");
|
|
12
|
+
const pull_1 = require("./pull");
|
|
13
|
+
const add_project_1 = __importDefault(require("./add-project"));
|
|
14
|
+
const remove_project_1 = __importDefault(require("./remove-project"));
|
|
15
|
+
const processMetaOption_1 = __importDefault(require("./utils/processMetaOption"));
|
|
14
16
|
/**
|
|
15
17
|
* Catch and report unexpected error.
|
|
16
18
|
* @param {any} error The thrown error object.
|
|
17
19
|
* @returns {void}
|
|
18
20
|
*/
|
|
19
21
|
function quit(exitCode = 2) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
console.log("\nExiting Ditto CLI...\n");
|
|
23
|
+
process.exitCode = exitCode;
|
|
24
|
+
process.exit();
|
|
23
25
|
}
|
|
24
|
-
|
|
25
26
|
const setupCommands = () => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
.command("remove")
|
|
45
|
-
.description("Stop syncing copy from a Ditto project")
|
|
46
|
-
.action(() => checkInit("project remove"));
|
|
27
|
+
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"));
|
|
47
45
|
};
|
|
48
|
-
|
|
49
46
|
const setupOptions = () => {
|
|
50
|
-
|
|
51
|
-
.option('-m, --meta <data...>',
|
|
52
|
-
'Optional metadata for this command to send arbitrary data to the backend. Ex: -m githubActionRequest:true trigger:manual');
|
|
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");
|
|
53
48
|
};
|
|
54
|
-
|
|
55
49
|
const checkInit = async (command) => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
50
|
+
if ((0, init_1.needsInit)() && command !== "project remove") {
|
|
51
|
+
try {
|
|
52
|
+
await (0, init_1.init)();
|
|
53
|
+
if (command === "pull")
|
|
54
|
+
main(); // re-run to actually pull text now that init is finished
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
quit();
|
|
58
|
+
}
|
|
62
59
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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();
|
|
79
|
+
}
|
|
82
80
|
}
|
|
83
|
-
}
|
|
84
81
|
};
|
|
85
|
-
|
|
86
82
|
const main = async () => {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
83
|
+
if (process.argv.length <= 2 && process.argv[1].includes("ditto-cli")) {
|
|
84
|
+
await checkInit("none");
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
setupCommands();
|
|
88
|
+
setupOptions();
|
|
89
|
+
}
|
|
90
|
+
commander_1.program.parse(process.argv);
|
|
94
91
|
};
|
|
95
|
-
|
|
96
92
|
main();
|
|
93
|
+
//# sourceMappingURL=ditto.js.map
|
package/bin/ditto.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ditto.js","sourceRoot":"","sources":["../lib/ditto.ts"],"names":[],"mappings":"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"}
|
package/bin/init/init.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
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.init = exports.needsInit = void 0;
|
|
7
|
+
// Related to initializing a user/environment to ditto.
|
|
8
|
+
// expected to be run once per project.
|
|
9
|
+
const boxen_1 = __importDefault(require("boxen"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const project_1 = require("./project");
|
|
12
|
+
const token_1 = require("./token");
|
|
13
|
+
const config_1 = __importDefault(require("../config"));
|
|
14
|
+
const sourcesToText_1 = __importDefault(require("../utils/sourcesToText"));
|
|
15
|
+
const needsInit = () => (0, token_1.needsToken)() || (0, project_1.needsSource)();
|
|
16
|
+
exports.needsInit = needsInit;
|
|
17
|
+
function welcome() {
|
|
18
|
+
const msg = chalk_1.default.white(`${chalk_1.default.bold("Welcome to the", chalk_1.default.magentaBright("Ditto CLI"))}.
|
|
19
|
+
|
|
20
|
+
We're glad to have you here.`);
|
|
21
|
+
console.log((0, boxen_1.default)(msg, { padding: 1 }));
|
|
22
|
+
}
|
|
23
|
+
const init = async () => {
|
|
24
|
+
welcome();
|
|
25
|
+
if ((0, token_1.needsToken)()) {
|
|
26
|
+
await (0, token_1.collectAndSaveToken)();
|
|
27
|
+
}
|
|
28
|
+
const { hasSourceData, validProjects, shouldFetchComponentLibrary } = config_1.default.parseSourceInformation();
|
|
29
|
+
if (!hasSourceData) {
|
|
30
|
+
await (0, project_1.collectAndSaveProject)(true);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const message = "You're currently set up to sync text from " +
|
|
34
|
+
(0, sourcesToText_1.default)(validProjects, shouldFetchComponentLibrary);
|
|
35
|
+
console.log(message);
|
|
36
|
+
};
|
|
37
|
+
exports.init = init;
|
|
38
|
+
exports.default = { needsInit: exports.needsInit, init: exports.init };
|
|
39
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +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"}
|