@kunver/new 3.2.0 → 3.3.1
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 +0 -2
- package/dist/index.js +11 -11
- package/dist/templates/cmake-cpp/README.md +32 -32
- package/dist/templates/cmake-cpp/agents.md +8 -8
- package/dist/templates/cmake-cpp/manager.ts +276 -276
- package/dist/templates/next-prisma/_prettierrc.json +12 -12
- package/dist/templates/next-prisma/manager.cjs +71 -71
- package/dist/templates/next-prisma/next.config.ts +7 -7
- package/dist/templates/next-prisma/postcss.config.mjs +5 -5
- package/dist/templates/react-ts-tw/README.md +1 -1
- package/dist/templates/react-ts-tw/_prettierrc.json +12 -12
- package/dist/templates/react-ts-tw/manager.cjs +71 -71
- package/dist/templates/react-ts-tw/src/index.css +1 -1
- package/dist/templates/react-ts-tw/src/main.tsx +10 -10
- package/dist/templates/react-ts-tw/tsconfig.json +4 -4
- package/dist/templates/react-ts-tw/vite.config.ts +8 -8
- package/dist/templates/wxt-solid/_prettierrc.json +11 -0
- package/dist/templates/wxt-solid/entrypoints/content/Content.tsx +7 -7
- package/dist/templates/wxt-solid/entrypoints/options/main.tsx +6 -6
- package/dist/templates/wxt-solid/entrypoints/popup/{App.tsx → Popup.tsx} +7 -7
- package/dist/templates/wxt-solid/entrypoints/popup/main.tsx +6 -6
- package/dist/templates/wxt-solid/manager.cjs +71 -71
- package/dist/templates/wxt-svelte/_prettierrc.json +11 -11
- package/dist/templates/wxt-svelte/entrypoints/content/index.ts +25 -25
- package/dist/templates/wxt-svelte/entrypoints/options/index.html +13 -13
- package/dist/templates/wxt-svelte/entrypoints/options/main.ts +9 -9
- package/dist/templates/wxt-svelte/entrypoints/popup/index.html +13 -13
- package/dist/templates/wxt-svelte/entrypoints/popup/main.ts +9 -9
- package/dist/templates/wxt-svelte/manager.cjs +71 -71
- package/dist/templates/wxt-vanilla/_prettierrc.json +11 -11
- package/dist/templates/wxt-vanilla/entrypoints/background.ts +3 -3
- package/dist/templates/wxt-vanilla/entrypoints/content.ts +6 -6
- package/dist/templates/wxt-vanilla/entrypoints/popup/main.ts +1 -1
- package/dist/templates/wxt-vanilla/manager.cjs +71 -71
- package/package.json +55 -55
- package/dist/templates/electron-svelte/README.md +0 -3
- package/dist/templates/electron-svelte/_gitignore +0 -6
- package/dist/templates/electron-svelte/_prettierignore +0 -6
- package/dist/templates/electron-svelte/_prettierrc.yaml +0 -13
- package/dist/templates/electron-svelte/build/entitlements.mac.plist +0 -12
- package/dist/templates/electron-svelte/build/icon.icns +0 -0
- package/dist/templates/electron-svelte/build/icon.ico +0 -0
- package/dist/templates/electron-svelte/build/icon.png +0 -0
- package/dist/templates/electron-svelte/bun.lock +0 -1154
- package/dist/templates/electron-svelte/electron-builder.yml +0 -44
- package/dist/templates/electron-svelte/electron.vite.config.ts +0 -15
- package/dist/templates/electron-svelte/manager.cjs +0 -71
- package/dist/templates/electron-svelte/package.json +0 -44
- package/dist/templates/electron-svelte/resources/icon.png +0 -0
- package/dist/templates/electron-svelte/src/main/index.ts +0 -62
- package/dist/templates/electron-svelte/src/preload/index.d.ts +0 -8
- package/dist/templates/electron-svelte/src/preload/index.ts +0 -22
- package/dist/templates/electron-svelte/src/renderer/index.html +0 -16
- package/dist/templates/electron-svelte/src/renderer/src/App.svelte +0 -8
- package/dist/templates/electron-svelte/src/renderer/src/assets/main.css +0 -1
- package/dist/templates/electron-svelte/src/renderer/src/env.d.ts +0 -2
- package/dist/templates/electron-svelte/src/renderer/src/main.ts +0 -11
- package/dist/templates/electron-svelte/svelte.config.mjs +0 -7
- package/dist/templates/electron-svelte/tsconfig.json +0 -4
- package/dist/templates/electron-svelte/tsconfig.node.json +0 -11
- package/dist/templates/electron-svelte/tsconfig.web.json +0 -17
- /package/dist/templates/wxt-solid/entrypoints/options/{App.tsx → Options.tsx} +0 -0
- /package/dist/templates/wxt-svelte/entrypoints/content/{App.svelte → Content.svelte} +0 -0
- /package/dist/templates/wxt-svelte/entrypoints/options/{App.svelte → Options.svelte} +0 -0
- /package/dist/templates/wxt-svelte/entrypoints/popup/{App.svelte → Popup.svelte} +0 -0
package/README.MD
CHANGED
|
@@ -18,7 +18,6 @@ The CLI asks for a project name, starter type, package manager when needed, and
|
|
|
18
18
|
- Svelte
|
|
19
19
|
- Vanilla
|
|
20
20
|
- Solid
|
|
21
|
-
- Electron + Svelte
|
|
22
21
|
- UV Notebook
|
|
23
22
|
- C++ + CMake
|
|
24
23
|
|
|
@@ -26,7 +25,6 @@ The CLI asks for a project name, starter type, package manager when needed, and
|
|
|
26
25
|
|
|
27
26
|
- C++ + CMake projects include a `manager.ts` bridge for commands like `bun manager.ts dev` and `bun manager.ts build`.
|
|
28
27
|
- The C++ + CMake starter automatically updates the CMake project name to the folder name you enter.
|
|
29
|
-
- Electron + Svelte is created without auto-installing dependencies.
|
|
30
28
|
|
|
31
29
|
## Package managers
|
|
32
30
|
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import H,{readFileSync,existsSync,promises}from'fs';import R,{dirname,join}from'path';import {input,select,confirm}from'@inquirer/prompts';import i from'chalk';import {mkdir,writeFile,readFile,rm}from'fs/promises';import {execa}from'execa';import {spawn}from'child_process';import L from'ora';import {fileURLToPath}from'url';async function y(e){let{name:n,cwd:t=process.cwd()}=e,r=join(t,n),o=join(r,"main.ipynb");await mkdir(r,{recursive:true}),await execa("uv",["init","--python","3.12"],{cwd:r,stdout:"inherit",stderr:"inherit"}),await execa("uv",["add","numpy"],{cwd:r,stdout:"inherit",stderr:"inherit"}),await writeFile(o,ne(n),"utf8");}function ne(e){return `${JSON.stringify({cells:[{cell_type:"markdown",metadata:{language:"markdown"},source:[`# ${e}
|
|
2
2
|
`,`
|
|
3
3
|
`,`Starter notebook with NumPy ready to use.
|
|
4
4
|
`]},{cell_type:"code",execution_count:null,metadata:{language:"python"},outputs:[],source:[`import numpy as np
|
|
5
5
|
`,`np.arange(5)
|
|
6
6
|
`]}],metadata:{kernelspec:{display_name:"Python 3.12",language:"python",name:"python3"},language_info:{name:"python",version:"3.12"}},nbformat:4,nbformat_minor:5},null,2)}
|
|
7
|
-
`}var
|
|
8
|
-
`),setTimeout(()=>{
|
|
9
|
-
`),
|
|
10
|
-
`);try{return await execa(
|
|
11
|
-
`),!0}catch(t){return console.error("Error updating project name:",t),false}}async function
|
|
7
|
+
`}var J=["react-ts-tw","next-ts-prisma","wxt","uv-notebook","cmake-cpp"],U=["bun","pnpm","npm"],A=["antigravity","windsurf","no","cursor","code"],h=["svelte","vanilla","solid"];async function u(e,n,t){switch(e){case "pnpm":return await ae(n,t);case "bun":return await ie(n,t);default:return false}}async function ae(e,n){let t=L("Approving builds for "+i.blue(e)).start(),r=join(n,e);try{return new Promise(o=>{let a=spawn("pnpm",["approve-builds"],{cwd:r,stdio:["pipe","inherit","inherit"],shell:!0});setTimeout(()=>{a.stdin?.write(`a
|
|
8
|
+
`),setTimeout(()=>{a.stdin?.write(`y
|
|
9
|
+
`),a.stdin?.end();},1e3);},2e3),a.on("close",s=>{s===0?(t.succeed("Approved builds for "+i.blue(e)),o(!0)):(t.fail("Failed to approve builds for "+i.blue(e)),o(!1));}),a.on("error",s=>{t.fail("Failed to approve builds for "+i.blue(e)),console.error(s),o(!1);});})}catch(o){return t.fail("Failed to approve builds for "+i.blue(e)),console.error(o),false}}async function ie(e,n){let t=L("Approving builds for "+i.blue(e)).start(),r=join(n,e);try{return await execa("bun",["pm","trust","--all"],{cwd:r}),t.succeed("Approved builds for "+i.blue(e)),!0}catch{return t.fail("Failed to approve builds for "+i.blue(e)),false}}async function k(e,n,t){let r=join(t,n);console.log("Installing dependencies with "+i.cyan(e)+`
|
|
10
|
+
`);try{return await execa(e,["install"],{cwd:r,stdout:"inherit",stderr:"inherit"}),!0}catch{return false}}async function z(e){let n=await promises.readdir(e,{withFileTypes:true});for(let t of n){let r=R.join(e,t.name),o=r;t.name.startsWith("_")&&t.name.length>1&&(o=R.join(e,`.${t.name.slice(1)}`),await promises.rename(r,o)),t.isDirectory()&&await z(o);}}async function b(e,n){let t=L("Copying template folder...").start();try{return await promises.cp(e,n,{recursive:!0}),await z(n),t.succeed("Copied template folder"),!0}catch{return t.fail("Failed to copy template folder"),false}}async function j(e,n,t){let r=join(t,n,"package.json"),o=await H.promises.readFile(r,"utf-8"),a=JSON.parse(o);e==="bun"?a.scripts.manager=`bun manager.cjs ${e}`:a.scripts.manager=`node manager.cjs ${e}`,await H.promises.writeFile(r,JSON.stringify(a,null,2));}async function x(e,n,t){console.log(i.white("Opening "+i.blue(e)+" in "+i.green(t)));try{return await execa(t,[e],{cwd:n}),!0}catch(r){return console.error(i.red("Failed to open project in editor:"),r),false}}function we(){return typeof __dirname<"u"?__dirname:typeof import.meta<"u"&&import.meta.url?dirname(fileURLToPath(import.meta.url)):process.cwd()}var X=we();async function p(e,n){if(await n()===false)throw new Error(`Failed to ${e}`)}function ye(e){let n=join(X,"../public/templates",e),t=join(X,"templates",e);return existsSync(n)?n:t}async function l(e){let{templateName:n,name:t,packageManager:r,cwd:o=process.cwd(),addManager:a=true,changeName:s=true,approveBuild:V=true,installDependency:Y=true,onBeforeInstall:N}=e,w=join(o,t),Z=ye(n);try{return await p("copy template folder",()=>b(Z,w)),N&&await p("run pre-install hook",()=>N(w)),Y&&await p("install dependencies",()=>k(r,t,o)),a&&await p("add manager script",()=>j(r,t,o)),V&&await p("approve builds",()=>u(r,t,o)),s&&await p("change project name",()=>v(w,t)),!0}catch(_){throw console.error("Error creating project:",_),_}}async function v(e,n){try{let t=join(e,"package.json"),r=await readFile(t,"utf-8"),o=JSON.parse(r);return o.name=n.toLowerCase().replace(/\s+/g,"-"),await writeFile(t,JSON.stringify(o,null,2)+`
|
|
11
|
+
`),!0}catch(t){return console.error("Error updating project name:",t),false}}async function C(e,n){try{let t=join(e,"CMakeLists.txt"),r=await readFile(t,"utf-8"),o=r.replace(/project\s*\(\s*(?:"[^"]+"|[^\s\)]+)([\s\S]*?)\)/i,`project("${n}"$1)`);return o===r?!1:(await writeFile(t,o),!0)}catch(t){return console.error("Error updating CMake project name:",t),false}}async function S(e){console.log(i.white("Configuring CMake project in "+i.blue(e)));try{return await execa("cmake",["-S",".","-B","build"],{cwd:e,stdout:"inherit",stderr:"inherit"}),console.log(i.green("CMake project configured successfully")),!0}catch{return console.log(i.yellow("Automatic CMake configure skipped. Run `cmake -S . -B build` manually if needed.")),false}}var Ie={svelte:"wxt-svelte",solid:"wxt-solid",vanilla:"wxt-vanilla"};async function Me(e){return e&&h.includes(e)?e:await select({message:i.bold.magenta("Select a framework for WXT"),choices:h.map(n=>({name:n.charAt(0).toUpperCase()+n.slice(1),value:n})),default:"svelte"})}async function Oe(e){let n=await confirm({message:i.bold.cyan("Use i18n? (@wxt-dev/i18n)"),default:false}),r=e==="svelte"||e==="solid"?await confirm({message:i.bold.cyan("Do you want to use content UI?"),default:false}):false;return {useI18n:n,useContentUI:r}}async function Fe(e){let n=join(e,"entrypoints","content"),t=join(e,"entrypoints","content.ts"),r=`export default defineContentScript({
|
|
12
12
|
matches: ["*://*.google.com/*"],
|
|
13
13
|
main() {
|
|
14
14
|
console.log("Hello content.");
|
|
15
15
|
},
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
default_locale: "en",`),
|
|
19
|
-
modules: ["@wxt-dev/i18n/module"],`),await writeFile(
|
|
20
|
-
`,"utf-8");}
|
|
21
|
-
`));var
|
|
17
|
+
`;await rm(n,{recursive:true,force:true}),await writeFile(t,r,"utf-8");}async function Ee(e){let n=join(e,"package.json"),t=await readFile(n,"utf-8"),r=JSON.parse(t);r.devDependencies=r.devDependencies||{},r.devDependencies["@wxt-dev/i18n"]="0.2.5",await writeFile(n,JSON.stringify(r,null,2),"utf-8");let o=join(e,"wxt.config.ts"),a=await readFile(o,"utf-8");a=a.replace("manifest: {",`manifest: {
|
|
18
|
+
default_locale: "en",`),a.includes("modules: [")?a=a.replace("modules: [",'modules: ["@wxt-dev/i18n/module", '):a=a.replace("export default defineConfig({",`export default defineConfig({
|
|
19
|
+
modules: ["@wxt-dev/i18n/module"],`),await writeFile(o,a,"utf-8");let s=join(e,"locales");await mkdir(s,{recursive:true}),await writeFile(join(s,"en.yml"),`hello: Hello!
|
|
20
|
+
`,"utf-8");}function Ne(e,n){return async t=>{(e==="svelte"||e==="solid")&&!n.useContentUI&&await Fe(t),n.useI18n&&await Ee(t);}}async function M(e){let{name:n,packageManager:t,selectedFramework:r}=e;try{let o=await Me(r),a=await Oe(o);await l({templateName:Ie[o],name:n,packageManager:t,onBeforeInstall:Ne(o,a)});}catch(o){throw console.error(o),o}}function G(e,n){return async t=>{await l({templateName:e,name:t.name,packageManager:t.packageManager,...n});}}var Be={"react-ts-tw":G("react-ts-tw"),"next-ts-prisma":G("next-prisma"),wxt:async e=>{await M({name:e.name,packageManager:e.packageManager});},"uv-notebook":async e=>{await y({name:e.name});},"cmake-cpp":async e=>{await l({templateName:"cmake-cpp",name:e.name,packageManager:"bun",addManager:false,approveBuild:false,installDependency:false,changeName:false,onBeforeInstall:async n=>{await C(n,e.name),await S(n);}});}};async function O(e){let n=Be[e.projectType];if(!n){console.log(i.red("Project Type Not Implemented"),e.projectType);return}await n(e),e.openInEditor!=="no"&&await x(e.name,process.cwd(),e.openInEditor);}var Re=fileURLToPath(import.meta.url),ze=dirname(Re),He=join(ze,"../package.json"),Xe=JSON.parse(readFileSync(He,"utf8")),Ke=Xe.version;console.log(i.green("Kunver v"+i.bold(Ke)+`
|
|
21
|
+
`));var qe=await input({message:i.bold.blue("Enter a project name"),default:i.gray("my-project"),validate:e=>!e||e.trim().length<2?i.red("Project name must be at least 2 characters"):/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)?H.existsSync(R.resolve(process.cwd(),e))?i.red("A folder with that name already exists"):true:i.red("Only lowercase letters, numbers, and single hyphens allowed. No spaces or special characters.")}),F=await select({message:i.bold.yellow("Select a project type"),default:"react-ts-tw",choices:J}),Q="bun";F!=="uv-notebook"&&F!=="cmake-cpp"&&(Q=await select({message:i.bold.green("Select a package manager"),choices:U,default:"bun"}));var Ge=await select({message:i.bold.cyan("Open in editor?"),choices:A,default:"no"}),Qe={projectType:F,packageManager:Q,name:qe,openInEditor:Ge};await O(Qe);
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# Cpp + CMake template
|
|
2
|
-
|
|
3
|
-
Opinionated C++ project starter with CMake build system.
|
|
4
|
-
|
|
5
|
-
## Requirements
|
|
6
|
-
|
|
7
|
-
- CMake 3.20+
|
|
8
|
-
- Bun
|
|
9
|
-
- GCC, Clang, or MSVC
|
|
10
|
-
- VS Code C/C++ or CMake Tools extension
|
|
11
|
-
|
|
12
|
-
## CLI behavior
|
|
13
|
-
|
|
14
|
-
- `kunver-new` runs `cmake -S . -B build` automatically after creating the project when CMake is available.
|
|
15
|
-
- If that step fails, the project is still created and you can run the command manually.
|
|
16
|
-
|
|
17
|
-
## Manager bridge
|
|
18
|
-
|
|
19
|
-
- `bun manager.ts dev` configures, builds, and runs the app.
|
|
20
|
-
- `bun manager.ts build` configures if needed, then builds.
|
|
21
|
-
- `bun manager.ts run` runs the latest built executable.
|
|
22
|
-
- `bun manager.ts rebuild` deletes `build/`, then configures and builds again.
|
|
23
|
-
- `bun manager.ts clean` deletes `build/`.
|
|
24
|
-
- `bun manager.ts doctor` checks required files.
|
|
25
|
-
|
|
26
|
-
## Raw CMake usage
|
|
27
|
-
|
|
28
|
-
- Configure: `cmake -S . -B build`
|
|
29
|
-
- Build: `cmake --build build`
|
|
30
|
-
- Run: use the executable generated inside `build/` by your chosen CMake generator.
|
|
31
|
-
|
|
32
|
-
Note: `kunver` rewrites the CMake project name to the folder name you enter during creation, and `manager.ts` reads that same name from `CMakeLists.txt`.
|
|
1
|
+
# Cpp + CMake template
|
|
2
|
+
|
|
3
|
+
Opinionated C++ project starter with CMake build system.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- CMake 3.20+
|
|
8
|
+
- Bun
|
|
9
|
+
- GCC, Clang, or MSVC
|
|
10
|
+
- VS Code C/C++ or CMake Tools extension
|
|
11
|
+
|
|
12
|
+
## CLI behavior
|
|
13
|
+
|
|
14
|
+
- `kunver-new` runs `cmake -S . -B build` automatically after creating the project when CMake is available.
|
|
15
|
+
- If that step fails, the project is still created and you can run the command manually.
|
|
16
|
+
|
|
17
|
+
## Manager bridge
|
|
18
|
+
|
|
19
|
+
- `bun manager.ts dev` configures, builds, and runs the app.
|
|
20
|
+
- `bun manager.ts build` configures if needed, then builds.
|
|
21
|
+
- `bun manager.ts run` runs the latest built executable.
|
|
22
|
+
- `bun manager.ts rebuild` deletes `build/`, then configures and builds again.
|
|
23
|
+
- `bun manager.ts clean` deletes `build/`.
|
|
24
|
+
- `bun manager.ts doctor` checks required files.
|
|
25
|
+
|
|
26
|
+
## Raw CMake usage
|
|
27
|
+
|
|
28
|
+
- Configure: `cmake -S . -B build`
|
|
29
|
+
- Build: `cmake --build build`
|
|
30
|
+
- Run: use the executable generated inside `build/` by your chosen CMake generator.
|
|
31
|
+
|
|
32
|
+
Note: `kunver` rewrites the CMake project name to the folder name you enter during creation, and `manager.ts` reads that same name from `CMakeLists.txt`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# About Project
|
|
2
|
-
|
|
3
|
-
- This is a minimal C++ project template that uses CMake as its build system.
|
|
4
|
-
- Source files live in `src/`, headers live in `include/`, and build output is generated in `build/`.
|
|
5
|
-
- The project targets C++20 and expects CMake 3.20 or newer.
|
|
6
|
-
- Prefer using `bun manager.ts dev` for configure + build + run during development.
|
|
7
|
-
- Other common commands are `bun manager.ts build`, `bun manager.ts run`, and `bun manager.ts clean`.
|
|
8
|
-
- If you change project structure, keep `CMakeLists.txt` in sync.
|
|
1
|
+
# About Project
|
|
2
|
+
|
|
3
|
+
- This is a minimal C++ project template that uses CMake as its build system.
|
|
4
|
+
- Source files live in `src/`, headers live in `include/`, and build output is generated in `build/`.
|
|
5
|
+
- The project targets C++20 and expects CMake 3.20 or newer.
|
|
6
|
+
- Prefer using `bun manager.ts dev` for configure + build + run during development.
|
|
7
|
+
- Other common commands are `bun manager.ts build`, `bun manager.ts run`, and `bun manager.ts clean`.
|
|
8
|
+
- If you change project structure, keep `CMakeLists.txt` in sync.
|