@kamaras/venpm 0.0.1 → 0.1.0
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/LICENSE +21 -0
- package/README.md +65 -0
- package/actions/publish-index/action.yml +50 -0
- package/dist/cli/config-cmd.d.ts +3 -0
- package/dist/cli/config-cmd.d.ts.map +1 -0
- package/dist/cli/config-cmd.js +100 -0
- package/dist/cli/config-cmd.js.map +1 -0
- package/dist/cli/context.d.ts +6 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +149 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/create.d.ts +23 -0
- package/dist/cli/create.d.ts.map +1 -0
- package/dist/cli/create.js +238 -0
- package/dist/cli/create.js.map +1 -0
- package/dist/cli/doctor.d.ts +3 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +67 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/info.d.ts +5 -0
- package/dist/cli/info.d.ts.map +1 -0
- package/dist/cli/info.js +105 -0
- package/dist/cli/info.js.map +1 -0
- package/dist/cli/install.d.ts +5 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +252 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/list.d.ts +5 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +41 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/rebuild.d.ts +3 -0
- package/dist/cli/rebuild.d.ts.map +1 -0
- package/dist/cli/rebuild.js +74 -0
- package/dist/cli/rebuild.js.map +1 -0
- package/dist/cli/repo.d.ts +3 -0
- package/dist/cli/repo.d.ts.map +1 -0
- package/dist/cli/repo.js +93 -0
- package/dist/cli/repo.js.map +1 -0
- package/dist/cli/search.d.ts +5 -0
- package/dist/cli/search.d.ts.map +1 -0
- package/dist/cli/search.js +50 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli/uninstall.d.ts +5 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +69 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/update.d.ts +5 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +161 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/validate.d.ts +3 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +99 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/core/builder.d.ts +31 -0
- package/dist/core/builder.d.ts.map +1 -0
- package/dist/core/builder.js +65 -0
- package/dist/core/builder.js.map +1 -0
- package/dist/core/cache.d.ts +17 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +36 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/config.d.ts +7 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +32 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/detect.d.ts +28 -0
- package/dist/core/detect.d.ts.map +1 -0
- package/dist/core/detect.js +100 -0
- package/dist/core/detect.js.map +1 -0
- package/dist/core/fetcher.d.ts +21 -0
- package/dist/core/fetcher.d.ts.map +1 -0
- package/dist/core/fetcher.js +92 -0
- package/dist/core/fetcher.js.map +1 -0
- package/dist/core/json.d.ts +9 -0
- package/dist/core/json.d.ts.map +1 -0
- package/dist/core/json.js +10 -0
- package/dist/core/json.js.map +1 -0
- package/dist/core/lockfile.d.ts +9 -0
- package/dist/core/lockfile.d.ts.map +1 -0
- package/dist/core/lockfile.js +30 -0
- package/dist/core/lockfile.js.map +1 -0
- package/dist/core/log.d.ts +8 -0
- package/dist/core/log.d.ts.map +1 -0
- package/dist/core/log.js +24 -0
- package/dist/core/log.js.map +1 -0
- package/dist/core/paths.d.ts +4 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +33 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/prompt.d.ts +5 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +67 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/registry.d.ts +52 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +134 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/resolver.d.ts +47 -0
- package/dist/core/resolver.d.ts.map +1 -0
- package/dist/core/resolver.js +153 -0
- package/dist/core/resolver.js.map +1 -0
- package/dist/core/schema.d.ts +8 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +47 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/types.d.ts +206 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/package.json +42 -6
- package/schemas/v1/config.schema.json +53 -0
- package/schemas/v1/lockfile.schema.json +43 -0
- package/schemas/v1/plugins.schema.json +69 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 kamaras
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# venpm
|
|
2
|
+
|
|
3
|
+
Vencord Plugin Manager — install and manage userplugins from JSON indexes.
|
|
4
|
+
|
|
5
|
+
**Full documentation: [venpm.dev](https://venpm.dev)**
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @kamaras/venpm
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or run without installing:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx @kamaras/venpm doctor
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Requires Node.js 18+.
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
venpm doctor # check environment
|
|
25
|
+
venpm config set vencord.path ~/Vencord
|
|
26
|
+
|
|
27
|
+
venpm search betterFolders # find plugins
|
|
28
|
+
venpm install BetterFolders # install a plugin
|
|
29
|
+
venpm list # list installed plugins
|
|
30
|
+
venpm update # update all plugins
|
|
31
|
+
venpm rebuild # rebuild Vencord
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## For Plugin Authors
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
venpm create my-plugins # scaffold a new plugin repo
|
|
38
|
+
venpm create my-plugins/MyPlugin # scaffold a plugin inside a repo
|
|
39
|
+
venpm validate plugins.json # validate your index file
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
See [Publishing Plugins](https://venpm.dev/author/your-first-plugin) for the full walkthrough.
|
|
43
|
+
|
|
44
|
+
## How It Works
|
|
45
|
+
|
|
46
|
+
1. Authors publish a `plugins.json` index file ([spec](https://venpm.dev/author/plugin-index)) somewhere reachable — GitHub Releases, a raw URL, or any static host.
|
|
47
|
+
2. Users add that URL with `venpm repo add <url>`.
|
|
48
|
+
3. `venpm install <plugin>` resolves dependencies, fetches via git or tarball, and optionally rebuilds Vencord.
|
|
49
|
+
|
|
50
|
+
## Development
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git clone https://github.com/theokyr/venpm.git && cd venpm
|
|
54
|
+
node scripts/setup.mjs
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npm run dev # watch mode
|
|
59
|
+
npm test # 224 tests
|
|
60
|
+
npm run lint # type check
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## License
|
|
64
|
+
|
|
65
|
+
MIT
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: "venpm Publish Index"
|
|
2
|
+
description: "Validate and publish a venpm plugin index as a GitHub Release"
|
|
3
|
+
|
|
4
|
+
inputs:
|
|
5
|
+
index-path:
|
|
6
|
+
description: "Path to plugins.json"
|
|
7
|
+
required: false
|
|
8
|
+
default: "plugins.json"
|
|
9
|
+
strict:
|
|
10
|
+
description: "Run strict validation (check URLs, deps)"
|
|
11
|
+
required: false
|
|
12
|
+
default: "true"
|
|
13
|
+
|
|
14
|
+
runs:
|
|
15
|
+
using: "composite"
|
|
16
|
+
steps:
|
|
17
|
+
- name: Setup Node.js
|
|
18
|
+
uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: "18"
|
|
21
|
+
|
|
22
|
+
- name: Validate index
|
|
23
|
+
shell: bash
|
|
24
|
+
run: |
|
|
25
|
+
STRICT_FLAG=""
|
|
26
|
+
if [ "${{ inputs.strict }}" = "true" ]; then
|
|
27
|
+
STRICT_FLAG="--strict"
|
|
28
|
+
fi
|
|
29
|
+
npx venpm validate "${{ inputs.index-path }}" $STRICT_FLAG
|
|
30
|
+
|
|
31
|
+
- name: Create plugin tarballs
|
|
32
|
+
shell: bash
|
|
33
|
+
run: |
|
|
34
|
+
PLUGINS_DIR=$(dirname "${{ inputs.index-path }}")/plugins
|
|
35
|
+
if [ -d "$PLUGINS_DIR" ]; then
|
|
36
|
+
mkdir -p dist
|
|
37
|
+
for plugin_dir in "$PLUGINS_DIR"/*/; do
|
|
38
|
+
plugin_name=$(basename "$plugin_dir")
|
|
39
|
+
tar -czf "dist/${plugin_name}.tar.gz" -C "$PLUGINS_DIR" "$plugin_name"
|
|
40
|
+
echo "Created dist/${plugin_name}.tar.gz"
|
|
41
|
+
done
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
- name: Upload artifacts
|
|
45
|
+
uses: actions/upload-artifact@v4
|
|
46
|
+
with:
|
|
47
|
+
name: venpm-release
|
|
48
|
+
path: |
|
|
49
|
+
${{ inputs.index-path }}
|
|
50
|
+
dist/*.tar.gz
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgE5D"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { loadConfig, saveConfig } from "../core/config.js";
|
|
2
|
+
import { getConfigPath, getConfigDir } from "../core/paths.js";
|
|
3
|
+
import { jsonSuccess, jsonError, writeJson } from "../core/json.js";
|
|
4
|
+
import { createRealIOContext } from "./context.js";
|
|
5
|
+
function getNestedValue(obj, keys) {
|
|
6
|
+
let current = obj;
|
|
7
|
+
for (const key of keys) {
|
|
8
|
+
if (current === null || current === undefined || typeof current !== "object") {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
current = current[key];
|
|
12
|
+
}
|
|
13
|
+
return current;
|
|
14
|
+
}
|
|
15
|
+
function setNestedValue(obj, keys, value) {
|
|
16
|
+
let current = obj;
|
|
17
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
18
|
+
const key = keys[i];
|
|
19
|
+
if (current[key] === null || current[key] === undefined || typeof current[key] !== "object") {
|
|
20
|
+
current[key] = {};
|
|
21
|
+
}
|
|
22
|
+
current = current[key];
|
|
23
|
+
}
|
|
24
|
+
current[keys[keys.length - 1]] = value;
|
|
25
|
+
}
|
|
26
|
+
function coerceValue(raw) {
|
|
27
|
+
if (raw === "null")
|
|
28
|
+
return null;
|
|
29
|
+
if (raw === "true")
|
|
30
|
+
return true;
|
|
31
|
+
if (raw === "false")
|
|
32
|
+
return false;
|
|
33
|
+
// Try JSON parse for numbers/arrays/objects
|
|
34
|
+
try {
|
|
35
|
+
return JSON.parse(raw);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return raw;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function registerConfigCommand(program) {
|
|
42
|
+
const config = program
|
|
43
|
+
.command("config")
|
|
44
|
+
.description("View or edit venpm configuration");
|
|
45
|
+
config
|
|
46
|
+
.command("set <key> <value>")
|
|
47
|
+
.description("Set a configuration value (dotted key path)")
|
|
48
|
+
.action(async (key, value) => {
|
|
49
|
+
const parentOpts = program.opts();
|
|
50
|
+
const ctx = createRealIOContext(parentOpts);
|
|
51
|
+
const configPath = parentOpts.config ?? getConfigPath();
|
|
52
|
+
const cfg = await loadConfig(ctx.fs, configPath);
|
|
53
|
+
const keys = key.split(".");
|
|
54
|
+
const coerced = coerceValue(value);
|
|
55
|
+
setNestedValue(cfg, keys, coerced);
|
|
56
|
+
await saveConfig(ctx.fs, configPath, cfg);
|
|
57
|
+
if (parentOpts.json) {
|
|
58
|
+
writeJson(jsonSuccess({ key, value: coerced }));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
ctx.logger.success(`Set ${key} = ${JSON.stringify(coerced)}`);
|
|
62
|
+
});
|
|
63
|
+
config
|
|
64
|
+
.command("get <key>")
|
|
65
|
+
.description("Get a configuration value (dotted key path)")
|
|
66
|
+
.action(async (key) => {
|
|
67
|
+
const parentOpts = program.opts();
|
|
68
|
+
const ctx = createRealIOContext(parentOpts);
|
|
69
|
+
const configPath = parentOpts.config ?? getConfigPath();
|
|
70
|
+
const cfg = await loadConfig(ctx.fs, configPath);
|
|
71
|
+
const keys = key.split(".");
|
|
72
|
+
const value = getNestedValue(cfg, keys);
|
|
73
|
+
if (value === undefined) {
|
|
74
|
+
if (parentOpts.json) {
|
|
75
|
+
writeJson(jsonError(`Key "${key}" not found in config`));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
ctx.logger.error(`Key "${key}" not found in config`);
|
|
79
|
+
process.exitCode = 1;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (parentOpts.json) {
|
|
83
|
+
writeJson(jsonSuccess({ key, value }));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
console.log(JSON.stringify(value, null, 2));
|
|
87
|
+
});
|
|
88
|
+
config
|
|
89
|
+
.command("path")
|
|
90
|
+
.description("Print the venpm config directory path")
|
|
91
|
+
.action(() => {
|
|
92
|
+
const parentOpts = program.opts();
|
|
93
|
+
if (parentOpts.json) {
|
|
94
|
+
writeJson(jsonSuccess({ path: getConfigDir() }));
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
console.log(getConfigDir());
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=config-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAkD,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CA4J1G"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { execFile as _execFile, spawn as _spawn } from "node:child_process";
|
|
2
|
+
import { promisify } from "node:util";
|
|
3
|
+
import * as fsPromises from "node:fs/promises";
|
|
4
|
+
import { createPrompter } from "../core/prompt.js";
|
|
5
|
+
import { createLogger } from "../core/log.js";
|
|
6
|
+
const execFileAsync = promisify(_execFile);
|
|
7
|
+
export function createRealIOContext(options) {
|
|
8
|
+
const fs = {
|
|
9
|
+
async readFile(path, encoding) {
|
|
10
|
+
return fsPromises.readFile(path, { encoding });
|
|
11
|
+
},
|
|
12
|
+
async writeFile(path, data, encoding) {
|
|
13
|
+
return fsPromises.writeFile(path, data, { encoding: encoding ?? "utf8" });
|
|
14
|
+
},
|
|
15
|
+
async exists(path) {
|
|
16
|
+
try {
|
|
17
|
+
await fsPromises.access(path);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
async mkdir(path, opts) {
|
|
25
|
+
await fsPromises.mkdir(path, opts);
|
|
26
|
+
},
|
|
27
|
+
async rm(path, opts) {
|
|
28
|
+
await fsPromises.rm(path, opts);
|
|
29
|
+
},
|
|
30
|
+
async symlink(target, path) {
|
|
31
|
+
return fsPromises.symlink(target, path);
|
|
32
|
+
},
|
|
33
|
+
async readlink(path) {
|
|
34
|
+
return fsPromises.readlink(path);
|
|
35
|
+
},
|
|
36
|
+
async readdir(path) {
|
|
37
|
+
return fsPromises.readdir(path);
|
|
38
|
+
},
|
|
39
|
+
async stat(path) {
|
|
40
|
+
return fsPromises.stat(path);
|
|
41
|
+
},
|
|
42
|
+
async lstat(path) {
|
|
43
|
+
return fsPromises.lstat(path);
|
|
44
|
+
},
|
|
45
|
+
async copyDir(src, dest) {
|
|
46
|
+
await fsPromises.cp(src, dest, { recursive: true });
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const http = {
|
|
50
|
+
async fetch(url, fetchOptions) {
|
|
51
|
+
const res = await globalThis.fetch(url, { headers: fetchOptions?.headers });
|
|
52
|
+
return {
|
|
53
|
+
ok: res.ok,
|
|
54
|
+
status: res.status,
|
|
55
|
+
headers: res.headers,
|
|
56
|
+
text: () => res.text(),
|
|
57
|
+
json: () => res.json(),
|
|
58
|
+
arrayBuffer: () => res.arrayBuffer(),
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
const git = {
|
|
63
|
+
async available() {
|
|
64
|
+
try {
|
|
65
|
+
await execFileAsync("git", ["--version"]);
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
async clone(url, dest, cloneOptions) {
|
|
73
|
+
const args = ["clone", "--filter=blob:none"];
|
|
74
|
+
if (cloneOptions?.sparse && cloneOptions.sparse.length > 0) {
|
|
75
|
+
args.push("--sparse");
|
|
76
|
+
}
|
|
77
|
+
if (cloneOptions?.branch) {
|
|
78
|
+
args.push("--branch", cloneOptions.branch);
|
|
79
|
+
}
|
|
80
|
+
if (cloneOptions?.depth !== undefined) {
|
|
81
|
+
args.push("--depth", String(cloneOptions.depth));
|
|
82
|
+
}
|
|
83
|
+
args.push(url, dest);
|
|
84
|
+
await execFileAsync("git", args);
|
|
85
|
+
if (cloneOptions?.sparse && cloneOptions.sparse.length > 0) {
|
|
86
|
+
await execFileAsync("git", ["-C", dest, "sparse-checkout", "set", ...cloneOptions.sparse]);
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
async pull(repoPath) {
|
|
90
|
+
await execFileAsync("git", ["-C", repoPath, "pull"]);
|
|
91
|
+
},
|
|
92
|
+
async revParse(repoPath, ref) {
|
|
93
|
+
const { stdout } = await execFileAsync("git", ["-C", repoPath, "rev-parse", ref]);
|
|
94
|
+
return stdout.trim();
|
|
95
|
+
},
|
|
96
|
+
async checkout(repoPath, ref) {
|
|
97
|
+
await execFileAsync("git", ["-C", repoPath, "checkout", ref]);
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
const shell = {
|
|
101
|
+
async exec(cmd, args, execOptions) {
|
|
102
|
+
try {
|
|
103
|
+
const { stdout, stderr } = await execFileAsync(cmd, args, {
|
|
104
|
+
cwd: execOptions?.cwd,
|
|
105
|
+
env: execOptions?.env ? { ...process.env, ...execOptions.env } : undefined,
|
|
106
|
+
});
|
|
107
|
+
return { stdout: stdout ?? "", stderr: stderr ?? "", exitCode: 0 };
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
const e = err;
|
|
111
|
+
return {
|
|
112
|
+
stdout: e.stdout ?? "",
|
|
113
|
+
stderr: e.stderr ?? "",
|
|
114
|
+
exitCode: e.code ?? 1,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
async spawn(cmd, args, spawnOptions) {
|
|
119
|
+
return new Promise((resolve, reject) => {
|
|
120
|
+
const child = _spawn(cmd, args, {
|
|
121
|
+
cwd: spawnOptions?.cwd,
|
|
122
|
+
detached: spawnOptions?.detached,
|
|
123
|
+
env: spawnOptions?.env ? { ...process.env, ...spawnOptions.env } : undefined,
|
|
124
|
+
stdio: "inherit",
|
|
125
|
+
});
|
|
126
|
+
if (spawnOptions?.detached) {
|
|
127
|
+
child.unref();
|
|
128
|
+
resolve();
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
child.on("close", (code) => {
|
|
132
|
+
if (code === 0)
|
|
133
|
+
resolve();
|
|
134
|
+
else
|
|
135
|
+
reject(new Error(`${cmd} exited with code ${code}`));
|
|
136
|
+
});
|
|
137
|
+
child.on("error", reject);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
const prompter = createPrompter({ yes: options.yes || options.json || false });
|
|
143
|
+
const logger = createLogger({
|
|
144
|
+
verbose: options.verbose ?? false,
|
|
145
|
+
quiet: options.quiet ?? false,
|
|
146
|
+
});
|
|
147
|
+
return { fs, http, git, shell, prompter, logger };
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { FileSystem, IOContext, GlobalOptions } from "../core/types.js";
|
|
3
|
+
export interface CreateOptions extends GlobalOptions {
|
|
4
|
+
tsx?: boolean;
|
|
5
|
+
css?: boolean;
|
|
6
|
+
native?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Walk up ancestor directories from startPath looking for a plugins.json whose
|
|
10
|
+
* $schema contains "venpm". Returns { path, data } if found, null otherwise.
|
|
11
|
+
*/
|
|
12
|
+
export declare function findAncestorIndex(fs: FileSystem, startPath: string): Promise<{
|
|
13
|
+
path: string;
|
|
14
|
+
data: Record<string, unknown>;
|
|
15
|
+
} | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Walk up ancestor directories from targetPath looking for a venpm plugins.json.
|
|
18
|
+
* Returns "plugin" if found, "repo" otherwise.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectCreateMode(fs: FileSystem, targetPath: string): Promise<"repo" | "plugin">;
|
|
21
|
+
export declare function executeCreate(ctx: IOContext, targetPath: string, options: CreateOptions): Promise<void>;
|
|
22
|
+
export declare function registerCreateCommand(program: Command): void;
|
|
23
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAM7E,MAAM,WAAW,aAAc,SAAQ,aAAa;IAChD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAsB,iBAAiB,CACnC,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,CAoBjE;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CAClC,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAG5B;AAwLD,wBAAsB,aAAa,CAC/B,GAAG,EAAE,SAAS,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8B5D"}
|