From 864e6a92e04c0123c15b8bde4a410dcee5dc29dd Mon Sep 17 00:00:00 2001 From: pan261 Date: Fri, 28 Jan 2022 16:28:28 -0500 Subject: [PATCH] added ngrok script, updated npm scripts and docker --- Dockerfile | 2 +- package-lock.json | 16 ++++++++++++++++ package.json | 9 ++++++--- src/ngrok_script.js | 25 +++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 src/ngrok_script.js diff --git a/Dockerfile b/Dockerfile index c2bebc1..3bfc742 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM node:16 WORKDIR /ffs/ COPY package.json ./ -RUN npm install +RUN npm install --only=prod COPY /src/build ./ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6f315b2..89acd0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^5.1.1", + "opener": "^1.5.2", "typescript": "^4.5.2" } }, @@ -2335,6 +2336,15 @@ "wrappy": "1" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -4927,6 +4937,12 @@ "wrappy": "1" } }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", diff --git a/package.json b/package.json index ab72752..545d179 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,12 @@ "version": "1.0.0", "main": "/src/server.js", "scripts": { - "start": "docker-compose up", + "start:docker": "docker-compose up", + "start:ngrok": "ngrok http 3000", "test": "echo \"Error: no test specified\" && exit 1", - "tsc": "tsc", - "build": "tsc --build && docker-compose up --build --remove-orphans" + "build": "npm run open:page && npm run build:docker", + "build:docker": "node src/ngrok_script.js && tsc --build && docker-compose up --build --remove-orphans", + "open:page": "opener http://localhost:3000/auth" }, "repository": { "type": "git", @@ -32,6 +34,7 @@ "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^5.1.1", + "opener": "^1.5.2", "typescript": "^4.5.2" } } diff --git a/src/ngrok_script.js b/src/ngrok_script.js new file mode 100644 index 0000000..2650b50 --- /dev/null +++ b/src/ngrok_script.js @@ -0,0 +1,25 @@ +const axios = require('axios'); +const fs = require('fs'); + +axios({ + method: 'GET', + url: 'http://127.0.0.1:4040/api/tunnels' +}).then(res => { + return res.data.tunnels; +}).then(data => { + data.forEach((entry) => { + if (entry.name === 'command_line (http)') { + const data = fs.readFileSync(`${__dirname}/../.env`).toString(); + if (data.includes(entry.public_url)) { + console.log("ngrok callback url not changed"); + return; + } + const newData = data.replace(new RegExp(/http:\/\/.+\.ngrok\.io/g), entry.public_url); + fs.writeFileSync(`${__dirname}/../.env`, newData); + console.log("updated ngrok callback url"); + } + }) +}).catch(err => { + console.log(); + throw("ngrok server not started"); +}); \ No newline at end of file