@uss-stargazer/job-queue 0.0.2 → 0.0.3
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 +27 -1
- package/dist/actions.js +4 -0
- package/dist/actions.js.map +1 -0
- package/dist/data/config.js +18 -3
- package/dist/data/config.js.map +1 -0
- package/dist/data/index.js +1 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/jobqueue.js +7 -0
- package/dist/data/jobqueue.js.map +1 -0
- package/dist/data/projectpool.js +17 -0
- package/dist/data/projectpool.js.map +1 -0
- package/dist/index.js +54 -35
- package/dist/index.js.map +1 -0
- package/dist/utils/gistData.js +10 -1
- package/dist/utils/gistData.js.map +1 -0
- package/dist/utils/gistData.test.js +188 -0
- package/dist/utils/gistData.test.js.map +1 -0
- package/dist/utils/index.js +8 -1
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jsonData.js +9 -3
- package/dist/utils/jsonData.js.map +1 -0
- package/dist/utils/jsonData.test.js +58 -0
- package/dist/utils/jsonData.test.js.map +1 -0
- package/dist/utils/promptUser.js +21 -25
- package/dist/utils/promptUser.js.map +1 -0
- package/dist/utils/sortableCheckbox.js +4 -0
- package/dist/utils/sortableCheckbox.js.map +1 -0
- package/index.js +6 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,32 @@ job-queue --help
|
|
|
22
22
|
jobq --help
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
***TLDR***: The CLI tries to be user friendly, so just use it...
|
|
28
|
+
|
|
29
|
+
It's just based on a few files: config.json, jobqueue.json, and projectpool.json. Strives to be
|
|
30
|
+
a bit like Git in the sense that it opens data structures in the user's editor for updating data.
|
|
31
|
+
|
|
32
|
+
### JSON schemas
|
|
33
|
+
|
|
34
|
+
It's recommended that you use an editor or editor plugin with some sort of intellisense for JSON
|
|
35
|
+
schemas, as it makes it much easier to work with.
|
|
36
|
+
|
|
37
|
+
If this isn't available, the expected structures can be found in the Zod schemas in
|
|
38
|
+
`src/data/$TARGET.ts` (at the top of each).
|
|
39
|
+
|
|
40
|
+
### Config options
|
|
41
|
+
|
|
42
|
+
- `editor`: string to edit file when filepath is appended. If not specified, is infered from
|
|
43
|
+
environment vars or from your Git configuration, if you have that installed.
|
|
44
|
+
- `confirmGistUpdates`: whether it should check before pushing or pulling gists from GitHub, if you
|
|
45
|
+
have any set up (see [here](#syncing-with-gists)).
|
|
46
|
+
- `confirmOffline`: whether to check before going into offline mode when there are gists configured
|
|
47
|
+
and `github.com` cannot be resolved.
|
|
48
|
+
- `showBanner`: whether to show ASCII art banner on start
|
|
49
|
+
|
|
50
|
+
### Syncing with gists
|
|
26
51
|
|
|
27
52
|
`job-queue` allows you to sync data files with a gist/gists on your GitHub account. This provides
|
|
28
53
|
cloud storage and makes the program more portable.
|
|
@@ -48,6 +73,7 @@ To link to a gist, provide the gist ID and a GitHub access token in config.json,
|
|
|
48
73
|
|
|
49
74
|
Your gist ID can be copied easily from the URL; usually something like `https://gist.github.com/USERNAME/GIST_ID`.
|
|
50
75
|
|
|
76
|
+
|
|
51
77
|
## Sample Workflow
|
|
52
78
|
|
|
53
79
|
- _\[Daemon\]_ Spontaneous, not fleshed out ideas get immediately added to the project pool as "inactive".
|
package/dist/actions.js
CHANGED
|
@@ -86,6 +86,7 @@ const actions = {
|
|
|
86
86
|
});
|
|
87
87
|
reorder(queue, reorderedQueueIdxs.map(({ value: jobIdx }) => jobIdx));
|
|
88
88
|
console.log(chalk.green('✔'), 'Queue reordered.');
|
|
89
|
+
// Open checked activities for editing
|
|
89
90
|
const checkedActivities = reorderedQueueIdxs
|
|
90
91
|
.map(({ checked }, jobIdx) => ({ checked, jobIdx }))
|
|
91
92
|
.filter(({ checked }) => checked);
|
|
@@ -144,6 +145,7 @@ const actions = {
|
|
|
144
145
|
console.log(chalk.red('[e]'), 'No projects in pool.');
|
|
145
146
|
return;
|
|
146
147
|
}
|
|
148
|
+
// Get project name to edit
|
|
147
149
|
const projectName = await search({
|
|
148
150
|
message: 'Enter the name of the project to edit',
|
|
149
151
|
source: (partialProjectName) => {
|
|
@@ -158,6 +160,7 @@ const actions = {
|
|
|
158
160
|
if (projectIdx < 0)
|
|
159
161
|
throw new Error('Invalid project name');
|
|
160
162
|
const [project] = pool.splice(projectIdx, 1);
|
|
163
|
+
// Do the editing
|
|
161
164
|
try {
|
|
162
165
|
const updatedProject = await updateProject(project, projectpool, jobqueue, config.data);
|
|
163
166
|
if (updatedProject !== 'deleted') {
|
|
@@ -178,3 +181,4 @@ const actions = {
|
|
|
178
181
|
},
|
|
179
182
|
};
|
|
180
183
|
export default actions;
|
|
184
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
package/dist/data/config.js
CHANGED
|
@@ -10,6 +10,7 @@ import { confirm } from '@inquirer/prompts';
|
|
|
10
10
|
import { fileURLToPath, pathToFileURL } from 'url';
|
|
11
11
|
import pkg from '../../package.json' with { type: 'json' };
|
|
12
12
|
import { getDataTargetNicely } from '../utils/promptUser.js';
|
|
13
|
+
// Types / Schemas
|
|
13
14
|
const jsonSchemaNames = [
|
|
14
15
|
'job',
|
|
15
16
|
'jobqueue',
|
|
@@ -18,11 +19,14 @@ const jsonSchemaNames = [
|
|
|
18
19
|
'config',
|
|
19
20
|
];
|
|
20
21
|
const NonemptyString = z.string().nonempty();
|
|
22
|
+
// prettier-ignore
|
|
21
23
|
const GistDataObject = z.object({
|
|
22
24
|
local: NonemptyString.meta({ title: "Local JSON path", description: "Path to local JSON file for data linked to the Gist." }),
|
|
23
25
|
ghGistId: NonemptyString.regex(/^[A-Fa-f0-9]{32}$/, { error: "Is not valid GitHub gist ID" }).meta({ title: "Gist ID", description: "ID of gist to link (can get from URL of the gist you created)." }),
|
|
24
26
|
ghAccessToken: NonemptyString.regex(/^(gh[ps]_[a-zA-Z0-9]{36}|github_pat_[a-zA-Z0-9]{22}_[a-zA-Z0-9]{59})$/, { error: "Is not valid GitHub access token" }).meta({ title: "Gist Access Token", description: "GitHub access token for read/write access to your gist." })
|
|
25
27
|
}).meta({ title: "Gist-Linked JSON", description: "Data for a configuration/data file linked to a GitHub gist." });
|
|
28
|
+
// !!! NOTE !!! Whenever you change this schema, PLEASE update package.json version (so JSON schemas will get updated automatically)
|
|
29
|
+
// prettier-ignore
|
|
26
30
|
export const ConfigSchema = z.object({
|
|
27
31
|
jobqueue: z.union([
|
|
28
32
|
NonemptyString.meta({ title: "Jobqueue path", description: "Path to local jobqueue.json." }),
|
|
@@ -32,10 +36,12 @@ export const ConfigSchema = z.object({
|
|
|
32
36
|
NonemptyString.meta({ title: "Projectpool path", description: "Path to local projectpool.json." }),
|
|
33
37
|
GistDataObject.meta({ title: "Gist-Linked Jobqueue", description: "Data for projectpool.json locally and linked to gist on GitHub." })
|
|
34
38
|
]),
|
|
39
|
+
// schemas stored as path to schemas dir, but expanded on parse
|
|
35
40
|
schemas: NonemptyString.meta({ title: "Schemas directory", description: `Path to directory containing: ${jsonSchemaNames.map(base => `${base}.schema.json`).join(", ")}.` }).transform((schemasDir) => Object.fromEntries(jsonSchemaNames.map((base) => [base, pathToFileURL(path.resolve(schemasDir, `${base}.schema.json`)).href]))),
|
|
36
41
|
editor: NonemptyString.optional().meta({ title: "Editor command", description: "Command to run editor. Will be run like `<editor> /some/data.json` so make sure it waits." }),
|
|
37
|
-
confirmGistUpdates: z.boolean().optional().
|
|
38
|
-
confirmOffline: z.boolean().optional().
|
|
42
|
+
confirmGistUpdates: z.boolean().optional().describe("Whether to prompt before pushing or pulling a gist from GitHub."),
|
|
43
|
+
confirmOffline: z.boolean().optional().describe("Whether to confirm before using offline (if there are gists in config)."),
|
|
44
|
+
showBanner: z.boolean().optional().describe("Show ASCII art banner on start.")
|
|
39
45
|
});
|
|
40
46
|
export const toInputConfig = (outputData) => {
|
|
41
47
|
const schemaDir = Object.values(outputData.schemas).reduce((schemaDir, schemaPath) => {
|
|
@@ -55,7 +61,9 @@ const jsonSchemas = {
|
|
|
55
61
|
projectpool: ProjectPoolSchema,
|
|
56
62
|
config: ConfigSchema,
|
|
57
63
|
};
|
|
58
|
-
|
|
64
|
+
// Methods
|
|
65
|
+
const updateNestedObject = async (// eslint-disable-line @typescript-eslint/no-explicit-any
|
|
66
|
+
base, update) => {
|
|
59
67
|
const keys = [...Object.keys(update)];
|
|
60
68
|
for (const key of keys) {
|
|
61
69
|
if (typeof base[key] === 'object' &&
|
|
@@ -72,6 +80,7 @@ const updateNestedObject = async (base, update) => {
|
|
|
72
80
|
}
|
|
73
81
|
}
|
|
74
82
|
};
|
|
83
|
+
// JSON schema methods
|
|
75
84
|
const getJsonSchemaId = (schemaFileUrl) => path.posix.join(pkg.version, path.basename(fileURLToPath(schemaFileUrl)));
|
|
76
85
|
const versionFromJsonSchemaId = (id) => path.dirname(id);
|
|
77
86
|
const updateJsonSchema = async (schemaSchema, schemaFileUrl) => {
|
|
@@ -87,6 +96,7 @@ const updateJsonSchema = async (schemaSchema, schemaFileUrl) => {
|
|
|
87
96
|
}),
|
|
88
97
|
}, undefined, ' '));
|
|
89
98
|
};
|
|
99
|
+
// Config methods
|
|
90
100
|
export const getDataPathFromConfig = (data) => (typeof data === 'string' ? data : data.local);
|
|
91
101
|
const createConfig = async (configDir, override) => {
|
|
92
102
|
const config = {
|
|
@@ -96,6 +106,7 @@ const createConfig = async (configDir, override) => {
|
|
|
96
106
|
...override,
|
|
97
107
|
};
|
|
98
108
|
const decodedConfig = ConfigSchema.decode(config);
|
|
109
|
+
// schemas
|
|
99
110
|
if (!existsSync(config.schemas))
|
|
100
111
|
await fs.mkdir(config.schemas);
|
|
101
112
|
for (const schema of jsonSchemaNames) {
|
|
@@ -108,6 +119,7 @@ const createConfig = async (configDir, override) => {
|
|
|
108
119
|
};
|
|
109
120
|
const checkConfigSchemas = async (config, configPath) => {
|
|
110
121
|
try {
|
|
122
|
+
// Make sure each schema exists and is the correct version
|
|
111
123
|
const outdatedSchemas = [];
|
|
112
124
|
for (const schema of Object.keys(config.schemas)) {
|
|
113
125
|
const schemaPath = fileURLToPath(config.schemas[schema]);
|
|
@@ -146,7 +158,9 @@ export const getConfig = async (overrideConfigDir, overrideConfig) => {
|
|
|
146
158
|
const configPath = path.resolve(configDir, 'config.json');
|
|
147
159
|
if (!existsSync(configDir))
|
|
148
160
|
await fs.mkdir(configDir, { recursive: true });
|
|
161
|
+
// Get config data
|
|
149
162
|
const { data: configData, hadToCreate } = await getDataTargetNicely(ConfigSchema, { name: 'config.json', expectedPath: configPath }, () => createConfig(configDir, overrideConfig), false, toInputConfig);
|
|
163
|
+
// Validate and apply config data contents
|
|
150
164
|
await updateNestedObject(configData.data, ConfigSchema.partial().decode(overrideConfig));
|
|
151
165
|
await checkConfigSchemas(configData.data, configPath);
|
|
152
166
|
return {
|
|
@@ -155,3 +169,4 @@ export const getConfig = async (overrideConfigDir, overrideConfig) => {
|
|
|
155
169
|
hadToCreate,
|
|
156
170
|
};
|
|
157
171
|
};
|
|
172
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/data/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,kBAAkB;AAElB,MAAM,eAAe,GAAG;IACtB,KAAK;IACL,UAAU;IACV,SAAS;IACT,aAAa;IACb,QAAQ;CACA,CAAC;AAGX,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC7C,kBAAkB;AAClB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,sDAAsD,EAAC,CAAC;IAC3H,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAC,KAAK,EAAE,6BAA6B,EAAC,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gEAAgE,EAAC,CAAC;IACnM,aAAa,EAAE,cAAc,CAAC,KAAK,CAAC,uEAAuE,EAAE,EAAC,KAAK,EAAE,kCAAkC,EAAC,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,yDAAyD,EAAC,CAAC;CACrQ,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,6DAA6D,EAAC,CAAC,CAAA;AAEhH,oIAAoI;AACpI,kBAAkB;AAClB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC;QAChB,cAAc,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,8BAA8B,EAAC,CAAC;QAC1F,cAAc,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,8DAA8D,EAAC,CAAC;KAClI,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,iCAAiC,EAAC,CAAC;QAChG,cAAc,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,iEAAiE,EAAC,CAAC;KACrI,CAAC;IAEF,+DAA+D;IAC/D,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,iCAAiC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC,CAAC,CAAC,SAAS,CAClL,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAChC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACxE,CACrC;IAED,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,2FAA2F,EAAC,CAAC;IAC3K,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAE,iEAAiE,CAAC;IACvH,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;IAC1H,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC/E,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAY,EAAE;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CACxD,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,aAAa;YACtD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,GAAU,EAAE;gBACX,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;IACX,CAAC,EACD,IAAI,CACL,CAAC;IACF,OAAO,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,WAAW,GAAyC;IACxD,GAAG,EAAE,SAAS;IACd,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,MAAM,EAAE,YAAY;CACZ,CAAC;AAEX,UAAU;AAEV,MAAM,kBAAkB,GAAG,KAAK,EAAqC,yDAAyD;AAC5H,IAAO,EACP,MAAkB,EACH,EAAE;IACjB,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAA4B,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IACE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;YAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;YAClB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACzB,CAAC;YACD,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;gBACjC,OAAO,EAAE,aAAa,GAAG,CAAC,QAAQ,EAAE,uDAAuD;aAC5F,CAAC,CAAC;YACH,IAAI,YAAY;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,sBAAsB;AAEtB,MAAM,eAAe,GAAG,CAAC,aAAa,EAAU,EAAE,CAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAE5E,MAAM,uBAAuB,GAAG,CAAC,EAAE,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEjE,MAAM,gBAAgB,GAAG,KAAK,EAC5B,YAAuB,EACvB,aAAqB,EACN,EAAE;IACjB,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,OAAO,MAAM,EAAE,CAAC,SAAS,CACvB,UAAU,EACV,IAAI,CAAC,SAAS,CACZ;QACE,GAAG,EAAE,eAAe,CAAC,aAAa,CAAC;QACnC,GAAG,YAAY,CAAC,YAAY,CAAC;YAC3B,EAAE,EAAE,OAAO;YACX,eAAe,EAAE,OAAO;SACzB,CAAC;KACH,EACD,SAAS,EACT,IAAI,CACL,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,iBAAiB;AAEjB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAgD,EACxC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE5D,MAAM,YAAY,GAAG,KAAK,EACxB,SAAiB,EACjB,QAA4B,EAC2B,EAAE;IACzD,MAAM,MAAM,GAAa;QACvB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC;QAClD,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC;QACxD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3C,GAAG,QAAQ;KACZ,CAAC;IACF,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAElD,UAAU;IACV,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACjB,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAC/G,CAAC;YACF,MAAM,gBAAgB,CACpB,WAAW,CAAC,MAAM,CAAC,EACnB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAC9B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAC9B,MAAc,EACd,UAAkB,EACH,EAAE;IACjB,IAAI,CAAC;QACH,0DAA0D;QAC1D,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAC9B,MAAM,CAAC,OAAO,CACoB,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE;oBAC5B,QAAQ,EAAE,MAAM;iBACjB,CAAC,CACH,CAAC;gBAEF,MAAM,OAAO,GACX,UAAU,CAAC,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5D,IAAI,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACnB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAChG,CAAC;oBACF,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,CAAC;qBAAM,IAAI,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;oBACnC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACjB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAC/F,CAAC;gBACF,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;gBACjC,OAAO,EACL,2EAA2E;aAC9E,CAAC,CAAC;YACH,IAAI,YAAY;gBACd,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACjC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAC9D,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,UAAU,IAAI,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,iBAA0B,EAC1B,cAAkC,EAKjC,EAAE;IACH,MAAM,SAAS,GACb,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,kBAAkB;IAClB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,mBAAmB,CACjE,YAAY,EACZ,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,EACjD,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC,EAC7C,KAAK,EACL,aAAa,CACd,CAAC;IAEF,0CAA0C;IAC1C,MAAM,kBAAkB,CACtB,UAAU,CAAC,IAAI,EACf,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAC9C,CAAC;IACF,MAAM,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEtD,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,UAAU;QAChB,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/data/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAU,CAAC;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,cAAc;IACxB,WAAW,EAAE,iBAAiB;IAC9B,MAAM,EAAE,YAAY;CAC6B,CAAC;AAWpD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAiB,EACjB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE;gBAC5C,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE;gBAClD,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE;aAChC;SACX,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GACd,MAAM,KAAK,QAAQ;YACjB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtD,MAAM,kBAAkB,CACtB,YAAY,EACZ,MAAM,KAAK,QAAQ;YACjB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EACrB;YACE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;YAC/B,SAAS,EAAE,kBAAkB;YAC7B,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;SACxC,EACD;YACE,QAAQ,CAAC,GAAG;gBACV,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;oBAC5B,CAAC,CAAC,EAAE,UAAU,EAAE,0BAA0B,EAAE;oBAC5C,CAAC,CAAC,UAAU,CAAC;YACjB,CAAC;SACF,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,eAAe;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;;YAC1C,MAAM,KAAK,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/dist/data/jobqueue.js
CHANGED
|
@@ -2,16 +2,20 @@ import * as z from 'zod';
|
|
|
2
2
|
import { checkProjectName } from './projectpool.js';
|
|
3
3
|
import { makeGistData } from '../utils/gistData.js';
|
|
4
4
|
import { getDataTargetNicely, handleInvalidGist, haveUserUpdateData, makeGistConflictHandler, } from '../utils/promptUser.js';
|
|
5
|
+
// Types / Schemas
|
|
6
|
+
// prettier-ignore
|
|
5
7
|
export const JobSchema = z.object({
|
|
6
8
|
name: z.string().trim().nonempty().meta({ title: 'Job name', description: 'Short name of the job (think a single commit message). Used as job identifier.' }),
|
|
7
9
|
objectivies: z.array(z.string().trim().nonempty()).meta({ title: 'Job objectivies', description: 'A list of objectives to complete for this job. Purely for your benefit.' }),
|
|
8
10
|
updates: z.string().optional().meta({ title: 'Job updates', description: "Put any notes/updates to the job here while you're working. Optional." }),
|
|
9
11
|
project: z.string().trim().nonempty().meta({ title: 'Associated project', description: 'Corresponding project ID in projectpool.json.' }),
|
|
10
12
|
}).meta({ title: 'Job', description: 'A single job entry for JobQueue.' });
|
|
13
|
+
// prettier-ignore
|
|
11
14
|
export const JobQueueSchema = z.object({
|
|
12
15
|
queue: z.array(JobSchema).meta({ title: 'Job queue' }),
|
|
13
16
|
}).meta({ title: 'Job queue root', description: 'Root object for jobs/tasks FIFO queue model.' });
|
|
14
17
|
const defaultJobQueue = { queue: [] };
|
|
18
|
+
// Methods
|
|
15
19
|
export const getJobQueue = async (jsonPath, jsonSchemaUrl, autoCreateFiles = false, editor) => {
|
|
16
20
|
const { data } = await getDataTargetNicely(JobQueueSchema, { name: 'jobqueue.json', expectedPath: jsonPath, jsonSchemaUrl }, async () => ({ encoded: defaultJobQueue }), autoCreateFiles);
|
|
17
21
|
return await makeGistData(JobQueueSchema, data, 'jobqueue.json', makeGistConflictHandler(JobQueueSchema, editor), handleInvalidGist, "JSON to keep track of `jobqueue` data for this user's job-queue implementation (this is probably autogenerated).");
|
|
@@ -30,6 +34,7 @@ export const updateJob = async (job, projectPool, config) => {
|
|
|
30
34
|
jsonSchemaUrl: config.schemas.job,
|
|
31
35
|
}, {
|
|
32
36
|
preparse(rawContents) {
|
|
37
|
+
// Check if user deleted the job
|
|
33
38
|
if (rawContents.trim().length === 0) {
|
|
34
39
|
userDeletedJob = true;
|
|
35
40
|
return 'pass';
|
|
@@ -45,6 +50,7 @@ export const updateJob = async (job, projectPool, config) => {
|
|
|
45
50
|
},
|
|
46
51
|
});
|
|
47
52
|
if (!userDeletedJob) {
|
|
53
|
+
// Make sure corresponding project is set to active
|
|
48
54
|
const jobProject = pool.find((project) => project.name === updatedJob.project);
|
|
49
55
|
if (jobProject.status !== 'active') {
|
|
50
56
|
jobProject.status = 'active';
|
|
@@ -53,3 +59,4 @@ export const updateJob = async (job, projectPool, config) => {
|
|
|
53
59
|
}
|
|
54
60
|
return userDeletedJob ? 'deleted' : updatedJob;
|
|
55
61
|
};
|
|
62
|
+
//# sourceMappingURL=jobqueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobqueue.js","sourceRoot":"","sources":["../../src/data/jobqueue.ts"],"names":[],"mappings":"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"}
|
package/dist/data/projectpool.js
CHANGED
|
@@ -2,16 +2,20 @@ import { confirm } from '@inquirer/prompts';
|
|
|
2
2
|
import * as z from 'zod';
|
|
3
3
|
import { makeGistData } from '../utils/gistData.js';
|
|
4
4
|
import { getDataTargetNicely, handleInvalidGist, haveUserUpdateData, makeGistConflictHandler, } from '../utils/promptUser.js';
|
|
5
|
+
// Types / Schemas
|
|
6
|
+
// prettier-ignore
|
|
5
7
|
export const ProjectSchema = z.object({
|
|
6
8
|
name: z.string().trim().nonempty().meta({ title: 'Project name', description: 'Name of the project. Used as identifier.' }),
|
|
7
9
|
description: z.string().optional().meta({ title: 'Project description', description: 'Longer description of the project. For your benefit, optional.' }),
|
|
8
10
|
repo: z.url().optional().meta({ title: 'Project repository', description: 'URL to project repository. For your benefit, optional.' }),
|
|
9
11
|
status: z.enum(['active', 'inactive', 'complete']).meta({ title: 'Project status', description: "Status of this project. 'active': they are referenced in jobqueue.json, 'inactive': they aren't referenced anywhere and aren't done, 'complete': they're done." }),
|
|
10
12
|
}).meta({ title: 'Project', description: 'A single project entry for JobQueue (usually matches up with a GitHub repo, if you use that).' });
|
|
13
|
+
// prettier-ignore
|
|
11
14
|
export const ProjectPoolSchema = z.object({
|
|
12
15
|
pool: z.array(ProjectSchema).meta({ description: 'Set of projects, works in progress or just ideas.' }),
|
|
13
16
|
}).meta({ title: 'Root project pool', description: 'Root object for pool of projects.' });
|
|
14
17
|
const defaultProjectPool = { pool: [] };
|
|
18
|
+
// Methods
|
|
15
19
|
export const getProjectPool = async (jsonPath, jsonSchemaUrl, autoCreateFiles = false, editor) => {
|
|
16
20
|
const { data } = await getDataTargetNicely(ProjectPoolSchema, { name: 'projectpool.json', expectedPath: jsonPath, jsonSchemaUrl }, async () => ({ encoded: defaultProjectPool }), autoCreateFiles);
|
|
17
21
|
return await makeGistData(ProjectPoolSchema, data, 'projectpool.json', makeGistConflictHandler(ProjectPoolSchema, editor), handleInvalidGist, "JSON to keep track of `projectpool` data for this user's job-queue implementation (this is probably autogenerated).");
|
|
@@ -32,6 +36,7 @@ export const updateProject = async (project, projectPool, jobQueue, config) => {
|
|
|
32
36
|
jsonSchemaUrl: config.schemas.project,
|
|
33
37
|
}, {
|
|
34
38
|
preparse(rawContents) {
|
|
39
|
+
// Check if user deleted the project
|
|
35
40
|
if (rawContents.trim().length === 0) {
|
|
36
41
|
userDeletedProject = true;
|
|
37
42
|
return 'pass';
|
|
@@ -52,6 +57,7 @@ export const updateProject = async (project, projectPool, jobQueue, config) => {
|
|
|
52
57
|
return 'continue';
|
|
53
58
|
},
|
|
54
59
|
});
|
|
60
|
+
// Check if user wants to rename referencing jobs
|
|
55
61
|
if (!userDeletedProject &&
|
|
56
62
|
updatedProject.name !== project.name &&
|
|
57
63
|
jobsReferencingProject.length > 0) {
|
|
@@ -65,5 +71,16 @@ export const updateProject = async (project, projectPool, jobQueue, config) => {
|
|
|
65
71
|
await jobQueue.sync();
|
|
66
72
|
}
|
|
67
73
|
}
|
|
74
|
+
// Check if user wants to delete referencing jobs
|
|
75
|
+
if (userDeletedProject && jobsReferencingProject.length > 0) {
|
|
76
|
+
const deleteJobReferences = await confirm({
|
|
77
|
+
message: `You are deleting this project. Would you like to delete all referencing jobs, too?`,
|
|
78
|
+
});
|
|
79
|
+
if (deleteJobReferences) {
|
|
80
|
+
jobQueue.data.queue = jobQueue.data.queue.filter((job) => job.project !== project.name);
|
|
81
|
+
await jobQueue.sync();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
68
84
|
return userDeletedProject ? 'deleted' : updatedProject;
|
|
69
85
|
};
|
|
86
|
+
//# sourceMappingURL=projectpool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectpool.js","sourceRoot":"","sources":["../../src/data/projectpool.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import clear from 'clear';
|
|
3
3
|
import figlet from 'figlet';
|
|
4
|
-
import {
|
|
4
|
+
import { search } from '@inquirer/prompts';
|
|
5
5
|
import { ExitPromptError, Separator } from '@inquirer/core';
|
|
6
6
|
import actions, { actionNames, actionsDependentOnJobs, actionsDependentOnProjects, } from './actions.js';
|
|
7
7
|
import { getConfig, getDataPathFromConfig } from './data/config.js';
|
|
8
8
|
import { getJobQueue } from './data/jobqueue.js';
|
|
9
9
|
import { getProjectPool } from './data/projectpool.js';
|
|
10
|
-
import { editData } from './data/index.js';
|
|
10
|
+
import { dataNames, editData } from './data/index.js';
|
|
11
11
|
import { simpleDeepCompare } from './utils/index.js';
|
|
12
12
|
import dns from 'dns/promises';
|
|
13
13
|
import { inquirerConfirm } from './utils/promptUser.js';
|
|
14
|
+
import { isGistData } from './utils/gistData.js';
|
|
14
15
|
async function loadData(overrideConfigDir, overrideConfig, previousData) {
|
|
15
16
|
const { config, path: configPath, hadToCreate: autoCreateOtherFiles, } = await getConfig(overrideConfigDir, overrideConfig);
|
|
16
17
|
const data = {
|
|
@@ -30,6 +31,7 @@ async function loadData(overrideConfigDir, overrideConfig, previousData) {
|
|
|
30
31
|
data['projectpool'] = previousData['projectpool'];
|
|
31
32
|
}
|
|
32
33
|
else {
|
|
34
|
+
// Online check connection if its required for a gist and it hasn't already been checked
|
|
33
35
|
if (connectionError === undefined) {
|
|
34
36
|
const resolved = await dns
|
|
35
37
|
.resolve('github.com')
|
|
@@ -42,9 +44,10 @@ async function loadData(overrideConfigDir, overrideConfig, previousData) {
|
|
|
42
44
|
id: config.data[key].ghGistId,
|
|
43
45
|
accessToken: config.data[key].ghAccessToken,
|
|
44
46
|
});
|
|
47
|
+
// Initial pull only if its changed (and user oks it if that's set in config)
|
|
45
48
|
if (!config.data.confirmGistUpdates ||
|
|
46
49
|
(await inquirerConfirm(`Pull gist for ${key}?`))) {
|
|
47
|
-
console.log(chalk.blue('[i]'), '
|
|
50
|
+
console.log(chalk.blue('[i]'), 'pulling', key);
|
|
48
51
|
await data[key].pull();
|
|
49
52
|
}
|
|
50
53
|
}
|
|
@@ -60,60 +63,75 @@ async function loadData(overrideConfigDir, overrideConfig, previousData) {
|
|
|
60
63
|
return data;
|
|
61
64
|
}
|
|
62
65
|
async function syncData(data) {
|
|
63
|
-
for (const key of
|
|
66
|
+
for (const key of dataNames) {
|
|
64
67
|
await data[key].sync();
|
|
65
|
-
if (data[key]
|
|
68
|
+
if (isGistData(data[key]) &&
|
|
69
|
+
data[key].isLinked &&
|
|
66
70
|
(!data.config.data.confirmGistUpdates ||
|
|
67
71
|
(await inquirerConfirm(`Push gist for ${key}?`)))) {
|
|
68
|
-
console.log(chalk.blue('[i]'), '
|
|
72
|
+
console.log(chalk.blue('[i]'), 'pushing', key);
|
|
69
73
|
await data[key].push();
|
|
70
74
|
}
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
77
|
export default async function main(overrideConfigDir, overrideConfig) {
|
|
74
|
-
clear();
|
|
75
|
-
console.log(chalk.yellow(figlet.textSync('JobQueue', { horizontalLayout: 'full' })));
|
|
76
78
|
let data = await loadData(overrideConfigDir, overrideConfig);
|
|
77
|
-
|
|
79
|
+
if (data.config.data.showBanner ?? true) {
|
|
80
|
+
if (data.config.data.showBanner === undefined) {
|
|
81
|
+
clear();
|
|
82
|
+
data.config.data.showBanner = false; // Don't show banner after first usage
|
|
83
|
+
}
|
|
84
|
+
console.log(chalk.yellow(figlet.textSync('JobQueue', { horizontalLayout: 'full' })));
|
|
85
|
+
}
|
|
78
86
|
try {
|
|
79
87
|
while (true) {
|
|
80
|
-
|
|
88
|
+
// Get the desired action
|
|
89
|
+
console.log(); // New line for action seperation
|
|
90
|
+
const actionChoices = actionNames.map((action) => {
|
|
91
|
+
if (actionsDependentOnJobs.includes(action) &&
|
|
92
|
+
data.jobqueue.data.queue.length === 0)
|
|
93
|
+
return {
|
|
94
|
+
name: action,
|
|
95
|
+
value: action,
|
|
96
|
+
disabled: '(Empty job queue)',
|
|
97
|
+
};
|
|
98
|
+
else if (actionsDependentOnProjects.includes(action) &&
|
|
99
|
+
data.projectpool.data.pool.length === 0)
|
|
100
|
+
return {
|
|
101
|
+
name: action,
|
|
102
|
+
value: action,
|
|
103
|
+
disabled: '(Empty project pool)',
|
|
104
|
+
};
|
|
105
|
+
else
|
|
106
|
+
return { name: action, value: action };
|
|
107
|
+
});
|
|
108
|
+
const action = await search({
|
|
81
109
|
message: 'Select action',
|
|
82
|
-
|
|
83
|
-
...
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
value: action,
|
|
96
|
-
disabled: '(Empty project pool)',
|
|
97
|
-
};
|
|
98
|
-
else
|
|
99
|
-
return { name: action, value: action };
|
|
100
|
-
}),
|
|
101
|
-
new Separator(),
|
|
102
|
-
{ name: 'editData', value: 'editData' },
|
|
103
|
-
{ name: 'sync', value: 'sync' },
|
|
104
|
-
],
|
|
110
|
+
source: (partialAction) => {
|
|
111
|
+
const partialSet = new Set([...(partialAction?.toLowerCase() ?? [])]);
|
|
112
|
+
const filteredActions = partialSet.size === 0
|
|
113
|
+
? actionChoices
|
|
114
|
+
: actionChoices.filter((action) => partialSet.isSubsetOf(new Set([...action.name.toLowerCase()])));
|
|
115
|
+
const otherActions = [
|
|
116
|
+
{ name: 'editData', value: 'editData' },
|
|
117
|
+
{ name: 'syncData', value: 'syncData' },
|
|
118
|
+
];
|
|
119
|
+
return filteredActions.length > 0
|
|
120
|
+
? [...filteredActions, new Separator(), ...otherActions]
|
|
121
|
+
: otherActions.filter((action) => partialSet.isSubsetOf(new Set([...action.name.toLowerCase()])));
|
|
122
|
+
},
|
|
105
123
|
pageSize: actionNames.length + 3,
|
|
106
124
|
});
|
|
125
|
+
// Do the action
|
|
107
126
|
if (action === 'editData') {
|
|
108
127
|
await editData(data, data.configPath);
|
|
109
128
|
data = await loadData(overrideConfigDir, overrideConfig, data);
|
|
110
129
|
}
|
|
111
|
-
else if (action === '
|
|
130
|
+
else if (action === 'syncData') {
|
|
112
131
|
await syncData(data);
|
|
113
132
|
}
|
|
114
133
|
else
|
|
115
134
|
await actions[action](data);
|
|
116
|
-
console.log();
|
|
117
135
|
}
|
|
118
136
|
}
|
|
119
137
|
catch (error) {
|
|
@@ -122,3 +140,4 @@ export default async function main(overrideConfigDir, overrideConfig) {
|
|
|
122
140
|
}
|
|
123
141
|
await syncData(data);
|
|
124
142
|
}
|
|
143
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/gistData.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { Octokit } from '@octokit/rest';
|
|
3
3
|
import { simpleDeepCompare } from './index.js';
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4
5
|
export const isGistData = (obj) => typeof obj === 'object' &&
|
|
5
6
|
obj !== null &&
|
|
6
7
|
'isLinked' in obj &&
|
|
@@ -42,7 +43,13 @@ const pushGist = async (octokit, filename, gistId, gist) => {
|
|
|
42
43
|
},
|
|
43
44
|
});
|
|
44
45
|
};
|
|
45
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Create GistData object this UNLINKED BY DEFAULT. You must call `linkGist()` to actually
|
|
48
|
+
* link it to a real gist.
|
|
49
|
+
*/
|
|
50
|
+
export const makeGistData = async (schema, jsonData, filename, // Just in case the name is different than the path.basename(jsonPath)
|
|
51
|
+
handleConflict, handleInvalidGist, // Return null to ignore invalid gist
|
|
52
|
+
overwriteDescription) => {
|
|
46
53
|
let octokit = null;
|
|
47
54
|
let gist = null;
|
|
48
55
|
let lastGistData = null;
|
|
@@ -52,6 +59,7 @@ export const makeGistData = async (schema, jsonData, filename, handleConflict, h
|
|
|
52
59
|
const unlinkedPush = async () => {
|
|
53
60
|
throw new Error('Cannot push unlinked gist');
|
|
54
61
|
};
|
|
62
|
+
// Errors might occur here if the types for GistData change, since we're kinda ignoring typescript here
|
|
55
63
|
const gistData = jsonData;
|
|
56
64
|
gistData.isLinked = false;
|
|
57
65
|
gistData.pull = unlinkedPull;
|
|
@@ -106,3 +114,4 @@ export const makeGistData = async (schema, jsonData, filename, handleConflict, h
|
|
|
106
114
|
};
|
|
107
115
|
return gistData;
|
|
108
116
|
};
|
|
117
|
+
//# sourceMappingURL=gistData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gistData.js","sourceRoot":"","sources":["../../src/utils/gistData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { dataNames, dataSchemas } from '../data/index.js';
|
|
3
|
+
import { makeGistData } from './gistData.js';
|
|
4
|
+
import { readFileSync } from 'fs';
|
|
5
|
+
import { Octokit } from '@octokit/rest';
|
|
6
|
+
import dns from 'dns/promises';
|
|
7
|
+
import { makeJsonData } from './jsonData.js';
|
|
8
|
+
dns.resolve('github.com').catch((error) => {
|
|
9
|
+
throw new Error(`Connection to github.com required for test suite: ${error}`);
|
|
10
|
+
});
|
|
11
|
+
const { TEST_GIST_ID, TEST_GIST_TOKEN } = process.env;
|
|
12
|
+
if (!TEST_GIST_ID || !TEST_GIST_TOKEN)
|
|
13
|
+
throw new Error('Need gist env vars to run test suite');
|
|
14
|
+
// Test gists
|
|
15
|
+
const testGist = { id: TEST_GIST_ID, accessToken: TEST_GIST_TOKEN };
|
|
16
|
+
const testOctokit = new Octokit({ auth: testGist.accessToken });
|
|
17
|
+
const invalidGist = {
|
|
18
|
+
id: 'this is not a valid gist id',
|
|
19
|
+
accessToken: 'this is not a valid access token',
|
|
20
|
+
};
|
|
21
|
+
// Test data targets
|
|
22
|
+
const targetNames = dataNames.filter((name) => name !== 'config');
|
|
23
|
+
const defaultData = {
|
|
24
|
+
jobqueue: { queue: [] },
|
|
25
|
+
projectpool: { pool: [] },
|
|
26
|
+
};
|
|
27
|
+
const changedData = {
|
|
28
|
+
jobqueue: {
|
|
29
|
+
queue: [{ name: 'test', objectivies: ['test'], project: 'test' }],
|
|
30
|
+
},
|
|
31
|
+
projectpool: {
|
|
32
|
+
pool: [{ name: 'test', status: 'inactive' }],
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const dataTargets = targetNames.map((name) => ({
|
|
36
|
+
schema: dataSchemas[name],
|
|
37
|
+
filename: `${name}.json`,
|
|
38
|
+
filepath: path.join(process.cwd(), `sample/${name}.json`),
|
|
39
|
+
defaultData: defaultData[name],
|
|
40
|
+
changedData: changedData[name],
|
|
41
|
+
}));
|
|
42
|
+
const testTargets = async (func, handleConflict = async (_, theirs) => theirs, handleInvalidGist = async () => undefined) => {
|
|
43
|
+
for (const target of dataTargets) {
|
|
44
|
+
const jsonData = await makeJsonData(target.filepath, target.schema);
|
|
45
|
+
const gistData = await makeGistData(target.schema, jsonData, target.filename, handleConflict, handleInvalidGist);
|
|
46
|
+
await func(gistData, target);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
// The actual tests
|
|
50
|
+
describe('gistData', () => {
|
|
51
|
+
describe('linkGist', () => {
|
|
52
|
+
it('should initialize isLinked to false', () => testTargets(async (gistData) => {
|
|
53
|
+
expect(gistData.isLinked).toBe(false);
|
|
54
|
+
}));
|
|
55
|
+
it('should set isLinked to after linking then unlinking', () => testTargets(async (gistData) => {
|
|
56
|
+
await gistData.linkGist(testGist);
|
|
57
|
+
await gistData.linkGist(null);
|
|
58
|
+
expect(gistData.isLinked).toBe(false);
|
|
59
|
+
}));
|
|
60
|
+
it('should not pull when initially linked', () => testTargets(async (gistData, target) => {
|
|
61
|
+
await testOctokit.gists.update({
|
|
62
|
+
gist_id: testGist.id,
|
|
63
|
+
files: {
|
|
64
|
+
[target.filename]: { content: JSON.stringify(target.changedData) },
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
gistData.data = target.defaultData;
|
|
68
|
+
await gistData.linkGist(testGist);
|
|
69
|
+
expect(gistData.data).toStrictEqual(target.defaultData);
|
|
70
|
+
}));
|
|
71
|
+
});
|
|
72
|
+
describe('pull', () => {
|
|
73
|
+
it('should throw when initially unlinked', () => testTargets(async (gistData) => {
|
|
74
|
+
await expect(gistData.pull).rejects.toThrow();
|
|
75
|
+
}));
|
|
76
|
+
it('should throw when linked then unlinked', () => testTargets(async (gistData) => {
|
|
77
|
+
await gistData.linkGist(testGist);
|
|
78
|
+
await gistData.linkGist(null);
|
|
79
|
+
await expect(gistData.pull).rejects.toThrow();
|
|
80
|
+
}));
|
|
81
|
+
it('should throw on invalid gist params', () => testTargets(async (gistData) => {
|
|
82
|
+
await gistData.linkGist(invalidGist);
|
|
83
|
+
await expect(gistData.pull).rejects.toThrow();
|
|
84
|
+
}));
|
|
85
|
+
it('should pull and parse the correct data', () => testTargets(async (gistData, target) => {
|
|
86
|
+
await gistData.linkGist(testGist);
|
|
87
|
+
for (const data of [target.defaultData, target.changedData]) {
|
|
88
|
+
await testOctokit.gists.update({
|
|
89
|
+
gist_id: testGist.id,
|
|
90
|
+
files: {
|
|
91
|
+
[target.filename]: {
|
|
92
|
+
content: JSON.stringify(data),
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
await gistData.pull();
|
|
97
|
+
expect(gistData.data).toStrictEqual(data);
|
|
98
|
+
}
|
|
99
|
+
}), 10000);
|
|
100
|
+
it('should recognize invalid pulled data', () => testTargets(async (gistData, target) => {
|
|
101
|
+
await testOctokit.gists.update({
|
|
102
|
+
gist_id: testGist.id,
|
|
103
|
+
files: {
|
|
104
|
+
[target.filename]: {
|
|
105
|
+
content: 'some invalid contents',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
gistData.data = target.defaultData;
|
|
110
|
+
await gistData.linkGist(testGist);
|
|
111
|
+
await expect(gistData.pull).rejects.toThrow('INVALID CONTENTS');
|
|
112
|
+
}, undefined, async () => {
|
|
113
|
+
throw new Error('INVALID CONTENTS');
|
|
114
|
+
}), 10000);
|
|
115
|
+
it('should recognize conflict when pulling', () => testTargets(async (gistData, target) => {
|
|
116
|
+
await testOctokit.gists.update({
|
|
117
|
+
gist_id: testGist.id,
|
|
118
|
+
files: {
|
|
119
|
+
[target.filename]: {
|
|
120
|
+
content: JSON.stringify(target.changedData),
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
gistData.data = target.defaultData;
|
|
125
|
+
await gistData.linkGist(testGist);
|
|
126
|
+
await expect(gistData.pull).rejects.toThrow('PULL CONFLICT');
|
|
127
|
+
}, async () => {
|
|
128
|
+
throw new Error('PULL CONFLICT');
|
|
129
|
+
}));
|
|
130
|
+
});
|
|
131
|
+
describe('push', () => {
|
|
132
|
+
it('should throw when initially unlinked', () => testTargets(async (gistData) => {
|
|
133
|
+
await expect(gistData.push).rejects.toThrow();
|
|
134
|
+
}));
|
|
135
|
+
it('should throw when linked then unlinked', () => testTargets(async (gistData) => {
|
|
136
|
+
await gistData.linkGist(testGist);
|
|
137
|
+
await gistData.linkGist(null);
|
|
138
|
+
await expect(gistData.push).rejects.toThrow();
|
|
139
|
+
}));
|
|
140
|
+
it('should throw on invalid gist params', () => testTargets(async (gistData) => {
|
|
141
|
+
await gistData.linkGist(invalidGist);
|
|
142
|
+
await expect(gistData.push).rejects.toThrow();
|
|
143
|
+
}));
|
|
144
|
+
it('should throw when pushing invalid data', () => testTargets(async (gistData) => {
|
|
145
|
+
gistData.data = null;
|
|
146
|
+
await expect(gistData.push).rejects.toThrow();
|
|
147
|
+
}));
|
|
148
|
+
it('should push the same data stored locally', () => testTargets(async (gistData, target) => {
|
|
149
|
+
await gistData.linkGist(testGist);
|
|
150
|
+
gistData.data = target.defaultData;
|
|
151
|
+
await gistData.sync();
|
|
152
|
+
await gistData.push();
|
|
153
|
+
const gistContent = (await testOctokit.gists.get({
|
|
154
|
+
gist_id: testGist.id,
|
|
155
|
+
})).data.files[target.filename].content;
|
|
156
|
+
const json = JSON.parse(readFileSync(target.filepath, { encoding: 'utf8' }));
|
|
157
|
+
delete json.$schema;
|
|
158
|
+
expect(JSON.parse(gistContent)).toStrictEqual(json);
|
|
159
|
+
}));
|
|
160
|
+
it('should sync with local file before pushing', () => testTargets(async (gistData, target) => {
|
|
161
|
+
await gistData.linkGist(testGist);
|
|
162
|
+
gistData.data = target.defaultData;
|
|
163
|
+
await gistData.sync();
|
|
164
|
+
gistData.data = target.changedData;
|
|
165
|
+
await gistData.push();
|
|
166
|
+
expect(target.schema.parse(JSON.parse(readFileSync(target.filepath, { encoding: 'utf8' })))).toStrictEqual(target.changedData);
|
|
167
|
+
}));
|
|
168
|
+
it("should check if data's changed before pushing", () => testTargets(async (gistData, target) => {
|
|
169
|
+
await testOctokit.gists.update({
|
|
170
|
+
gist_id: testGist.id,
|
|
171
|
+
files: {
|
|
172
|
+
[target.filename]: {
|
|
173
|
+
content: JSON.stringify(target.defaultData, undefined, ' '),
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
await gistData.linkGist(testGist);
|
|
178
|
+
await gistData.pull();
|
|
179
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
180
|
+
gistData.data = target.defaultData;
|
|
181
|
+
const pushDate = new Date();
|
|
182
|
+
await gistData.push();
|
|
183
|
+
expect(new Date((await testOctokit.gists.get({ gist_id: testGist.id })).data
|
|
184
|
+
.updated_at) < pushDate).toBe(true);
|
|
185
|
+
}), 5000 + 2000 * targetNames.length);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
//# sourceMappingURL=gistData.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gistData.test.js","sourceRoot":"","sources":["../../src/utils/gistData.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export class AbortError extends Error {
|
|
|
3
3
|
super(message);
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
+
/** Reorders in place */
|
|
6
7
|
export function reorder(array, newIndecies) {
|
|
7
8
|
if (array.length !== newIndecies.length)
|
|
8
9
|
throw new RangeError('Indecies array must be same length as target array');
|
|
@@ -18,4 +19,10 @@ export const clearNLines = (n) => {
|
|
|
18
19
|
}
|
|
19
20
|
process.stdout.cursorTo(0);
|
|
20
21
|
};
|
|
21
|
-
|
|
22
|
+
/**
|
|
23
|
+
* For noncomplex deep compare, simply stringifies the two values and compares the strings.
|
|
24
|
+
*/
|
|
25
|
+
export const simpleDeepCompare = (
|
|
26
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
27
|
+
a, b, replacer) => JSON.stringify(a, replacer) === JSON.stringify(b, replacer);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAO;QACjB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAED,wBAAwB;AACxB,MAAM,UAAU,OAAO,CAAI,KAAU,EAAE,WAAqB;IAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QACrC,MAAM,IAAI,UAAU,CAAC,oDAAoD,CAAC,CAAC;IAE7E,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACjC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;QACvC,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAQ,EAAE;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;AAC/B,uDAAuD;AACvD,CAAM,EACN,CAAM,EACN,QAA2C,EAElC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC"}
|
package/dist/utils/jsonData.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @throws SyntaxError (file doesn't contain JSON), ZodError (couldn't parse), Error (generic; e.g. couldn't open file)
|
|
4
|
+
*/
|
|
5
|
+
export const makeJsonData = async (jsonPath, schema, overrideJsonSchemaUrl,
|
|
6
|
+
// If z.input is not equal to z.output, we need a conversion function
|
|
7
|
+
...[toInput]) => {
|
|
3
8
|
const json = JSON.parse(await fs.readFile(jsonPath, 'utf8').catch((error) => {
|
|
4
9
|
throw new Error(`Couldn't open '${jsonPath}': ${error}`);
|
|
5
10
|
}));
|
|
6
|
-
const schemaUrl = overrideJsonSchemaUrl ?? json['$schema'];
|
|
11
|
+
const schemaUrl = overrideJsonSchemaUrl ?? json['$schema']; // save $schema (if it exists) for writing on sync()
|
|
7
12
|
const data = schema.parse(json);
|
|
8
13
|
const jsonData = {
|
|
9
14
|
data,
|
|
@@ -12,10 +17,11 @@ export const makeJsonData = async (jsonPath, schema, overrideJsonSchemaUrl, ...[
|
|
|
12
17
|
return fs.writeFile(jsonPath, JSON.stringify(typeof schemaUrl === 'string'
|
|
13
18
|
? {
|
|
14
19
|
$schema: schemaUrl,
|
|
15
|
-
...encoded
|
|
20
|
+
...encoded /* Must be object if schemaUrl is defined */,
|
|
16
21
|
}
|
|
17
22
|
: encoded, undefined, ' '), 'utf8');
|
|
18
23
|
},
|
|
19
24
|
};
|
|
20
25
|
return jsonData;
|
|
21
26
|
};
|
|
27
|
+
//# sourceMappingURL=jsonData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonData.js","sourceRoot":"","sources":["../../src/utils/jsonData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAS7B;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,QAAgB,EAChB,MAAS,EACT,qBAA8B;AAE9B,qEAAqE;AACrE,GAAG,CAAC,OAAO,CAEL,EACyB,EAAE;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACrB,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAClD,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,MAAM,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CACH,CAAC;IACF,MAAM,SAAS,GAAG,qBAAqB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,oDAAoD;IAEhH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAyB;QACrC,IAAI;QACJ,IAAI;YACF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjE,OAAO,EAAE,CAAC,SAAS,CACjB,QAAQ,EACR,IAAI,CAAC,SAAS,CACZ,OAAO,SAAS,KAAK,QAAQ;gBAC3B,CAAC,CAAC;oBACE,OAAO,EAAE,SAAS;oBAClB,GAAI,OAAkB,CAAC,4CAA4C;iBACpE;gBACH,CAAC,CAAC,OAAO,EACX,SAAS,EACT,IAAI,CACL,EACD,MAAM,CACP,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { dataNames, dataSchemas } from '../data/index.js';
|
|
3
|
+
import { makeJsonData } from './jsonData.js';
|
|
4
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
5
|
+
// Test data targets
|
|
6
|
+
const targetNames = dataNames.filter((name) => name !== 'config');
|
|
7
|
+
const defaultData = {
|
|
8
|
+
jobqueue: { queue: [] },
|
|
9
|
+
projectpool: { pool: [] },
|
|
10
|
+
};
|
|
11
|
+
const changedData = {
|
|
12
|
+
jobqueue: {
|
|
13
|
+
queue: [{ name: 'test', objectivies: ['test'], project: 'test' }],
|
|
14
|
+
},
|
|
15
|
+
projectpool: {
|
|
16
|
+
pool: [{ name: 'test', status: 'inactive' }],
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
const dataTargets = targetNames.map((name) => ({
|
|
20
|
+
schema: dataSchemas[name],
|
|
21
|
+
filepath: path.join(process.cwd(), `sample/${name}.json`),
|
|
22
|
+
defaultData: defaultData[name],
|
|
23
|
+
changedData: changedData[name],
|
|
24
|
+
}));
|
|
25
|
+
const testTargets = async (func) => {
|
|
26
|
+
for (const target of dataTargets)
|
|
27
|
+
await func(target);
|
|
28
|
+
};
|
|
29
|
+
// The actual tests
|
|
30
|
+
describe('jsonData', () => {
|
|
31
|
+
it('should load the correct data initially', () => testTargets(async (target) => {
|
|
32
|
+
for (const data of [target.defaultData, target.changedData]) {
|
|
33
|
+
writeFileSync(target.filepath, JSON.stringify(data), {
|
|
34
|
+
encoding: 'utf8',
|
|
35
|
+
});
|
|
36
|
+
const jsonData = await makeJsonData(target.filepath, target.schema);
|
|
37
|
+
expect(jsonData.data).toStrictEqual(data);
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
it('should throw on invalid data initially', () => testTargets(async (target) => {
|
|
41
|
+
writeFileSync(target.filepath, JSON.stringify('some invalid data'), {
|
|
42
|
+
encoding: 'utf8',
|
|
43
|
+
});
|
|
44
|
+
await expect(() => makeJsonData(target.filepath, target.schema)).rejects.toThrow();
|
|
45
|
+
}));
|
|
46
|
+
describe('sync', () => {
|
|
47
|
+
it('should write the same contents as data', () => testTargets(async (target) => {
|
|
48
|
+
writeFileSync(target.filepath, JSON.stringify(target.defaultData));
|
|
49
|
+
const jsonData = await makeJsonData(target.filepath, target.schema);
|
|
50
|
+
for (const data of [target.defaultData, target.changedData]) {
|
|
51
|
+
jsonData.data = data;
|
|
52
|
+
await jsonData.sync();
|
|
53
|
+
expect(JSON.parse(readFileSync(target.filepath, { encoding: 'utf8' }))).toStrictEqual(data);
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=jsonData.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonData.test.js","sourceRoot":"","sources":["../../src/utils/jsonData.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/promptUser.js
CHANGED
|
@@ -18,28 +18,7 @@ export const haveUserUpdateContents = async (contents, options, check) => {
|
|
|
18
18
|
});
|
|
19
19
|
const originalContents = await fs.readFile(file.path, { encoding: 'utf8' });
|
|
20
20
|
while (true) {
|
|
21
|
-
|
|
22
|
-
const signal = controller.signal;
|
|
23
|
-
const editorPromise = editInteractively(file.path, contents, options?.editor, options?.tooltips);
|
|
24
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
25
|
-
const abortPromise = confirm({ message: 'Type `y` to abort...' }, { signal })
|
|
26
|
-
.finally(() => clearNLines(1))
|
|
27
|
-
.then(async (shouldAbort) => {
|
|
28
|
-
if (shouldAbort) {
|
|
29
|
-
if (file.cleanup)
|
|
30
|
-
await file.cleanup();
|
|
31
|
-
else
|
|
32
|
-
await fs.writeFile(file.path, originalContents, {
|
|
33
|
-
encoding: 'utf8',
|
|
34
|
-
});
|
|
35
|
-
throw new AbortError('User aborted action');
|
|
36
|
-
}
|
|
37
|
-
return undefined;
|
|
38
|
-
});
|
|
39
|
-
contents = await Promise.race([editorPromise, abortPromise]);
|
|
40
|
-
controller.abort();
|
|
41
|
-
if (typeof contents !== 'string')
|
|
42
|
-
return undefined;
|
|
21
|
+
contents = await editInteractively(file.path, contents, options?.editor, options?.tooltips);
|
|
43
22
|
if (check) {
|
|
44
23
|
const error = check(contents);
|
|
45
24
|
if (error === 'pass') {
|
|
@@ -47,7 +26,15 @@ export const haveUserUpdateContents = async (contents, options, check) => {
|
|
|
47
26
|
}
|
|
48
27
|
else if (typeof error === 'object') {
|
|
49
28
|
console.log(chalk.red(`${options?.errorHead}:`), error.errMessage);
|
|
50
|
-
|
|
29
|
+
if (!(await inquirerConfirm('Try again?'))) {
|
|
30
|
+
if (file.cleanup)
|
|
31
|
+
await file.cleanup();
|
|
32
|
+
else
|
|
33
|
+
await fs.writeFile(file.path, originalContents, {
|
|
34
|
+
encoding: 'utf8',
|
|
35
|
+
});
|
|
36
|
+
throw new AbortError('User aborted action');
|
|
37
|
+
}
|
|
51
38
|
}
|
|
52
39
|
}
|
|
53
40
|
}
|
|
@@ -61,6 +48,7 @@ export const haveUserUpdateData = async (schema, data, options, checks) => {
|
|
|
61
48
|
: data, undefined, ' ');
|
|
62
49
|
let updatedData = undefined;
|
|
63
50
|
await haveUserUpdateContents(contents, options, (contents) => {
|
|
51
|
+
// Load back editor contents and validate them
|
|
64
52
|
if (checks?.preparse) {
|
|
65
53
|
const preparseError = checks.preparse(contents);
|
|
66
54
|
if (preparseError !== 'continue') {
|
|
@@ -90,12 +78,18 @@ export const haveUserUpdateData = async (schema, data, options, checks) => {
|
|
|
90
78
|
});
|
|
91
79
|
return updatedData;
|
|
92
80
|
};
|
|
81
|
+
/**
|
|
82
|
+
* Tries to get data following a Zod `schema` from the `expectedPath` while being nice to the user.
|
|
83
|
+
* Otherwise, call `recreateData` and write JSON to `expectedPath` and then try to parse the file
|
|
84
|
+
* again into JsonData.
|
|
85
|
+
*/
|
|
93
86
|
export async function getDataTargetNicely(schema, target, recreateData, autoCreateFiles = false, ...conversionArg) {
|
|
94
87
|
let jsonData = undefined;
|
|
95
88
|
let hadToCreate = false;
|
|
96
89
|
try {
|
|
97
90
|
if (!existsSync(target.expectedPath))
|
|
98
|
-
throw new AbortError(
|
|
91
|
+
throw new AbortError(// Hacky hack; just using AbortError so I can check for it during catch
|
|
92
|
+
`File '${target.expectedPath}' for ${target.name} does not exist`);
|
|
99
93
|
jsonData = await makeJsonData(target.expectedPath, schema, target.jsonSchemaUrl, ...conversionArg);
|
|
100
94
|
}
|
|
101
95
|
catch (error) {
|
|
@@ -115,7 +109,7 @@ export async function getDataTargetNicely(schema, target, recreateData, autoCrea
|
|
|
115
109
|
message: `Want to regenerate ${target.name}?`,
|
|
116
110
|
}).finally(() => clearNLines(1)));
|
|
117
111
|
if (shouldRegenerate) {
|
|
118
|
-
clearNLines(1);
|
|
112
|
+
clearNLines(1); // Clear error line
|
|
119
113
|
console.log(chalk.blue('[i]'), `Creating ${target.name} at '${target.expectedPath}'...`);
|
|
120
114
|
hadToCreate = true;
|
|
121
115
|
const { encoded, newJsonPath, newJsonSchemaUrl } = await recreateData();
|
|
@@ -160,6 +154,7 @@ export const resolveConflictLikeGit = async (schema, ours, theirs, editor) => {
|
|
|
160
154
|
changeGroup = ['', ''];
|
|
161
155
|
changeGroup[change.added ? 1 : 0] += change.value;
|
|
162
156
|
}
|
|
157
|
+
// Write change group if its the end
|
|
163
158
|
if (changeGroup && idx === diff.length - 1)
|
|
164
159
|
diffString += formatGitChange(...changeGroup, true);
|
|
165
160
|
return diffString;
|
|
@@ -213,3 +208,4 @@ export const handleInvalidGist = async (_, error) => {
|
|
|
213
208
|
if (!shouldContinue)
|
|
214
209
|
throw new Error(`Invalid gist for '${filename}' and user aborted`);
|
|
215
210
|
};
|
|
211
|
+
//# sourceMappingURL=promptUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptUser.js","sourceRoot":"","sources":["../../src/utils/promptUser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Credit: https://github.com/th0r/inquirer-sortable-checkbox/
|
|
2
|
+
// Is inquirer-sortable-checkbox but it has a better return type for sorting and uses shift instead of ctrl for sorting
|
|
1
3
|
import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, makeTheme, isUpKey, isDownKey, isSpaceKey, isNumberKey, isEnterKey, ValidationError, } from '@inquirer/core';
|
|
2
4
|
import chalk from 'chalk';
|
|
3
5
|
import figures from '@inquirer/figures';
|
|
@@ -73,6 +75,7 @@ export default createPrompt((config, done) => {
|
|
|
73
75
|
setItems(items.map(toggle));
|
|
74
76
|
}
|
|
75
77
|
else if (isNumberKey(key)) {
|
|
78
|
+
// Adjust index to start at 1
|
|
76
79
|
const position = Number(key.name) - 1;
|
|
77
80
|
const item = items[position];
|
|
78
81
|
if (item != null && isSelectable(item)) {
|
|
@@ -195,3 +198,4 @@ function isMoveItemUpKey(key) {
|
|
|
195
198
|
function isMoveItemDownKey(key) {
|
|
196
199
|
return key.shift && isDownKey(key);
|
|
197
200
|
}
|
|
201
|
+
//# sourceMappingURL=sortableCheckbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortableCheckbox.js","sourceRoot":"","sources":["../../src/utils/sortableCheckbox.ts"],"names":[],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
|
+
|
|
6
|
+
import pkg from './package.json' with { type: 'json' };
|
|
5
7
|
import main from './dist/index.js';
|
|
6
8
|
|
|
7
9
|
const program = new Command();
|
|
8
10
|
|
|
9
11
|
program
|
|
10
12
|
.name('job-queue')
|
|
11
|
-
.description(
|
|
12
|
-
|
|
13
|
-
)
|
|
14
|
-
.version('0.0.0')
|
|
13
|
+
.description(pkg.description)
|
|
14
|
+
.version(pkg.version)
|
|
15
15
|
.option(
|
|
16
16
|
'-c, --config <path>',
|
|
17
17
|
'path to directory containing config.json (uses new system app dir by default)',
|
|
@@ -36,6 +36,7 @@ program
|
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
await main(configDir, { ...options })
|
|
39
|
+
.finally(() => console.log()) // Seperation line
|
|
39
40
|
.then(() => {
|
|
40
41
|
console.log(chalk.cyanBright('🖖 Live long and prosper...'));
|
|
41
42
|
process.exit();
|