From ce8091eeaf79c315118d56332fd29bad831a2549 Mon Sep 17 00:00:00 2001 From: Nicholas Pease Date: Sat, 7 Oct 2023 04:17:20 +0000 Subject: [PATCH] Initial --- Gitea-Badge-Creator | 1 + README.md | 5 ----- b.svg | 20 +++++++++++++++++ package-lock.json | 22 +++++++++++++++++- package.json | 4 +++- script.js | 54 ++++++++++++++++++++++++++++++++++++--------- 6 files changed, 88 insertions(+), 18 deletions(-) create mode 160000 Gitea-Badge-Creator delete mode 100644 README.md create mode 100644 b.svg diff --git a/Gitea-Badge-Creator b/Gitea-Badge-Creator new file mode 160000 index 0000000..299f5fe --- /dev/null +++ b/Gitea-Badge-Creator @@ -0,0 +1 @@ +Subproject commit 299f5fe350cb4c336d97d8360e07049264086d1b diff --git a/README.md b/README.md deleted file mode 100644 index 78dcfa3..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -## Gitea-Badge-Creator ## - -[![](https://drone.nicholaspease.com/api/badges/npease/Gitea-Badge-Creator/status.svg)](https://drone.nicholaspease.com/npease/Gitea-Badge-Creator) -[![](https://wakaapi.nicholaspease.com/api/badge/LAX18/interval:any/project:Gitea-Badge-Creator)](https://wakaapi.nicholaspease.com/summary?interval=any&project=Gitea-Badge-Creator) -![](https://gitea.nicholaspease.com/api/packages/npease/generic/cloc-Gitea-Badge-Creator/latest/cloc.png) \ No newline at end of file diff --git a/b.svg b/b.svg new file mode 100644 index 0000000..fc64ae5 --- /dev/null +++ b/b.svg @@ -0,0 +1,20 @@ + + Lines of Code: 1720 + + + + + + + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4905648..4c167cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,9 @@ "packages": { "": { "dependencies": { - "express": "^4.18.2" + "child_process": "^1.0.2", + "express": "^4.18.2", + "gradient-badge": "^1.3.1" } }, "node_modules/accepts": { @@ -25,6 +27,11 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/badgen": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/badgen/-/badgen-3.2.3.tgz", + "integrity": "sha512-svDuwkc63E/z0ky3drpUppB83s/nlgDciH9m+STwwQoWyq7yCgew1qEfJ+9axkKdNq7MskByptWUN9j1PGMwFA==" + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -68,6 +75,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -244,6 +256,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gradient-badge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/gradient-badge/-/gradient-badge-1.3.1.tgz", + "integrity": "sha512-OvTFHZJSQ+fR7zWl6xz5PvniAfKRsHBy98NZ+kAWOnfmP27lt8wMA4oUvsQp0ppNET+2qE0oEnna2s3SiiqaVA==", + "dependencies": { + "badgen": "^3.2.1" + } + }, "node_modules/has": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", diff --git a/package.json b/package.json index 0e6cd98..bd78537 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,7 @@ { "dependencies": { - "express": "^4.18.2" + "child_process": "^1.0.2", + "express": "^4.18.2", + "gradient-badge": "^1.3.1" } } diff --git a/script.js b/script.js index 2ad526a..78b84ab 100644 --- a/script.js +++ b/script.js @@ -1,15 +1,47 @@ -const express = require('express'); +const express = require("express"); +const { exec } = require("child_process"); +const gradientBadge = require("gradient-badge"); +const fs = require("fs"); -const app = express (); -app.use(express.json()); +const app = express(); +const port = 3000; +const bodyParser = require("body-parser"); +app.use(bodyParser.json()); +app.post("/repo_change", (request, response) => { + var { body } = request; + exec(`git clone ${body.repository.clone_url}`, function (e, o, i) { + exec(`cd ${body.repository.name} && ls`, function (err, out, stderr) { + exec( + 'scc --format json --remap-all "":"Misc."', + function (err, out, stderr) { + const svgString = gradientBadge({ + subject: "Lines of Code", // + status: `${JSON.parse(out)[0].Lines}`, // + gradient: ["0f8fff"], // array of colors (Hexadecimal or name) + }); + fs.writeFile("output.svg", svgString, function (err) { + if (err) { + return console.log(err); + } + console.log("The file was saved!"); + }); + exec(`cd ../ && rm -rf ${body.repository.name}`) + exec( + `rm /var/www/html/badges/cloc/${body.repository.full_name}.svg`, + function (a, e, i) { + exec( + `mv output.svg /var/www/html/badges/cloc/${body.repository.full_name}.svg` + ); + } + ); + } + ); + }); + }); -const PORT = process.env.PORT || 3000; - -app.listen(PORT, () => { - console.log("Server Listening on PORT:", PORT); + response.end(); }); -app.post("/repo_change", (request, response) => { - console.log(response) - response.send(response); -}); \ No newline at end of file +app.listen(port, () => { + console.log(`Express api/webhook app listening at http://localhost:${port}`); +});