From 1d02e781dc738fc980af9fcceab35dd87755f412 Mon Sep 17 00:00:00 2001 From: toast-ts <96593068+toast-ts@users.noreply.github.com> Date: Wed, 7 Feb 2024 09:14:40 +1100 Subject: [PATCH] Add private_dir option. --- .pnp.cjs | 2 -- package.json | 1 - src/commands/dev.ts | 18 ++++++++++++------ src/helpers/GitHub.ts | 17 ++++++++++++----- yarn.lock | 3 +-- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/.pnp.cjs b/.pnp.cjs index f2a8d6a..69cedfa 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -26,7 +26,6 @@ const RAW_RUNTIME_STATE = [null, {\ "packageLocation": "./",\ "packageDependencies": [\ - ["@octokit/auth-token", "npm:4.0.0"],\ ["@octokit/rest", "npm:20.0.2"],\ ["@toast/tokenservice-client", "npm:1.0.11::__archiveUrl=https%3A%2F%2Fgit.toast-server.net%2Fapi%2Fpackages%2Ftoast%2Fnpm%2F%2540toast%252Ftokenservice-client%2F-%2F1.0.11%2Ftokenservice-client-1.0.11.tgz"],\ ["@types/ms", "npm:0.7.34"],\ @@ -991,7 +990,6 @@ const RAW_RUNTIME_STATE = "packageLocation": "./",\ "packageDependencies": [\ ["daggerbot-ts", "workspace:."],\ - ["@octokit/auth-token", "npm:4.0.0"],\ ["@octokit/rest", "npm:20.0.2"],\ ["@toast/tokenservice-client", "npm:1.0.11::__archiveUrl=https%3A%2F%2Fgit.toast-server.net%2Fapi%2Fpackages%2Ftoast%2Fnpm%2F%2540toast%252Ftokenservice-client%2F-%2F1.0.11%2Ftokenservice-client-1.0.11.tgz"],\ ["@types/ms", "npm:0.7.34"],\ diff --git a/package.json b/package.json index 8de2593..4cc7973 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ "engineStrict": true, "packageManager": "yarn@4.1.0+sha256.81a00df816059803e6b5148acf03ce313cad36b7f6e5af6efa040a15981a6ffb", "dependencies": { - "@octokit/auth-token": "4.0.0", "@octokit/rest": "20.0.2", "@toast/tokenservice-client": "1.0.11", "ansi-colors": "4.1.3", diff --git a/src/commands/dev.ts b/src/commands/dev.ts index 29b35f9..8196d83 100644 --- a/src/commands/dev.ts +++ b/src/commands/dev.ts @@ -6,7 +6,7 @@ import Formatters from '../helpers/Formatters.js'; import GitHub from '../helpers/GitHub.js'; import TClient from '../client.js'; import util from 'node:util'; -import fs, { writeFileSync } from 'node:fs'; +import fs from 'node:fs'; export default class Developer { static run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>) { if (!client.config.whitelist.includes(interaction.user.id)) return MessageTool.youNeedRole(interaction, 'bottech'); @@ -71,13 +71,19 @@ export default class Developer { `╰ Deletions: **${commitStats.deletion}**`, `╰ Total: **${commitStats.total}**` ); + if (interaction.options.getBoolean('private_dir')) { + const priv_file = await GitHub.PrivateRepository(); + fs.writeFileSync('src/private/_.ts', Buffer.from(priv_file.content, 'base64').toString('utf8')); + const update_success = `Updated the private file with latest data from the repository. (\`${priv_file.sha.slice(0, 7)}\`)`; + if (interaction.replied) interaction.followUp(update_success); + else interaction.reply(update_success); + }; exec('git pull', {windowsHide:true}, (err:Error, stdout)=>{ if (err) hammondYouIdiot.edit(`\`\`\`${UsernameHelper(err.message)}\`\`\``); else if (stdout.includes('Already up to date')) hammondYouIdiot.edit('Repository is currently up to date.'); else hammondYouIdiot.edit('Running `yarn tsc`...').then(()=>exec('yarn tsc', {windowsHide:true}, (err:Error)=>{ if (err) hammondYouIdiot.edit(`\`\`\`${UsernameHelper(err.message)}\`\`\``); - else if (interaction.options.getBoolean('restart')) hammondYouIdiot.edit(msgBody + `\nUptime: **${Formatters.timeFormat(process.uptime()*1000, 4, {longNames:true, commas:true})}**`).then(()=>process.exit(0)); - else hammondYouIdiot.edit(msgBody); + else hammondYouIdiot.edit(msgBody + `\nUptime: **${Formatters.timeFormat(process.uptime()*1000, 4, {longNames:true, commas:true})}**`).then(()=>process.exit(0)); })); }); }, @@ -102,7 +108,7 @@ export default class Developer { if (name) currentActivities[0].name = name; if (url) currentActivities[0].url = url; client.user.setPresence(client.config.botPresence); - writeFileSync(process.argv[2] ?? 'src/config.json', JSON.stringify(client.config, null, 2)); + fs.writeFileSync(process.argv[2] ?? 'src/config.json', JSON.stringify(client.config, null, 2)); interaction.reply(MessageTool.concatMessage( 'Presence updated:', `Status: **${client.config.botPresence.status}**`, @@ -163,8 +169,8 @@ export default class Developer { .setName('update') .setDescription('Pull from repository and restart') .addBooleanOption(x=>x - .setName('restart') - .setDescription('Restart the bot after pulling from repository') + .setName('private_dir') + .setDescription('Update private directory from a repository too?') .setRequired(true) )) .addSubcommand(x=>x diff --git a/src/helpers/GitHub.ts b/src/helpers/GitHub.ts index 030e936..9cffb7e 100644 --- a/src/helpers/GitHub.ts +++ b/src/helpers/GitHub.ts @@ -1,17 +1,24 @@ +interface IDataContent { + sha: string; + content: string; +} import {Octokit} from '@octokit/rest'; -import {createTokenAuth} from '@octokit/auth-token'; import TSClient from './TSClient.js'; import git from 'simple-git'; -const summonAuth = createTokenAuth((await TSClient()).octokit); -const octokit = new Octokit({auth: await summonAuth().token, timeZone: 'Australia/NSW', userAgent: 'Daggerbot-TS'}); + +const octokit = new Octokit({auth: (await TSClient()).octokit, timeZone: 'Australia/NSW', userAgent: 'Daggerbot-TS'}); export default class GitHub { - private static repositoryConfig = {owner: 'toast-ts', repo: 'Daggerbot-TS', ref: 'HEAD'}; + private static repositoryConfig = {owner: 'toast-ts', ref: 'HEAD'}; public static async RemoteRepository() { - const {data} = await octokit.repos.getCommit(this.repositoryConfig); + const {data} = await octokit.repos.getCommit({repo: 'Daggerbot-TS', ...this.repositoryConfig}); return data; } public static async LocalRepository() { const {latest} = await git().log({maxCount: 1}); return latest; } + public static async PrivateRepository() { + const {data} = await octokit.repos.getContent({path: 'private/_.ts', repo: 'Daggerbot-Private', ...this.repositoryConfig}); + return data as IDataContent; + } } diff --git a/yarn.lock b/yarn.lock index 3c81f40..b77b82a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -149,7 +149,7 @@ __metadata: languageName: node linkType: hard -"@octokit/auth-token@npm:4.0.0, @octokit/auth-token@npm:^4.0.0": +"@octokit/auth-token@npm:^4.0.0": version: 4.0.0 resolution: "@octokit/auth-token@npm:4.0.0" checksum: 10/60e42701e341d700f73c518c7a35675d36d79fa9d5e838cc3ade96d147e49f5ba74db2e07b2337c2b95aaa540aa42088116df2122daa25633f9e70a2c8785c44 @@ -744,7 +744,6 @@ __metadata: version: 0.0.0-use.local resolution: "daggerbot-ts@workspace:." dependencies: - "@octokit/auth-token": "npm:4.0.0" "@octokit/rest": "npm:20.0.2" "@toast/tokenservice-client": "npm:1.0.11" "@types/ms": "npm:0.7.34"