1
0
mirror of https://github.com/toast-ts/Daggerbot-TS.git synced 2024-11-18 00:31:00 -05:00

Add private_dir option.

This commit is contained in:
toast-ts 2024-02-07 09:14:40 +11:00
parent d6812cb6d3
commit 1d02e781dc
5 changed files with 25 additions and 16 deletions

2
.pnp.cjs generated
View File

@ -26,7 +26,6 @@ const RAW_RUNTIME_STATE =
[null, {\ [null, {\
"packageLocation": "./",\ "packageLocation": "./",\
"packageDependencies": [\ "packageDependencies": [\
["@octokit/auth-token", "npm:4.0.0"],\
["@octokit/rest", "npm:20.0.2"],\ ["@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"],\ ["@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"],\ ["@types/ms", "npm:0.7.34"],\
@ -991,7 +990,6 @@ const RAW_RUNTIME_STATE =
"packageLocation": "./",\ "packageLocation": "./",\
"packageDependencies": [\ "packageDependencies": [\
["daggerbot-ts", "workspace:."],\ ["daggerbot-ts", "workspace:."],\
["@octokit/auth-token", "npm:4.0.0"],\
["@octokit/rest", "npm:20.0.2"],\ ["@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"],\ ["@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"],\ ["@types/ms", "npm:0.7.34"],\

View File

@ -32,7 +32,6 @@
"engineStrict": true, "engineStrict": true,
"packageManager": "yarn@4.1.0+sha256.81a00df816059803e6b5148acf03ce313cad36b7f6e5af6efa040a15981a6ffb", "packageManager": "yarn@4.1.0+sha256.81a00df816059803e6b5148acf03ce313cad36b7f6e5af6efa040a15981a6ffb",
"dependencies": { "dependencies": {
"@octokit/auth-token": "4.0.0",
"@octokit/rest": "20.0.2", "@octokit/rest": "20.0.2",
"@toast/tokenservice-client": "1.0.11", "@toast/tokenservice-client": "1.0.11",
"ansi-colors": "4.1.3", "ansi-colors": "4.1.3",

View File

@ -6,7 +6,7 @@ import Formatters from '../helpers/Formatters.js';
import GitHub from '../helpers/GitHub.js'; import GitHub from '../helpers/GitHub.js';
import TClient from '../client.js'; import TClient from '../client.js';
import util from 'node:util'; import util from 'node:util';
import fs, { writeFileSync } from 'node:fs'; import fs from 'node:fs';
export default class Developer { export default class Developer {
static run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>) { static run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>) {
if (!client.config.whitelist.includes(interaction.user.id)) return MessageTool.youNeedRole(interaction, 'bottech'); if (!client.config.whitelist.includes(interaction.user.id)) return MessageTool.youNeedRole(interaction, 'bottech');
@ -71,13 +71,19 @@ export default class Developer {
`╰ Deletions: **${commitStats.deletion}**`, `╰ Deletions: **${commitStats.deletion}**`,
`╰ Total: **${commitStats.total}**` `╰ 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)=>{ exec('git pull', {windowsHide:true}, (err:Error, stdout)=>{
if (err) hammondYouIdiot.edit(`\`\`\`${UsernameHelper(err.message)}\`\`\``); if (err) hammondYouIdiot.edit(`\`\`\`${UsernameHelper(err.message)}\`\`\``);
else if (stdout.includes('Already up to date')) hammondYouIdiot.edit('Repository is currently up to date.'); 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)=>{ else hammondYouIdiot.edit('Running `yarn tsc`...').then(()=>exec('yarn tsc', {windowsHide:true}, (err:Error)=>{
if (err) hammondYouIdiot.edit(`\`\`\`${UsernameHelper(err.message)}\`\`\``); 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 + `\nUptime: **${Formatters.timeFormat(process.uptime()*1000, 4, {longNames:true, commas:true})}**`).then(()=>process.exit(0));
else hammondYouIdiot.edit(msgBody);
})); }));
}); });
}, },
@ -102,7 +108,7 @@ export default class Developer {
if (name) currentActivities[0].name = name; if (name) currentActivities[0].name = name;
if (url) currentActivities[0].url = url; if (url) currentActivities[0].url = url;
client.user.setPresence(client.config.botPresence); 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( interaction.reply(MessageTool.concatMessage(
'Presence updated:', 'Presence updated:',
`Status: **${client.config.botPresence.status}**`, `Status: **${client.config.botPresence.status}**`,
@ -163,8 +169,8 @@ export default class Developer {
.setName('update') .setName('update')
.setDescription('Pull from repository and restart') .setDescription('Pull from repository and restart')
.addBooleanOption(x=>x .addBooleanOption(x=>x
.setName('restart') .setName('private_dir')
.setDescription('Restart the bot after pulling from repository') .setDescription('Update private directory from a repository too?')
.setRequired(true) .setRequired(true)
)) ))
.addSubcommand(x=>x .addSubcommand(x=>x

View File

@ -1,17 +1,24 @@
interface IDataContent {
sha: string;
content: string;
}
import {Octokit} from '@octokit/rest'; import {Octokit} from '@octokit/rest';
import {createTokenAuth} from '@octokit/auth-token';
import TSClient from './TSClient.js'; import TSClient from './TSClient.js';
import git from 'simple-git'; 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 { 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() { 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; return data;
} }
public static async LocalRepository() { public static async LocalRepository() {
const {latest} = await git().log({maxCount: 1}); const {latest} = await git().log({maxCount: 1});
return latest; return latest;
} }
public static async PrivateRepository() {
const {data} = await octokit.repos.getContent({path: 'private/_.ts', repo: 'Daggerbot-Private', ...this.repositoryConfig});
return data as IDataContent;
}
} }

View File

@ -149,7 +149,7 @@ __metadata:
languageName: node languageName: node
linkType: hard 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 version: 4.0.0
resolution: "@octokit/auth-token@npm:4.0.0" resolution: "@octokit/auth-token@npm:4.0.0"
checksum: 10/60e42701e341d700f73c518c7a35675d36d79fa9d5e838cc3ade96d147e49f5ba74db2e07b2337c2b95aaa540aa42088116df2122daa25633f9e70a2c8785c44 checksum: 10/60e42701e341d700f73c518c7a35675d36d79fa9d5e838cc3ade96d147e49f5ba74db2e07b2337c2b95aaa540aa42088116df2122daa25633f9e70a2c8785c44
@ -744,7 +744,6 @@ __metadata:
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "daggerbot-ts@workspace:." resolution: "daggerbot-ts@workspace:."
dependencies: dependencies:
"@octokit/auth-token": "npm:4.0.0"
"@octokit/rest": "npm:20.0.2" "@octokit/rest": "npm:20.0.2"
"@toast/tokenservice-client": "npm:1.0.11" "@toast/tokenservice-client": "npm:1.0.11"
"@types/ms": "npm:0.7.34" "@types/ms": "npm:0.7.34"