@tui-sandbox/library 11.3.2 → 11.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [11.3.3](https://github.com/mikavilpas/tui-sandbox/compare/library-v11.3.2...library-v11.3.3) (2025-08-02)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * not mentioning `tui neovim prepare` in `tui` usage instructions ([68448c5](https://github.com/mikavilpas/tui-sandbox/commit/68448c5575d753de647a82b352c0a3b6c22f424a))
9
+
3
10
  ## [11.3.2](https://github.com/mikavilpas/tui-sandbox/compare/library-v11.3.1...library-v11.3.2) (2025-08-02)
4
11
 
5
12
 
@@ -0,0 +1,9 @@
1
+ export declare const parseArguments: (args: string[]) => Promise<ParseArgumentsResult | undefined>;
2
+ export type ParseArgumentsResult = {
3
+ action: "neovim prepare";
4
+ } | {
5
+ action: "neovim exec";
6
+ command: string;
7
+ } | {
8
+ action: "start";
9
+ };
@@ -0,0 +1,38 @@
1
+ import assert from "assert";
2
+ import * as z from "zod";
3
+ export const parseArguments = async (args) => {
4
+ {
5
+ // tui neovim prepare
6
+ const schema = z.tuple([z.literal("neovim"), z.literal("prepare")]);
7
+ const prepareArguments = schema.safeParse(args);
8
+ if (prepareArguments.success) {
9
+ return {
10
+ action: "neovim prepare",
11
+ };
12
+ }
13
+ }
14
+ {
15
+ // tui neovim exec <command> [<args>...]
16
+ const schema = z.tuple([z.literal("neovim"), z.literal("exec"), z.string()]);
17
+ const execArguments = schema.safeParse(args);
18
+ if (execArguments.success) {
19
+ const command = execArguments.data.at(2);
20
+ assert(command, "No command provided for neovim exec");
21
+ return {
22
+ action: "neovim exec",
23
+ command,
24
+ };
25
+ }
26
+ }
27
+ {
28
+ // tui start
29
+ const schema = z.tuple([z.literal("start")]);
30
+ const result = schema.safeParse(args);
31
+ if (result.success) {
32
+ return {
33
+ action: "start",
34
+ };
35
+ }
36
+ }
37
+ };
38
+ //# sourceMappingURL=parseArguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArguments.js","sourceRoot":"","sources":["../../../src/scripts/parseArguments.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,IAAc,EAA6C,EAAE;IAChG,CAAC;QACC,qBAAqB;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACnE,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,gBAAgB;aACzB,CAAA;QACH,CAAC;IACH,CAAC;IAED,CAAC;QACC,wCAAwC;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACxC,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAA;YACtD,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,OAAO;aACR,CAAA;QACH,CAAC;IACH,CAAC;IAED,CAAC;QACC,YAAY;QACZ,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,OAAO;aAChB,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { parseArguments } from "./parseArguments.js";
2
+ it(`can parse "neovim prepare"`, async () => {
3
+ expect(await parseArguments(["neovim", "prepare"])).toEqual({ action: "neovim prepare" });
4
+ expect(await parseArguments(["neovim", "prepare", "foo"])).toBeUndefined();
5
+ });
6
+ describe("neovim exec", () => {
7
+ it(`can parse "neovim exec <command>"`, async () => {
8
+ expect(await parseArguments(["neovim", "exec", "foo"])).toEqual({ action: "neovim exec", command: "foo" });
9
+ });
10
+ it(`only allows one argument`, async () => {
11
+ expect(await parseArguments(["neovim", "exec"])).toBeUndefined();
12
+ expect(await parseArguments(["neovim", "exec", "foo", "bar"])).toBeUndefined();
13
+ });
14
+ });
15
+ it(`can parse "start"`, async () => {
16
+ expect(await parseArguments(["start"])).toEqual({ action: "start" });
17
+ expect(await parseArguments(["start", "foo"])).toBeUndefined();
18
+ });
19
+ //# sourceMappingURL=parseArguments.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArguments.test.js","sourceRoot":"","sources":["../../../src/scripts/parseArguments.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC1C,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;IACzF,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;AAC5E,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5G,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QAChE,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IACjC,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACpE,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;AAChE,CAAC,CAAC,CAAA"}
@@ -50,13 +50,13 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
50
50
  var e = new Error(message);
51
51
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
52
  });
53
- import assert from "node:assert";
54
53
  import path from "node:path";
55
54
  import { installDependencies } from "../server/applications/neovim/api.js";
56
55
  import { NeovimApplication } from "../server/applications/neovim/NeovimApplication.js";
57
56
  import { prepareNewTestDirectory } from "../server/applications/neovim/prepareNewTestDirectory.js";
58
57
  import { createCypressSupportFile } from "../server/cypress-support/createCypressSupportFile.js";
