74 lines
2.1 KiB
TypeScript
74 lines
2.1 KiB
TypeScript
#!/usr/bin/env runts -- --allow-all
|
|
|
|
import {parseArgs} from "jsr:@std/cli/parse-args";
|
|
import {exit, log, readFileToString,} from "https://script.hatter.ink/@71/deno-commons-mod.ts";
|
|
import {sendDingTalkTextMessage} from "https://script.hatter.ink/@1/deno-dingtalk-mod.ts";
|
|
|
|
function parseFlags(): any {
|
|
const flags = parseArgs(Deno.args, {
|
|
boolean: ["help"],
|
|
string: ["access-token", "sec-token", "text-message"],
|
|
alias: {
|
|
h: "help",
|
|
t: "access-token",
|
|
T: "sec-token",
|
|
m: "text-message",
|
|
},
|
|
});
|
|
const helpMessage = `send-dingtalk.ts - DESCRIPTION
|
|
|
|
send-dingtalk.ts --access-token TOKEN --sec-token TOKEN --text-message MESSAGE
|
|
`;
|
|
if (flags.help) {
|
|
console.log(helpMessage);
|
|
exit(0);
|
|
}
|
|
return flags;
|
|
}
|
|
|
|
interface SendDingTalkConfig {
|
|
accessToken: string;
|
|
secToken?: string;
|
|
}
|
|
|
|
async function loadConfig(args: any): Promise<SendDingTalkConfig | null> {
|
|
if (args["access-token"]) {
|
|
return {
|
|
accessToken: args["access-token"],
|
|
secToken: args["sec-token"],
|
|
} as SendDingTalkConfig;
|
|
}
|
|
const sendDingtalkConfigContent = await readFileToString(
|
|
"~/.config/send-dingtalk.json",
|
|
);
|
|
if (sendDingtalkConfigContent == null) {
|
|
return null;
|
|
}
|
|
return JSON.parse(sendDingtalkConfigContent) as SendDingTalkConfig;
|
|
}
|
|
|
|
async function main(): Promise<void> {
|
|
const flags = parseFlags();
|
|
|
|
const config = await loadConfig(flags);
|
|
if (config == null) {
|
|
throw new Error("access-token (and/or sec-token) not found");
|
|
}
|
|
await sendDingTalkTextMessage({
|
|
content: flags["text-message"] ??
|
|
((flags._.length > 0) ? flags._.join(" ") : "Empty Message!"),
|
|
}, {
|
|
access_token: config.accessToken,
|
|
sec_token: config.secToken,
|
|
});
|
|
return;
|
|
}
|
|
|
|
main().catch((err) => {
|
|
log.error(err);
|
|
exit(1);
|
|
}).then(() => exit(0));
|
|
|
|
// @SCRIPT-SIGNATURE-V1: yk-r1.ES256.20260505T234159+08:00.MEUCIATO7TEkwd1rvThsxO3R
|
|
// c5mCUG9+pkm5sPhrcZ2Z0EsCAiEAg3ty6y/eU2pvgBMQgKurZoIr/w8jn0NMzDUV3HBAL5o=
|