Skip to content

Commit

Permalink
Merge pull request #8 from RainyXeon/dev
Browse files Browse the repository at this point in the history
Breaking change [3.0.0]
  • Loading branch information
RainyXeon authored Nov 30, 2023
2 parents 78c8431 + 596c150 commit f1ed438
Show file tree
Hide file tree
Showing 284 changed files with 6,746 additions and 5,890 deletions.
45 changes: 21 additions & 24 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
module.exports = {
"env": {
"browser": true,
"es2021": true
env: {
browser: true,
es2021: true,
},
extends: "eslint:recommended",
overrides: [
{
env: {
node: true,
},
files: [".eslintrc.{js,cjs}"],
parserOptions: {
sourceType: "script",
},
},
"extends": "eslint:recommended",
"overrides": [
{
"env": {
"node": true
},
"files": [
".eslintrc.{js,cjs}"
],
"parserOptions": {
"sourceType": "script"
}
}
],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"rules": {
}
}
],
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
rules: {},
};
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,12 @@ dist

app.yml
cylane.database.json
byteblaze.database.json
.cylane/

.env

.clinic
.clinic

draft/
temp/
4 changes: 1 addition & 3 deletions app.example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@ features:
# Note: If you enter an invalid driver, bot will use json driver as default
driver: "json" # mongodb, mysql, json, postgres
# Config depend on driver, you can see sample config at src/database/driver
config: {
path: "./cylane.database.json"
}
config: { path: "./cylane.database.json" }

MESSAGE_CONTENT:
enable: true
Expand Down
138 changes: 62 additions & 76 deletions build.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,113 +2,100 @@

import { spawn } from "node:child_process";
import archiver from "dir-archiver";
import delay from "delay";
import JSZip from "jszip";
import { rimraf } from "rimraf";
import { XMLParser, XMLBuilder } from "fast-xml-parser";
import fse from "fs-extra";
import { plsParseArgs } from "plsargs";
const args = plsParseArgs(process.argv.slice(2));
const parser = new XMLParser()
const builder = new XMLBuilder()
const parser = new XMLParser();
const builder = new XMLBuilder();
const objectDate = Date.now();

const acceptedParams = ["clean", "build"]
const acceptedParams = ["clean", "build"];

function logger(data, type) {
const text = String(data).replace(/(\r\n|\n|\r)/gm, " || ");
switch (type) {
case "build":
console.log(`BUILD - ${text}`)
break
console.log(`BUILD - ${text}`);
break;
case "info":
console.log(`INFO - ${text}`)
break
console.log(`INFO - ${text}`);
break;
case "error":
console.log(`ERROR - ${text}`)
break
console.log(`ERROR - ${text}`);
break;
}
}

if (!acceptedParams.includes(args.get(0))) {
throw new Error("Only clean or build, example: node build.mjs build")
throw new Error("Only clean or build, example: node build.mjs build");
}

if (args.get(0) == acceptedParams[0]) {
await fse.rmSync("./dist", { recursive: true, force: true });
await fse.rmSync("./out", { recursive: true, force: true });
await fse.rmSync("./.cylane", { recursive: true, force: true });
await fse.rmSync("./logs", { recursive: true, force: true });
logger("Clean successfully!", "info")
process.exit()
const checkDir = ["./temp", "./out", "./.cylane", "./logs", "./temp"]

checkDir.forEach(async (data) => {
if (fse.existsSync(data))
await fse.rmdir(data, { recursive: true, force: true });
})

logger("Clean successfully!", "info");
process.exit();
}

// Build
const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', "build:full"]);
const child = spawn(/^win/.test(process.platform) ? "npm.cmd" : "npm", [
"run",
"build:full",
]);

