Skip to content

Commit 236e29e

Browse files
committed
feat: improve local dev with install path
- also add better watcher support
1 parent 4409be1 commit 236e29e

File tree

9 files changed

+157
-22
lines changed

9 files changed

+157
-22
lines changed

plugin/.env.example

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,3 @@
22
PR=35
33
# Skip validation (default: true for local testing)
44
SKIP_VALIDATION=true
5-
# Local file server URL (optional)
6-
LOCAL_FILESERVER_URL=http://192.168.1.100:8080

plugin/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ RUN corepack enable && pnpm install
2323
# Install a simple http server
2424
RUN npm install -g http-server
2525

26-
# Expose port 8080
27-
EXPOSE 8080
26+
# Expose port 5858
27+
EXPOSE 5858
2828

2929
COPY scripts/entrypoint.sh /start.sh
3030
RUN chmod +x /start.sh

plugin/builder/build-txz.ts

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,35 @@ import { cleanupTxzFiles } from "./utils/cleanup";
88

99
// Recursively search for manifest files
1010
const findManifestFiles = async (dir: string): Promise<string[]> => {
11-
const entries = await readdir(dir, { withFileTypes: true });
12-
const files: string[] = [];
11+
try {
12+
const entries = await readdir(dir, { withFileTypes: true });
13+
const files: string[] = [];
1314

14-
for (const entry of entries) {
15-
const fullPath = join(dir, entry.name);
16-
if (entry.isDirectory()) {
17-
files.push(...(await findManifestFiles(fullPath)));
18-
} else if (
19-
entry.isFile() &&
20-
(entry.name === "manifest.json" || entry.name === "ui.manifest.json")
21-
) {
22-
files.push(entry.name);
15+
for (const entry of entries) {
16+
const fullPath = join(dir, entry.name);
17+
if (entry.isDirectory()) {
18+
try {
19+
files.push(...(await findManifestFiles(fullPath)));
20+
} catch (error) {
21+
// Log and continue if a subdirectory can't be read
22+
console.warn(`Warning: Could not read directory ${fullPath}: ${error.message}`);
23+
}
24+
} else if (
25+
entry.isFile() &&
26+
(entry.name === "manifest.json" || entry.name === "ui.manifest.json")
27+
) {
28+
files.push(entry.name);
29+
}
2330
}
24-
}
2531

26-
return files;
32+
return files;
33+
} catch (error) {
34+
if (error.code === 'ENOENT') {
35+
console.warn(`Directory does not exist: ${dir}`);
36+
return [];
37+
}
38+
throw error; // Re-throw other errors
39+
}
2740
};
2841

2942
const validateSourceDir = async (validatedEnv: TxzEnv) => {

plugin/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
services:
22
plugin-builder:
33
ports:
4-
- 8080:8080
4+
- 5858:5858
55
build: .
66
volumes:
77
- ./:/app

plugin/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
"license": "GPL-2.0-only",
1818
"scripts": {
1919
"// Build scripts": "",
20-
"build": "pnpm run build:txz && pnpm run build:plugin",
20+
"build": "pnpm run build:txz && pnpm run build:plugin && ./scripts/output-local-url.sh",
2121
"build:txz": "tsx builder/build-txz.ts",
2222
"build:plugin": "tsx builder/build-plugin.ts",
2323
"build:validate": "npm run env:validate && npm run build",
24-
"build:watcher": "nodemon --watch 'source/**/*' --exec 'pnpm run build'",
24+
"build:watcher": "nodemon --verbose --watch 'source/**/*' --ext ts,tsx,js --ignore '*.test.ts' --ignore 'node_modules/**' --delay 2000 --exec 'pnpm run build'",
2525
"// Docker commands": "",
2626
"build:watch": "./scripts/dc.sh pnpm run build:watcher",
2727
"docker:build": "docker compose build",

plugin/scripts/dc.sh

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,16 @@ fi
1717

1818
CI=${CI:-false}
1919
TAG="LOCAL_PLUGIN_BUILD"
20-
docker compose run --service-ports --rm -e HOST_LAN_IP="$HOST_LAN_IP" -e CI="$CI" -e TAG="$TAG" plugin-builder "$@"
20+
21+
# Define container name for easier management
22+
CONTAINER_NAME="plugin-builder"
23+
24+
# Stop any running plugin-builder container first
25+
echo "Stopping any running plugin-builder containers..."
26+
docker ps -q --filter "name=${CONTAINER_NAME}" | xargs -r docker stop
27+
28+
# Start the container with the specified environment variables
29+
echo "Starting plugin-builder container..."
30+
echo "Install the local plugin using this URL: http://${HOST_LAN_IP}:5858/plugins/dynamix.unraid.net.plg"
31+
32+
docker compose run --remove-orphans --service-ports -e HOST_LAN_IP="$HOST_LAN_IP" -e CI="$CI" -e TAG="$TAG" ${CONTAINER_NAME} "$@"

plugin/scripts/entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
mkdir -p /app/deploy/
44
# Start http-server with common fileserver settings
55
http-server /app/deploy/ \
6-
--port 8080 \
6+
--port 5858 \
77
--host 0.0.0.0 \
88
--cors \
99
--gzip \

plugin/scripts/output-local-url.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
3+
# Use ANSI escape codes for color and formatting
4+
# \e[1m = bold, \e[32m = green, \e[0m = reset formatting
5+
echo -e "\e[1m\e[32m"
6+
echo "=============================================================="
7+
echo " INSTALL THE LOCAL PLUGIN USING THIS URL: "
8+
echo " http://${HOST_LAN_IP}:5858/dynamix.unraid.net.plg "
9+
echo "=============================================================="
10+
echo -e "\e[0m"

plugin/source/dynamix.unraid.net/install/doinst.sh

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,105 @@ fi
110110
( cd usr/local/unraid-api/node_modules/esbuild/node_modules/.bin ; ln -sf ../../bin/esbuild esbuild )
111111
( cd usr/local/unraid-api/node_modules/request/node_modules/.bin ; rm -rf uuid )
112112
( cd usr/local/unraid-api/node_modules/request/node_modules/.bin ; ln -sf ../uuid/bin/uuid uuid )
113+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf apollo-pbjs )
114+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../@apollo/protobufjs/bin/pbjs apollo-pbjs )
115+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf apollo-pbts )
116+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../@apollo/protobufjs/bin/pbts apollo-pbts )
117+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf blessed )
118+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../blessed/bin/tput.js blessed )
119+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf esbuild )
120+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../esbuild/bin/esbuild esbuild )
121+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf escodegen )
122+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../escodegen/bin/escodegen.js escodegen )
123+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf esgenerate )
124+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../escodegen/bin/esgenerate.js esgenerate )
125+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf esparse )
126+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../esprima/bin/esparse.js esparse )
127+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf esvalidate )
128+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../esprima/bin/esvalidate.js esvalidate )
129+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf fxparser )
130+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../fast-xml-parser/src/cli/cli.js fxparser )
131+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf glob )
132+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../glob/dist/esm/bin.mjs glob )
133+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf js-yaml )
134+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../js-yaml/bin/js-yaml.js js-yaml )
135+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf jsesc )
136+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../jsesc/bin/jsesc jsesc )
137+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf loose-envify )
138+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../loose-envify/cli.js loose-envify )
139+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf mime )
140+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../mime/cli.js mime )
141+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf mkdirp )
142+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../mkdirp/bin/cmd.js mkdirp )
143+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf mustache )
144+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../mustache/bin/mustache mustache )
145+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf needle )
146+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../needle/bin/needle needle )
147+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf node-which )
148+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../which/bin/node-which node-which )
149+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf opencollective )
150+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../@nuxtjs/opencollective/bin/opencollective.js opencollective )
151+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf parser )
152+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../@babel/parser/bin/babel-parser.js parser )
153+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf pino )
154+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../pino/bin.js pino )
155+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf pino-pretty )
156+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../pino-pretty/bin.js pino-pretty )
157+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf pm2 )
158+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../pm2/bin/pm2 pm2 )
159+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf pm2-dev )
160+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../pm2/bin/pm2-dev pm2-dev )
161+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf pm2-docker )
162+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../pm2/bin/pm2-docker pm2-docker )
163+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf pm2-runtime )
164+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../pm2/bin/pm2-runtime pm2-runtime )
165+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf prettier )
166+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../prettier/bin/prettier.cjs prettier )
167+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf relay-compiler )
168+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../@ardatan/relay-compiler/bin/relay-compiler relay-compiler )
169+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf resolve )
170+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../resolve/bin/resolve resolve )
171+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf semver )
172+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../semver/bin/semver.js semver )
173+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf sha.js )
174+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../sha.js/bin.js sha.js )
175+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf sshpk-conv )
176+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../sshpk/bin/sshpk-conv sshpk-conv )
177+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf sshpk-sign )
178+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../sshpk/bin/sshpk-sign sshpk-sign )
179+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf sshpk-verify )
180+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../sshpk/bin/sshpk-verify sshpk-verify )
181+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf systeminformation )
182+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../systeminformation/lib/cli.js systeminformation )
183+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf tsc )
184+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../typescript/bin/tsc tsc )
185+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf tsserver )
186+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../typescript/bin/tsserver tsserver )
187+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf tsx )
188+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../tsx/dist/cli.mjs tsx )
189+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf ua-parser-js )
190+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../ua-parser-js/script/cli.js ua-parser-js )
191+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf uuid )
192+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../uuid/dist/esm/bin/uuid uuid )
193+
( cd usr/local/unraid-api/node_modules/.bin ; rm -rf xss )
194+
( cd usr/local/unraid-api/node_modules/.bin ; ln -sf ../xss/bin/xss xss )
195+
( cd usr/local/unraid-api/node_modules/@apollo/protobufjs/node_modules/.bin ; rm -rf apollo-pbjs )
196+
( cd usr/local/unraid-api/node_modules/@apollo/protobufjs/node_modules/.bin ; ln -sf ../../bin/pbjs apollo-pbjs )
197+
( cd usr/local/unraid-api/node_modules/@apollo/protobufjs/node_modules/.bin ; rm -rf apollo-pbts )
198+
( cd usr/local/unraid-api/node_modules/@apollo/protobufjs/node_modules/.bin ; ln -sf ../../bin/pbts apollo-pbts )
199+
( cd usr/local/unraid-api/node_modules/@apollo/server/node_modules/.bin ; rm -rf uuid )
200+
( cd usr/local/unraid-api/node_modules/@apollo/server/node_modules/.bin ; ln -sf ../uuid/dist/bin/uuid uuid )
201+
( cd usr/local/unraid-api/node_modules/@nestjs/core/node_modules/.bin ; rm -rf opencollective )
202+
( cd usr/local/unraid-api/node_modules/@nestjs/core/node_modules/.bin ; ln -sf ../../../../@nuxtjs/opencollective/bin/opencollective.js opencollective )
203+
( cd usr/local/unraid-api/node_modules/@nestjs/graphql/node_modules/.bin ; rm -rf uuid )
204+
( cd usr/local/unraid-api/node_modules/@nestjs/graphql/node_modules/.bin ; ln -sf ../uuid/dist/esm/bin/uuid uuid )
205+
( cd usr/local/unraid-api/node_modules/@pm2/agent/node_modules/.bin ; rm -rf semver )
206+
( cd usr/local/unraid-api/node_modules/@pm2/agent/node_modules/.bin ; ln -sf ../semver/bin/semver.js semver )
207+
( cd usr/local/unraid-api/node_modules/@pm2/io/node_modules/.bin ; rm -rf semver )
208+
( cd usr/local/unraid-api/node_modules/@pm2/io/node_modules/.bin ; ln -sf ../semver/bin/semver.js semver )
209+
( cd usr/local/unraid-api/node_modules/esbuild/node_modules/.bin ; rm -rf esbuild )
210+
( cd usr/local/unraid-api/node_modules/esbuild/node_modules/.bin ; ln -sf ../../bin/esbuild esbuild )
211+
( cd usr/local/unraid-api/node_modules/nestjs-pino/node_modules/.bin ; rm -rf pino )
212+
( cd usr/local/unraid-api/node_modules/nestjs-pino/node_modules/.bin ; ln -sf ../../../pino/bin.js pino )
213+
( cd usr/local/unraid-api/node_modules/request/node_modules/.bin ; rm -rf uuid )
214+
( cd usr/local/unraid-api/node_modules/request/node_modules/.bin ; ln -sf ../uuid/bin/uuid uuid )

0 commit comments

Comments
 (0)