create-lt-adventure 0.0.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 +79 -0
- package/addons/github-workflow/addon.json +5 -0
- package/addons/github-workflow/main.yml +48 -0
- package/addons/github-workflow/setup.ts +112 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +283 -0
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/options.d.ts +21 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +66 -0
- package/dist/options.js.map +1 -0
- package/package.json +66 -0
- package/templates/vite/.env.example +2 -0
- package/templates/vite/README.md +0 -0
- package/templates/vite/assets/journals/Read-Aloud_Corner.webp +0 -0
- package/templates/vite/assets/journals/Sidebar_Frame_Brown.webp +0 -0
- package/templates/vite/assets/journals/Sidebar_Frame_Green.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-000.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-001.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-002.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-003.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-004.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-005.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-006.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-007.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-008.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-009.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-010.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-011.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-012.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-013.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-014.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-015.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-016.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-017.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-018.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-019.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-020.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-021.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-022.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-023.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-024.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-025.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-026.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-027.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-028.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-029.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-030.webp +0 -0
- package/templates/vite/assets/journals/borders/panel-border-031.webp +0 -0
- package/templates/vite/assets/journals/fonts/Candara.ttf +0 -0
- package/templates/vite/assets/journals/fonts/CoinageCapsKrugerGray.ttf +0 -0
- package/templates/vite/assets/journals/fonts/GeizerModifiedO.otf +0 -0
- package/templates/vite/assets/journals/fonts/Kings Caslon/Kings_Caslon_Bold.otf +0 -0
- package/templates/vite/assets/journals/fonts/Kings Caslon/Kings_Caslon_BoldItalic.otf +0 -0
- package/templates/vite/assets/journals/fonts/Kings Caslon/Kings_Caslon_Italic.otf +0 -0
- package/templates/vite/assets/journals/fonts/Kings Caslon/Kings_Caslon_Regular.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/ModestoText_Bold.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/ModestoText_BoldItalic.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/ModestoText_Light.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/ModestoText_LightItalic.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/ModestoText_Medium.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/ModestoText_MediumItalic.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/Modesto_Condensed_Bold.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/Modesto_Condensed_Light.otf +0 -0
- package/templates/vite/assets/journals/fonts/Modesto/Modesto_Condensed_Regular.otf +0 -0
- package/templates/vite/assets/journals/headers/bg-header-length-01.svg +61 -0
- package/templates/vite/assets/journals/headers/bg-header-length-02.svg +59 -0
- package/templates/vite/assets/journals/headers/bg-header-length-03.svg +66 -0
- package/templates/vite/assets/journals/headers/bg-header-length-04.svg +58 -0
- package/templates/vite/assets/journals/headers/bg-header-length-05.svg +75 -0
- package/templates/vite/assets/journals/headers/bg-header-length-06.svg +73 -0
- package/templates/vite/assets/journals/headers/bg-header-length-07.svg +69 -0
- package/templates/vite/assets/journals/masks/flipped/mask-brush-02.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-brush-03.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-brush-04.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-brush-05.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-brush-06.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-hard-01.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-hard-02.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-hard-03.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-hard-04.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-hard-05.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-hard-06.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-soft-01.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-soft-02.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-soft-03.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-soft-04.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-soft-05.webp +0 -0
- package/templates/vite/assets/journals/masks/flipped/mask-soft-06.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-brush-02.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-brush-03.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-brush-04.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-brush-05.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-brush-06.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-hard-01.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-hard-02.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-hard-03.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-hard-04.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-hard-05.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-hard-06.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-soft-01.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-soft-02.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-soft-03.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-soft-04.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-soft-05.webp +0 -0
- package/templates/vite/assets/journals/masks/mask-soft-06.webp +0 -0
- package/templates/vite/assets/setup.webp +0 -0
- package/templates/vite/bun.lock +983 -0
- package/templates/vite/lang/en.json +1 -0
- package/templates/vite/module.json +36 -0
- package/templates/vite/package.json +29 -0
- package/templates/vite/scripts/extractPacks.mjs +50 -0
- package/templates/vite/scripts/onCreate.mjs +14 -0
- package/templates/vite/scripts/symlink.mjs +79 -0
- package/templates/vite/src/adventureSheet/index.js +498 -0
- package/templates/vite/src/index.js +5 -0
- package/templates/vite/src/misc/fonts.js +50 -0
- package/templates/vite/src/misc/prosemirror.js +47 -0
- package/templates/vite/src/module.css +284 -0
- package/templates/vite/vite.config.ts +110 -0
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# create-lt-adventure
|
|
2
|
+
|
|
3
|
+
A CLI scaffolding tool for creating Foundry VTT modules.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### Global Installation (for end users)
|
|
8
|
+
|
|
9
|
+
Once published to npm, you can install this globally:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bun install -g create-lt-adventure
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Then run it from anywhere:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
create-lt-adventure
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Development Installation
|
|
22
|
+
|
|
23
|
+
For development purposes:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
git clone https://github.com/Loot-Foundry/create-lt-adventure
|
|
27
|
+
cd create-lt-adventure
|
|
28
|
+
bun install
|
|
29
|
+
bun run dev
|
|
30
|
+
```
|
|
31
|
+
### Development
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Install dependencies
|
|
35
|
+
bun install
|
|
36
|
+
|
|
37
|
+
# Run in development mode (requires Bun)
|
|
38
|
+
bun run dev
|
|
39
|
+
|
|
40
|
+
# Watch for TypeScript changes
|
|
41
|
+
bun run build:watch
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Scripts
|
|
45
|
+
|
|
46
|
+
- `bun run build` - Compile TypeScript to JavaScript
|
|
47
|
+
- `bun run build:watch` - Watch TypeScript files and rebuild on changes
|
|
48
|
+
- `bun run dev` - Run the CLI in development mode (requires Bun)
|
|
49
|
+
- `bun run prepublishOnly` - Automatically run before publishing
|
|
50
|
+
|
|
51
|
+
## System Support
|
|
52
|
+
|
|
53
|
+
Currently supports:
|
|
54
|
+
- **dnd5e** - Dungeons & Dragons 5th Edition
|
|
55
|
+
- **pf2e** - Pathfinder 2nd Edition
|
|
56
|
+
|
|
57
|
+
Additional systems can be added in `src/options.ts`.
|
|
58
|
+
|
|
59
|
+
## Resources
|
|
60
|
+
|
|
61
|
+
### Foundry VTT Documentation
|
|
62
|
+
- [dnd5e System Wiki](https://github.com/foundryvtt/dnd5e/wiki)
|
|
63
|
+
- [dnd5e Module Registration](https://github.com/foundryvtt/dnd5e/wiki/Module-Registration)
|
|
64
|
+
- [PF2e Wiki](https://github.com/foundryvtt/pf2e/wiki)
|
|
65
|
+
|
|
66
|
+
### Module Development
|
|
67
|
+
- [Foundry VTT Module Development](https://foundryvtt.com/article/modules/)
|
|
68
|
+
|
|
69
|
+
## License
|
|
70
|
+
|
|
71
|
+
MIT
|
|
72
|
+
|
|
73
|
+
## Contributing
|
|
74
|
+
|
|
75
|
+
Contributions are welcome! Please feel free to submit pull requests.
|
|
76
|
+
|
|
77
|
+
## Issues
|
|
78
|
+
|
|
79
|
+
Found a bug? Please open an issue on [GitHub](https://github.com/Loot-Foundry/create-lt-adventure/issues).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: Release Creation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v4
|
|
12
|
+
- uses: oven-sh/setup-bun@v2
|
|
13
|
+
|
|
14
|
+
- name: Extract version from tag without the v
|
|
15
|
+
id: get-version
|
|
16
|
+
run: echo "v=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
|
|
17
|
+
|
|
18
|
+
- name: Substitute Manifest and Download Links For Versioned Ones
|
|
19
|
+
id: sub_manifest_link_version
|
|
20
|
+
uses: microsoft/variable-substitution@v1
|
|
21
|
+
with:
|
|
22
|
+
files: module.json
|
|
23
|
+
env:
|
|
24
|
+
flags.canUpload: false
|
|
25
|
+
version: ${{ steps.get-version.outputs.v }}
|
|
26
|
+
|
|
27
|
+
- name: Install packages
|
|
28
|
+
run: bun ci
|
|
29
|
+
|
|
30
|
+
- name: Build distribution
|
|
31
|
+
run: bun run build
|
|
32
|
+
|
|
33
|
+
# Create a zip file with all files required by the module to add to the release.
|
|
34
|
+
- name: Bundle into ZIP file
|
|
35
|
+
run: zip -r ./module.zip module.json assets/ dist/ packs/
|
|
36
|
+
|
|
37
|
+
# Create a release for this specific version.
|
|
38
|
+
- name: Update Release with Files
|
|
39
|
+
id: create_version_release
|
|
40
|
+
uses: ncipollo/release-action@v1
|
|
41
|
+
with:
|
|
42
|
+
allowUpdates: true # Set this to false if you want to prevent updating existing releases.
|
|
43
|
+
name: ${{ github.event.release.name }}
|
|
44
|
+
tag: ${{ github.event.release.tag_name }}
|
|
45
|
+
body: ${{ github.event.release.body }}
|
|
46
|
+
artifacts: "./module.json, ./module.zip"
|
|
47
|
+
omitDraftDuringUpdate: true
|
|
48
|
+
omitPrereleaseDuringUpdate: true
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// Creates a .github/workflows/main.yml file.
|
|
2
|
+
// Additional options include:
|
|
3
|
+
// - Support for prereleases (requires a seperate branch)
|
|
4
|
+
// - Supports for uploading via FTP to external servers
|
|
5
|
+
// - Discord webhook notifications
|
|
6
|
+
|
|
7
|
+
import * as p from "@clack/prompts";
|
|
8
|
+
import { cyan } from "kolorist";
|
|
9
|
+
import { mkdir } from "fs/promises";
|
|
10
|
+
|
|
11
|
+
const data = await p.group(
|
|
12
|
+
{
|
|
13
|
+
features: () =>
|
|
14
|
+
p.multiselect({
|
|
15
|
+
message: "Additional features?",
|
|
16
|
+
initialValues: ["ftp", "discord"],
|
|
17
|
+
required: false,
|
|
18
|
+
options: [
|
|
19
|
+
// { label: "Prereleases", value: "prereleases" },
|
|
20
|
+
{ label: "Uploading via FTP", value: "ftp" },
|
|
21
|
+
{ label: "Discord webhook on updates", value: "discord" },
|
|
22
|
+
],
|
|
23
|
+
}),
|
|
24
|
+
},
|
|
25
|
+
{ onCancel: () => process.exit(0) },
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
// Grab main.yml template
|
|
29
|
+
const addonDir = import.meta.dir;
|
|
30
|
+
const mainYmlTemplate = await Bun.file(`${addonDir}/main.yml`).text();
|
|
31
|
+
|
|
32
|
+
// Get the module directory from environment variable
|
|
33
|
+
const moduleDir = process.env.MODULE_DIR || process.cwd();
|
|
34
|
+
|
|
35
|
+
let mainYml = mainYmlTemplate;
|
|
36
|
+
|
|
37
|
+
// I should probably just make this a JSON and convert it to accursed YAML at the end step...
|
|
38
|
+
if (data.features.includes("discord") || data.features.includes("ftp")) {
|
|
39
|
+
mainYml += `
|
|
40
|
+
# https://stackoverflow.com/questions/61919141/read-json-file-in-github-actions
|
|
41
|
+
- id: set_var
|
|
42
|
+
run: echo "PACKAGE_JSON=$(jq -c . < module.json)" >> $GITHUB_OUTPUT
|
|
43
|
+
|
|
44
|
+
- name: Get FTP Path
|
|
45
|
+
id: ftp
|
|
46
|
+
run: echo "ftp=\${{fromJson(steps.set_var.outputs.PACKAGE_JSON).flags.ftpPath}}" >> "$GITHUB_OUTPUT"
|
|
47
|
+
|
|
48
|
+
- name: Get Module ID
|
|
49
|
+
id: module_id
|
|
50
|
+
run: echo "module_id=\${{fromJson(steps.set_var.outputs.PACKAGE_JSON).id}}" >> "$GITHUB_OUTPUT"
|
|
51
|
+
|
|
52
|
+
- name: Get Module Title
|
|
53
|
+
id: title
|
|
54
|
+
run: echo "title=\${{fromJson(steps.set_var.outputs.PACKAGE_JSON).title}}" >> "$GITHUB_OUTPUT"
|
|
55
|
+
`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (data.features.includes("ftp")) {
|
|
59
|
+
mainYml += `
|
|
60
|
+
- name: Put Files into FTP Folder
|
|
61
|
+
env:
|
|
62
|
+
FTP_PASSWORD: \${{ secrets.FTP_PASSWORD }}
|
|
63
|
+
if: \${{ env.FTP_PASSWORD != '' }}
|
|
64
|
+
run: |
|
|
65
|
+
ls
|
|
66
|
+
mkdir _ftp
|
|
67
|
+
cp module.json _ftp/
|
|
68
|
+
cp module.zip _ftp/
|
|
69
|
+
mkdir _ftp/\${{steps.module_id.outputs.module_id}}
|
|
70
|
+
cp module.json _ftp/\${{steps.module_id.outputs.module_id}}/
|
|
71
|
+
|
|
72
|
+
- name: Upload FTP
|
|
73
|
+
uses: sebastianpopp/ftp-action@releases/v2
|
|
74
|
+
env:
|
|
75
|
+
FTP_PASSWORD: \${{ secrets.FTP_PASSWORD }}
|
|
76
|
+
if: \${{ env.FTP_PASSWORD != '' }}
|
|
77
|
+
with:
|
|
78
|
+
host: \${{ secrets.FTP_SERVER }}
|
|
79
|
+
user: \${{ secrets.FTP_USERNAME }}
|
|
80
|
+
password: \${{ env.FTP_PASSWORD }}
|
|
81
|
+
localDir: _ftp
|
|
82
|
+
remoteDir: \${{steps.ftp.outputs.ftp}}
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (data.features.includes("discord")) {
|
|
87
|
+
mainYml += `
|
|
88
|
+
- name: Send Discord Ping
|
|
89
|
+
uses: Ilshidur/action-discord@0.3.2
|
|
90
|
+
env:
|
|
91
|
+
DISCORD_WEBHOOK: \${{ secrets.DISCORD_WEBHOOK }}
|
|
92
|
+
if: \${{ env.DISCORD_WEBHOOK != '' && !github.event.release.prerelease }}
|
|
93
|
+
with:
|
|
94
|
+
args: "\${{steps.title.outputs.title}} has been updated to version \`\${{github.event.release.tag_name}}\`!"
|
|
95
|
+
`;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Create main.yml file
|
|
99
|
+
const workflowDir = `${moduleDir}/.github/workflows`;
|
|
100
|
+
await mkdir(workflowDir, { recursive: true });
|
|
101
|
+
await Bun.write(`${workflowDir}/main.yml`, mainYml);
|
|
102
|
+
|
|
103
|
+
let note = "✅ Installed!";
|
|
104
|
+
note += "\nThe Github workflow is triggered by making a new release. To make a new release go to your repository's Releases page which can be found in the sidebar on the right and press \"Draft a new release.\" Fill in the version number and you're done!"
|
|
105
|
+
|
|
106
|
+
if (data.features.includes("discord"))
|
|
107
|
+
note +=
|
|
108
|
+
"\n - For the Discord integration, make sure to create a DISCORD_WEBHOOK secret with the webhook url.";
|
|
109
|
+
if (data.features.includes("ftp"))
|
|
110
|
+
note += `\n - For the FTP integration, make sure to include the FTP_SERVER, FTP_USERNAME, and FTP_PASSWORD secrets.\n\tThe module JSON also can include a flag stating its subdirectory on the FTP server under ${cyan("flags.ftpPath")}.`;
|
|
111
|
+
|
|
112
|
+
p.note(note, "Github Workflow");
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as p from "@clack/prompts";
|
|
3
|
+
import { cyan } from "kolorist";
|
|
4
|
+
import { mkdir, cp } from "fs/promises";
|
|
5
|
+
import { packs, systems } from "./options.js";
|
|
6
|
+
import { existsSync, readdirSync, rmSync, statSync } from "fs";
|
|
7
|
+
import { dirname, join } from "path";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
p.intro(`Creating a new Foundry VTT module...`);
|
|
10
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
// Change to script directory so relative paths work
|
|
12
|
+
process.chdir(join(__dirname, ".."));
|
|
13
|
+
let deleteFolder = false;
|
|
14
|
+
const cliArgs = process.argv.slice(2);
|
|
15
|
+
const cliTitle = cliArgs[0];
|
|
16
|
+
const autoId = cliArgs.includes("--auto-id");
|
|
17
|
+
// Grab available templates from dir
|
|
18
|
+
const templates = readdirSync("./templates");
|
|
19
|
+
// Grab addons from addons/dirs
|
|
20
|
+
const addonDirs = readdirSync("./addons").filter((item) => {
|
|
21
|
+
const stat = statSync(`./addons/${item}`);
|
|
22
|
+
return stat.isDirectory();
|
|
23
|
+
});
|
|
24
|
+
const addons = await Promise.all(addonDirs.map(async (dir) => {
|
|
25
|
+
const addonJson = (await Bun.file(`./addons/${dir}/addon.json`).json());
|
|
26
|
+
return {
|
|
27
|
+
...addonJson,
|
|
28
|
+
id: dir,
|
|
29
|
+
};
|
|
30
|
+
}));
|
|
31
|
+
const data = await p.group({
|
|
32
|
+
template: async () => {
|
|
33
|
+
if (templates.length === 1) {
|
|
34
|
+
return templates[0];
|
|
35
|
+
}
|
|
36
|
+
const template = await p.select({
|
|
37
|
+
message: "Select a template",
|
|
38
|
+
options: templates.map((template) => ({
|
|
39
|
+
label: template,
|
|
40
|
+
value: template,
|
|
41
|
+
})),
|
|
42
|
+
});
|
|
43
|
+
return template;
|
|
44
|
+
},
|
|
45
|
+
title: () => cliTitle
|
|
46
|
+
? Promise.resolve(cliTitle)
|
|
47
|
+
: p.text({
|
|
48
|
+
message: "Module Title?",
|
|
49
|
+
placeholder: "My New Module",
|
|
50
|
+
defaultValue: "My New Module",
|
|
51
|
+
}),
|
|
52
|
+
id: ({ results }) => {
|
|
53
|
+
const defaultId = results.title
|
|
54
|
+
?.toLowerCase()
|
|
55
|
+
.replace(/\s+/g, "-")
|
|
56
|
+
.replace(/[^a-z0-9-]/g, "") ?? "my-module";
|
|
57
|
+
return autoId
|
|
58
|
+
? Promise.resolve(defaultId)
|
|
59
|
+
: p.text({
|
|
60
|
+
message: "Module ID?",
|
|
61
|
+
initialValue: defaultId,
|
|
62
|
+
defaultValue: defaultId,
|
|
63
|
+
placeholder: defaultId,
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
exists: async ({ results }) => {
|
|
67
|
+
const exists = existsSync(`./${results.id}`);
|
|
68
|
+
if (exists) {
|
|
69
|
+
const confirm = await p.confirm({
|
|
70
|
+
message: "Folder already exists. Overwrite?",
|
|
71
|
+
initialValue: false,
|
|
72
|
+
});
|
|
73
|
+
if (!confirm) {
|
|
74
|
+
p.cancel("Cancelled due to already existing folder.");
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
deleteFolder = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return Promise.resolve();
|
|
82
|
+
},
|
|
83
|
+
description: () => p.text({ message: "Module Description?", defaultValue: "" }),
|
|
84
|
+
version: () => p.select({
|
|
85
|
+
message: "Foundry Version?",
|
|
86
|
+
initialValue: "13",
|
|
87
|
+
options: [
|
|
88
|
+
// Just V13 and V14
|
|
89
|
+
{ label: "V13", value: "13" },
|
|
90
|
+
{ label: "V14", value: "14" },
|
|
91
|
+
],
|
|
92
|
+
}),
|
|
93
|
+
system: () => p.multiselect({
|
|
94
|
+
message: "What System?",
|
|
95
|
+
initialValues: ["dnd5e"],
|
|
96
|
+
options: systems.map((system) => ({
|
|
97
|
+
label: system.id,
|
|
98
|
+
value: system.id,
|
|
99
|
+
})),
|
|
100
|
+
}),
|
|
101
|
+
packs: () => p.multiselect({
|
|
102
|
+
message: "What Packs?",
|
|
103
|
+
required: false,
|
|
104
|
+
initialValues: packs,
|
|
105
|
+
options: packs.map((pack) => ({
|
|
106
|
+
label: pack.label,
|
|
107
|
+
value: pack,
|
|
108
|
+
})),
|
|
109
|
+
}),
|
|
110
|
+
containPacks: ({ results }) => results.packs?.length > 0
|
|
111
|
+
? p.confirm({
|
|
112
|
+
message: "Put Packs in a Folder?",
|
|
113
|
+
initialValue: true,
|
|
114
|
+
})
|
|
115
|
+
: Promise.resolve(false),
|
|
116
|
+
containPacksFolder: ({ results }) => results.containPacks
|
|
117
|
+
? p.text({
|
|
118
|
+
message: "Folder Name?",
|
|
119
|
+
placeholder: results.title,
|
|
120
|
+
defaultValue: results.title,
|
|
121
|
+
})
|
|
122
|
+
: Promise.resolve(),
|
|
123
|
+
enabledAddons: () => {
|
|
124
|
+
if (addons.length > 0) {
|
|
125
|
+
return p.multiselect({
|
|
126
|
+
message: "Enable addons?",
|
|
127
|
+
required: false,
|
|
128
|
+
initialValues: addons.filter(x => x.default).map(x => x.id),
|
|
129
|
+
options: addons.map((addon) => ({
|
|
130
|
+
label: `${addon.name} - ${addon.description}`,
|
|
131
|
+
value: addon.id,
|
|
132
|
+
})),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
return Promise.resolve([]);
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
}, { onCancel: () => process.exit(0) });
|
|
140
|
+
function hasPackageJSON(path = data.id) {
|
|
141
|
+
try {
|
|
142
|
+
return existsSync(`${path}/package.json`);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
await p.tasks([
|
|
149
|
+
{
|
|
150
|
+
title: "[Task] Deleting existing directory",
|
|
151
|
+
enabled: deleteFolder,
|
|
152
|
+
task: async () => {
|
|
153
|
+
if (deleteFolder)
|
|
154
|
+
rmSync(data.id, { recursive: true });
|
|
155
|
+
return "✅ Existing directory deleted";
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
title: "[Task] Making directory",
|
|
160
|
+
task: async () => {
|
|
161
|
+
await mkdir(data.id, { recursive: true });
|
|
162
|
+
return `✅ ${data.id} directory created`;
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
title: "[Task] Copying template",
|
|
167
|
+
task: async () => {
|
|
168
|
+
await cp(new URL(`../templates/${data.template}`, import.meta.url), data.id, {
|
|
169
|
+
recursive: true,
|
|
170
|
+
});
|
|
171
|
+
return "✅ Template copied";
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
title: "[Task] Writing module.json",
|
|
176
|
+
task: async () => {
|
|
177
|
+
const modPath = `${data.id}/module.json`;
|
|
178
|
+
const mod = (await Bun.file(modPath).json());
|
|
179
|
+
// inject user data
|
|
180
|
+
mod.id = data.id;
|
|
181
|
+
mod.title = data.title;
|
|
182
|
+
mod.description = data.description;
|
|
183
|
+
mod.compatibility = {
|
|
184
|
+
minimum: data.version,
|
|
185
|
+
verified: data.version,
|
|
186
|
+
// maximum: data.version + 1,
|
|
187
|
+
};
|
|
188
|
+
mod.relationships.system = data.system.map((system) => systems.find((s) => s.id === system));
|
|
189
|
+
mod.packs = data.packs.flatMap((pack) => data.system.map((system) => ({ ...pack, system })));
|
|
190
|
+
if (data.containPacks) {
|
|
191
|
+
mod.packFolders = [
|
|
192
|
+
{
|
|
193
|
+
name: data.containPacksFolder,
|
|
194
|
+
sorting: "m",
|
|
195
|
+
color: "#00000f",
|
|
196
|
+
packs: data.packs.map((x) => x.name),
|
|
197
|
+
},
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
if (data.system.includes("dnd5e")) {
|
|
201
|
+
mod.flags.dnd5e = {
|
|
202
|
+
sourceBooks: {
|
|
203
|
+
[data.id]: data.title,
|
|
204
|
+
},
|
|
205
|
+
spellLists: [],
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
await Bun.write(modPath, JSON.stringify(mod, null, "\t"));
|
|
209
|
+
return "✅ module.json created";
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
title: "[Task] Writing README.md",
|
|
214
|
+
task: async () => {
|
|
215
|
+
const readmePath = `${data.id}/README.md`;
|
|
216
|
+
const readme = `# ${data.title}
|
|
217
|
+
${data.description}
|
|
218
|
+
|
|
219
|
+
## Installation
|
|
220
|
+
|
|
221
|
+
\`\`\`
|
|
222
|
+
cd ${data.id} ${hasPackageJSON() ? "&& bun install" : "and get to making stuff!"}
|
|
223
|
+
\`\`\`
|
|
224
|
+
|
|
225
|
+
## Resources
|
|
226
|
+
|
|
227
|
+
${data.system.includes("dnd5e")
|
|
228
|
+
? `
|
|
229
|
+
D&D5e Wiki: https://github.com/foundryvtt/dnd5e/wiki
|
|
230
|
+
D&D5e Specific Module Flags: https://github.com/foundryvtt/dnd5e/wiki/Module-Registration`
|
|
231
|
+
: ""}
|
|
232
|
+
|
|
233
|
+
${data.system.includes("pf2e")
|
|
234
|
+
? `
|
|
235
|
+
PF2e Wiki: https://github.com/foundryvtt/pf2e/wiki
|
|
236
|
+
`
|
|
237
|
+
: ""}
|
|
238
|
+
`;
|
|
239
|
+
await Bun.write(readmePath, readme);
|
|
240
|
+
return "✅ README.md created";
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
]);
|
|
244
|
+
// Run enabled addons
|
|
245
|
+
if (data.enabledAddons && data.enabledAddons.length > 0) {
|
|
246
|
+
for (const addonId of data.enabledAddons) {
|
|
247
|
+
p.note(`[Addon] Running ${addonId} setup...`);
|
|
248
|
+
const addonProcess = Bun.spawn(["bun", "run", `addons/${addonId}/setup.ts`], {
|
|
249
|
+
stdio: ["inherit", "inherit", "inherit"],
|
|
250
|
+
env: {
|
|
251
|
+
...process.env,
|
|
252
|
+
MODULE_DIR: data.id,
|
|
253
|
+
ADDON_ID: addonId,
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
await addonProcess.exited;
|
|
257
|
+
if (addonProcess.exitCode !== 0) {
|
|
258
|
+
throw new Error(`❗ Addon ${addonId} setup failed`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// Check if template has an scripts/onCreate, ask to run it
|
|
263
|
+
const onCreatePath = `${data.id}/scripts/onCreate.ts`;
|
|
264
|
+
if (await Bun.file(onCreatePath).exists()) {
|
|
265
|
+
const runOnCreate = await p.confirm({
|
|
266
|
+
message: `Run onCreate script?`,
|
|
267
|
+
initialValue: true,
|
|
268
|
+
});
|
|
269
|
+
if (runOnCreate) {
|
|
270
|
+
const spin = p.spinner();
|
|
271
|
+
spin.start("[Task] Running onCreate script...");
|
|
272
|
+
const process = Bun.spawn(["bun", "run", "onCreate.ts"], {
|
|
273
|
+
cwd: `${data.id}/scripts`,
|
|
274
|
+
});
|
|
275
|
+
await process.exited;
|
|
276
|
+
if (process.exitCode !== 0) {
|
|
277
|
+
throw new Error(`❗ onCreate script failed`);
|
|
278
|
+
}
|
|
279
|
+
spin.stop("✅ onCreate script completed");
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
p.outro(`cd ${cyan(data.id)} ${hasPackageJSON() ? "&& bun install" : "and get to making stuff!"}`);
|
|
283
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare const packs: {
|
|
2
|
+
label: string;
|
|
3
|
+
name: string;
|
|
4
|
+
path: string;
|
|
5
|
+
system: string;
|
|
6
|
+
type: string;
|
|
7
|
+
ownership: {
|
|
8
|
+
PLAYER: string;
|
|
9
|
+
ASSISTANT: string;
|
|
10
|
+
};
|
|
11
|
+
}[];
|
|
12
|
+
declare const systems: {
|
|
13
|
+
id: string;
|
|
14
|
+
type: string;
|
|
15
|
+
manifest: string;
|
|
16
|
+
compatibility: {
|
|
17
|
+
minimum: string;
|
|
18
|
+
};
|
|
19
|
+
}[];
|
|
20
|
+
export { packs, systems };
|
|
21
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;;;GA6CV,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;;;GAmBZ,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/options.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const packs = [
|
|
2
|
+
{
|
|
3
|
+
label: "Adventures",
|
|
4
|
+
name: "adventure",
|
|
5
|
+
path: "packs/adventure",
|
|
6
|
+
system: "",
|
|
7
|
+
type: "Adventure",
|
|
8
|
+
ownership: {
|
|
9
|
+
PLAYER: "OBSERVER",
|
|
10
|
+
ASSISTANT: "OBSERVER",
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
label: "Items",
|
|
15
|
+
name: "items",
|
|
16
|
+
path: "packs/items",
|
|
17
|
+
system: "",
|
|
18
|
+
type: "Item",
|
|
19
|
+
ownership: {
|
|
20
|
+
PLAYER: "OBSERVER",
|
|
21
|
+
ASSISTANT: "OBSERVER",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
label: "Journals",
|
|
26
|
+
name: "journals",
|
|
27
|
+
path: "packs/journals",
|
|
28
|
+
system: "",
|
|
29
|
+
type: "JournalEntry",
|
|
30
|
+
ownership: {
|
|
31
|
+
PLAYER: "OBSERVER",
|
|
32
|
+
ASSISTANT: "OBSERVER",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
label: "Actors",
|
|
37
|
+
name: "actors",
|
|
38
|
+
path: "packs/actors",
|
|
39
|
+
system: "",
|
|
40
|
+
type: "Actor",
|
|
41
|
+
ownership: {
|
|
42
|
+
PLAYER: "OBSERVER",
|
|
43
|
+
ASSISTANT: "OWNER",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
const systems = [
|
|
48
|
+
{
|
|
49
|
+
id: "dnd5e",
|
|
50
|
+
type: "system",
|
|
51
|
+
manifest: "https://github.com/foundryvtt/dnd5e/releases/latest/download/system.json",
|
|
52
|
+
compatibility: {
|
|
53
|
+
minimum: "5.2",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "pf2e",
|
|
58
|
+
type: "system",
|
|
59
|
+
manifest: "https://github.com/foundryvtt/pf2e/releases/latest/download/system.json",
|
|
60
|
+
compatibility: {
|
|
61
|
+
minimum: "7.8",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
export { packs, systems };
|
|
66
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG;IACb;QACC,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACV,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,UAAU;SACrB;KACD;IACD;QACC,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACV,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,UAAU;SACrB;KACD;IACD;QACC,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE;YACV,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,UAAU;SACrB;KACD;IACD;QACC,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACV,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,OAAO;SAClB;KACD;CACD,CAAC;AAEF,MAAM,OAAO,GAAG;IACf;QACC,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,QAAQ;QACd,QAAQ,EACP,0EAA0E;QAC3E,aAAa,EAAE;YACd,OAAO,EAAE,KAAK;SACd;KACD;IACD;QACC,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,QAAQ;QACd,QAAQ,EACP,yEAAyE;QAC1E,aAAa,EAAE;YACd,OAAO,EAAE,KAAK;SACd;KACD;CACD,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC"}
|