child.stdout.on("data", data => {
child.stdout.on("data", (data) => {
logger(data, "build");
});

child.stderr.on("data", data => {
child.stderr.on("data", (data) => {
logger(data, "build");
});

child.on('error', (error) => {
child.on("error", (error) => {
logger(error.message, "error");
});

child.on("close", async code => {
child.on("close", async (code) => {
logger(`Build finished with code ${code}`, "build");

// Creating temp
if (!fse.existsSync("./temp")) await fse.mkdir("./temp")
else {
await fse.rmSync("./temp", { recursive: true, force: true });
await fse.mkdir("./temp")
}

try {
fse.copySync("./dist", "./temp", { overwrite: true });
console.log('Making temp to edit manifest file...');
} catch (err) {
console.error(err);
}

// Remove current dist
await fse.rmSync("./dist", { recursive: true, force: true });

// Edit manifest
const manifestRaw = fse.readFileSync('./temp/manifest.xml', 'utf-8');
const manifest = parser.parse(manifestRaw)
const botVersion = manifest.metadata.bot.version
const warningData = `\n` + "<!-- THIS IS THE METADATA BOT FILE -->" + `\n` +
"<!-- Do NOT delete this file or it will crash -->" + `\n` +
"<!-- Changes to this file may cause incorrect behavior -->" + `\n` +
"<!-- You will be responsible for this when changing any content in the file. -->" + `\n`

manifest.metadata.bot.version = `${botVersion}+${objectDate}`

fse.writeFileSync('./temp/manifest.xml', builder.build(manifest) + warningData, 'utf-8');

logger('Edit manifest file complete! Now give all build file back to dist folder', "build");

// Give back to dist folder
await fse.mkdir("./dist")

try {
fse.copySync("./temp", "./dist", { overwrite: true });
logger('Give all build file back to dist folder complete! Removing temp...', "build");
} catch (err) {
console.error(err);
}

await fse.rmSync("./temp", { recursive: true, force: true });
logger('Remove complete! Now archive all build file...', "build");

const manifestRaw = fse.readFileSync("./dist/manifest.xml", "utf-8");
const manifest = parser.parse(manifestRaw);
const botVersion = manifest.metadata.bot.version;
const warningData =
`\n` +
"<!-- THIS IS THE METADATA BOT FILE -->" +
`\n` +
"<!-- Do NOT delete this file or it will crash -->" +
`\n` +
"<!-- Changes to this file may cause incorrect behavior -->" +
`\n` +
"<!-- You will be responsible for this when changing any content in the file. -->" +
`\n`;

manifest.metadata.bot.version = `${botVersion}+${objectDate}`;

fse.writeFileSync(
"./dist/manifest.xml",
builder.build(manifest) + warningData,
"utf-8"
);

logger(
"Edit manifest file complete!",
"build"
);

// Archive build
await fse.mkdir("./out")
const path = `./out/byteblaze-build-${objectDate}.zip`
await fse.mkdir("./out");
const path = `./out/byteblaze-build-${objectDate}.zip`;

const ignored = [
"node_modules",
Expand All @@ -120,16 +107,15 @@ child.on("close", async code => {
".git",
".cylane",
"src",
"buildTools",
"scripts",
"build.mjs",
"cylane.database.json",
"LICENSE",
"byteblaze.database.json",
"pnpm-lock.yaml",
"README.md",
"tsconfig.json"
"tsconfig.json",
];
const zipper = new archiver(".", path, true, ignored);
zipper.createZip();
logger('Archive all build file successfully!!!', "build");
logger("Build bot successfully!!!")
});
logger("Archive all build file successfully!!!", "build");
logger("Build bot successfully!!!");
});
1 change: 1 addition & 0 deletions byteblaze.database.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"json":[],"autoreconnect":[],"playlist":[],"code":[],"premium":[],"control":[],"setup":[{"id":"914502356455010385","value":{"enable":false,"channel":"","playmsg":"","voice":"","category":""}},{"id":"1027945618347397220","value":{"enable":false,"channel":"","playmsg":"","voice":"","category":""}},{"id":"1179019969267241011","value":{"enable":false,"channel":"","playmsg":"","voice":"","category":""}}],"language":[{"id":"1027945618347397220","value":"d!"},{"id":"1179019969267241011","value":"d!"}],"status":[],"prefix":[]}
13 changes: 13 additions & 0 deletions clearSlash.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { REST } from "discord.js";
import { Routes } from "discord-api-types/v10";
import { ConfigDataService } from "./dist/utils/config.js";

(async () => {
const configData = new ConfigDataService().data;
const rest = new REST({ version: "10" }).setToken(configData.bot.TOKEN);
const client = await rest.get(Routes.user());

rest.put(Routes.applicationCommands(client.id), { body: [] })
.then(() => console.log('Successfully deleted all application commands.'))
.catch(console.error);
})();
Loading

0 comments on commit f1ed438

Please sign in to comment.