Comparing version
{ | ||
"name": "plop", | ||
"version": "3.0.1", | ||
"version": "3.0.2", | ||
"description": "Micro-generator framework that makes it easy for an entire team to create files with a level of uniformity", | ||
@@ -34,3 +34,2 @@ "main": "./src/plop", | ||
"devDependencies": { | ||
"cli-testing-library": "1.0.0-alpha.9", | ||
"eslint": "^8.3.0", | ||
@@ -53,2 +52,3 @@ "eslint-config-prettier": "^8.3.0", | ||
"chalk": "^5.0.0", | ||
"cli-testing-library": "^1.0.0-alpha.10", | ||
"interpret": "^2.2.0", | ||
@@ -55,0 +55,0 @@ "liftoff": "^4.0.0", |
@@ -124,2 +124,3 @@ #!/usr/bin/env node | ||
function doThePlop(generator, bypassArr) { | ||
let failedActions = false; | ||
generator | ||
@@ -160,2 +161,3 @@ .runPrompts(bypassArr) | ||
progressSpinner.fail(line); | ||
failedActions = true; | ||
progressSpinner.start(); | ||
@@ -166,3 +168,6 @@ }; | ||
.runActions(answers, { onSuccess, onFailure, onComment }) | ||
.then(() => progressSpinner.stop()); | ||
.then(() => { | ||
progressSpinner.stop(); | ||
if (failedActions) process.exit(1); | ||
}); | ||
}) | ||
@@ -169,0 +174,0 @@ .catch(function (err) { |
@@ -16,3 +16,3 @@ import { resolve, dirname } from "node:path"; | ||
const { findByText, fireEvent } = await renderPlop(["addAndNameFile"], { | ||
const { findByText, userEvent } = await renderPlop(["addAndNameFile"], { | ||
cwd: resolve(__dirname, "./examples/add-action"), | ||
@@ -23,4 +23,4 @@ }); | ||
fireEvent.type("new-output"); | ||
fireEvent.enter(); | ||
userEvent.keyboard("new-output"); | ||
userEvent.keyboard("[Enter]"); | ||
@@ -32,4 +32,2 @@ await waitFor(() => fs.promises.stat(expectedFilePath)); | ||
expect(data).toMatch(/Hello/); | ||
fireEvent.sigterm(); | ||
}); | ||
@@ -42,3 +40,3 @@ | ||
const { findByText, fireEvent } = await renderPlop(["addAndChangeFile"], { | ||
const { findByText, userEvent } = await renderPlop(["addAndChangeFile"], { | ||
cwd: resolve(__dirname, "./examples/add-action"), | ||
@@ -49,4 +47,4 @@ }); | ||
fireEvent.type("Corbin"); | ||
fireEvent.enter(); | ||
userEvent.keyboard("Corbin"); | ||
userEvent.keyboard("[Enter]"); | ||
@@ -58,4 +56,2 @@ await waitFor(() => fs.promises.stat(expectedFilePath)); | ||
expect(data).toMatch(/Hi Corbin!/); | ||
fireEvent.sigterm(); | ||
}); | ||
@@ -62,0 +58,0 @@ |
@@ -9,43 +9,39 @@ import { resolve, dirname } from "node:path"; | ||
test("should load ESM file", async () => { | ||
const { findByText, fireEvent } = await renderPlop([], { | ||
const { findByText, userEvent } = await renderPlop([], { | ||
cwd: resolve(__dirname, "./examples/esm"), | ||
}); | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.type("Joe"); | ||
userEvent.keyboard("Joe"); | ||
expect(await findByText("Joe")).toBeTruthy(); | ||
fireEvent.enter(); | ||
fireEvent.sigterm(); | ||
userEvent.keyboard("[Enter]"); | ||
}); | ||
test("should load MJS file", async () => { | ||
const { findByText, fireEvent } = await renderPlop([], { | ||
const { findByText, userEvent } = await renderPlop([], { | ||
cwd: resolve(__dirname, "./examples/mjs"), | ||
}); | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.type("Joe"); | ||
userEvent.keyboard("Joe"); | ||
expect(await findByText("Joe")).toBeTruthy(); | ||
fireEvent.enter(); | ||
fireEvent.sigterm(); | ||
userEvent.keyboard("[Enter]"); | ||
}); | ||
test.only("should load CJS file", async () => { | ||
const { findByText, fireEvent } = await renderPlop([], { | ||
test("should load CJS file", async () => { | ||
const { findByText, userEvent } = await renderPlop([], { | ||
cwd: resolve(__dirname, "./examples/cjs"), | ||
}); | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.type("Joe"); | ||
userEvent.keyboard("Joe"); | ||
expect(await findByText("Joe")).toBeTruthy(); | ||
fireEvent.enter(); | ||
fireEvent.sigterm(); | ||
userEvent.keyboard("[Enter]"); | ||
}); | ||
test("should load JS module='commonjs' file", async () => { | ||
const { findByText, fireEvent } = await renderPlop([], { | ||
const { findByText, userEvent } = await renderPlop([], { | ||
cwd: resolve(__dirname, "./examples/cjs-js"), | ||
}); | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.type("Joe"); | ||
userEvent.keyboard("Joe"); | ||
expect(await findByText("Joe")).toBeTruthy(); | ||
fireEvent.enter(); | ||
fireEvent.sigterm(); | ||
userEvent.keyboard("[Enter]"); | ||
}); |
@@ -31,14 +31,13 @@ import { resolve, dirname } from "node:path"; | ||
test("should display inquirer prompts", async () => { | ||
const { findByText, fireEvent } = await renderPlop([], { | ||
const { findByText, userEvent } = await renderPlop([], { | ||
cwd: resolve(__dirname, "./examples/prompt-only"), | ||
}); | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.type("Joe"); | ||
userEvent.keyboard("Joe"); | ||
expect(await findByText("Joe")).toBeTruthy(); | ||
fireEvent.enter(); | ||
fireEvent.sigterm(); | ||
userEvent.keyboard("[Enter]"); | ||
}); | ||
test("Should handle generator prompt", async () => { | ||
const { findByText, clear, fireEvent } = await renderPlop([""], { | ||
const { findByText, clear, userEvent } = await renderPlop([""], { | ||
cwd: resolve(__dirname, "./examples/javascript"), | ||
@@ -50,13 +49,11 @@ }); | ||
clear(); | ||
fireEvent.up(); | ||
fireEvent.down(); | ||
fireEvent.enter(); | ||
userEvent.keyboard("[ArrowUp]"); | ||
userEvent.keyboard("[ArrowDown]"); | ||
userEvent.keyboard("[Enter]"); | ||
expect(await findByText("this is a test")).toBeTruthy(); | ||
fireEvent.sigterm(); | ||
}); | ||
test("Should bypass generator prompt", async () => { | ||
const { findByText, fireEvent } = await renderPlop(["test"], { | ||
const { findByText } = await renderPlop(["test"], { | ||
cwd: resolve(__dirname, "./examples/javascript"), | ||
@@ -66,8 +63,6 @@ }); | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.sigterm(); | ||
}); | ||
test("Should bypass prompt by input", async () => { | ||
const { queryByText, findByText, fireEvent } = await renderPlop(["Frank"], { | ||
const { queryByText, findByText } = await renderPlop(["Frank"], { | ||
cwd: resolve(__dirname, "./examples/prompt-only"), | ||
@@ -78,8 +73,6 @@ }); | ||
expect(await findByText("What pizza toppings do you like?")).toBeTruthy(); | ||
fireEvent.sigterm(); | ||
}); | ||
test("Should bypass prompt by input placeholder", async () => { | ||
const { queryByText, findByText, fireEvent } = await renderPlop( | ||
const { queryByText, findByText, userEvent } = await renderPlop( | ||
["_", "Cheese"], | ||
@@ -92,10 +85,8 @@ { | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.enter(); | ||
userEvent.keyboard("[Enter]"); | ||
expect(await queryByText("What pizza toppings do you like?")).toBeFalsy(); | ||
fireEvent.sigterm(); | ||
}); | ||
test("Should bypass prompt by name", async () => { | ||
const { queryByText, findByText, fireEvent } = await renderPlop( | ||
const { queryByText, findByText } = await renderPlop( | ||
["--", "--name", "Frank"], | ||
@@ -109,6 +100,4 @@ { | ||
expect(await findByText("What pizza toppings do you like?")).toBeTruthy(); | ||
fireEvent.sigterm(); | ||
}); | ||
test.todo("Dynamic actions"); |
@@ -30,3 +30,2 @@ import fs from "node:fs"; | ||
expect(await findByText("What is your name?")).toBeTruthy(); | ||
fireEvent.sigterm(); | ||
}); | ||
@@ -44,3 +43,2 @@ | ||
expect(await findByText("What pizza toppings do you like?")).toBeTruthy(); | ||
fireEvent.sigterm(); | ||
}); | ||
@@ -58,3 +56,2 @@ | ||
expect(await findByText("What pizza toppings do you like?")).toBeTruthy(); | ||
fireEvent.sigterm(); | ||
}); | ||
@@ -76,4 +73,2 @@ | ||
expect(data).toMatch(/Hello/); | ||
fireEvent.sigterm(); | ||
}); |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 3 instances in 1 package
12
-7.69%0
-100%100
25%5
-28.57%98981
-99.84%9
12.5%67
-72.65%1777
-98.11%1
Infinity%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added