59
58
  import { startTestServer, updateTestdirectorySchemaFile } from "../server/index.js";
59
+ import { parseArguments } from "./parseArguments.js";
60
60
  //
61
61
  // This is the main entrypoint to tui-sandbox
62
62
  //
@@ -73,8 +73,9 @@ const config = {
73
73
  };
74
74
  // the arguments passed to this script start at index 2
75
75
  const args = process.argv.slice(2);
76
- if (args[0] === "neovim") {
77
- if (args[1] === "prepare" && args.length === 2) {
76
+ const command = await parseArguments(args);
77
+ switch (command?.action) {
78
+ case "neovim prepare": {
78
79
  const NVIM_APPNAME = process.env["NVIM_APPNAME"];
79
80
  console.log(`🚀 Installing neovim dependencies${NVIM_APPNAME ? ` for NVIM_APPNAME=${NVIM_APPNAME}` : ""}...`);
80
81
  await installDependencies(config.directories.testEnvironmentPath, process.env["NVIM_APPNAME"], config.directories).catch((err) => {
@@ -83,12 +84,7 @@ if (args[0] === "neovim") {
83
84
  });
84
85
  process.exit(0);
85
86
  }
86
- if (!(args[1] === "exec" && args.length === 3)) {
87
- showUsageAndExit();
88
- }
89
- const command = args[2];
90
- assert(command, "No command provided");
91
- {
87
+ case "neovim exec": {
92
88
  const env_1 = { stack: [], error: void 0, hasError: false };
93
89
  try {
94
90
  // automatically dispose of the neovim instance when done
@@ -99,10 +95,11 @@ if (args[0] === "neovim") {
99
95
  const testDirectory = await prepareNewTestDirectory(config.directories);
100
96
  await app.startNextAndKillCurrent(testDirectory, {
101
97
  filename: "empty.txt",
102
- headlessCmd: command,
98
+ headlessCmd: command.command,
103
99
  NVIM_APPNAME: process.env["NVIM_APPNAME"],
104
100
  }, { cols: 80, rows: 24 });
105
101
  await app.application.untilExit();
102
+ break;
106
103
  }
107
104
  catch (e_1) {
108
105
  env_1.error = e_1;
@@ -114,32 +111,35 @@ if (args[0] === "neovim") {
114
111
  await result_1;
115
112
  }
116
113
  }
117
- process.exit(0);
118
- }
119
- if (args[0] !== "start") {
120
- showUsageAndExit();
121
- }
122
- console.log(`🚀 Starting test server in ${cwd} - this should be the root of your integration-tests directory 🤞🏻`);
123
- try {
124
- await createCypressSupportFile({
125
- cypressSupportDirectoryPath: path.join(cwd, "cypress", "support"),
126
- supportFileName: "tui-sandbox.ts",
127
- });
128
- }
129
- catch (e) {
130
- console.error("Failed to createCypressSupportFile", e);
131
- }
132
- try {
133
- await updateTestdirectorySchemaFile(config.directories);
134
- }
135
- catch (e) {
136
- console.error("Failed to updateTestdirectorySchemaFile", e);
137
- }
138
- try {
139
- await startTestServer(config);
140
- }
141
- catch (e) {
142
- console.error("Failed to startTestServer", e);
114
+ case "start": {
115
+ try {
116
+ await createCypressSupportFile({
117
+ cypressSupportDirectoryPath: path.join(cwd, "cypress", "support"),
118
+ supportFileName: "tui-sandbox.ts",
119
+ });
120
+ }
121
+ catch (e) {
122
+ console.error("Failed to createCypressSupportFile", e);
123
+ }
124
+ try {
125
+ await updateTestdirectorySchemaFile(config.directories);
126
+ }
127
+ catch (e) {
128
+ console.error("Failed to updateTestdirectorySchemaFile", e);
129
+ }
130
+ try {
131
+ console.log(`🚀 Starting test server in ${cwd} - this should be the root of your integration-tests directory 🤞🏻`);
132
+ await startTestServer(config);
133
+ }
134
+ catch (e) {
135
+ console.error("Failed to startTestServer", e);
136
+ }
137
+ break;
138
+ }
139
+ default: {
140
+ command;
141
+ showUsageAndExit();
142
+ }
143
143
  }
144
144
  function showUsageAndExit() {
145
145
  console.log([
@@ -147,6 +147,7 @@ function showUsageAndExit() {
147
147
  `Usage (pick one):`,
148
148
  ` tui start`,
149
149
  ` tui neovim exec '<ex-command>'`,
150
+ ` tui neovim prepare`,
150
151
  ].join("\n"));
151
152
  process.exit(1);
152
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/scripts/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/scripts/tui.ts"],"names":[],"mappings":"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"}