pantry/.github/scripts/index-packages.ts

49 lines
1.6 KiB
TypeScript
Raw Normal View History

#!/usr/bin/env -S tea -E deno run --allow-read --allow-env --allow-net --allow-sys
import { usePantry } from "hooks"
import * as ARGV from "./utils/args.ts"
import { SQSClient, SendMessageCommand } from "npm:@aws-sdk/client-sqs@^3"
2023-06-13 02:20:31 +03:00
import { SNSClient, PublishCommand } from "npm:@aws-sdk/client-sns@^3"
import { panic } from "utils"
2023-06-13 02:10:04 +03:00
const region = Deno.env.get("AWS_REGION") ?? panic("No region specified")
const sqsClient = new SQSClient({ region })
const snsClient = new SNSClient({ region })
const pantry = usePantry()
const pkgs = await ARGV.toArray(ARGV.pkgs())
for(const pkg of pkgs) {
try {
const yml = await pantry.getYAML(pkg).parse()
const project = pkg.project
const taskMessage = {
project,
github: yml?.versions?.github || "",
// TODO: add other useable data here eventually
}
2023-06-13 02:10:04 +03:00
// DEPRECATED: This is the old way of doing things
const res = await sqsClient.send(new SendMessageCommand({
MessageGroupId: 'project',
MessageDeduplicationId: project,
MessageBody: JSON.stringify(taskMessage),
QueueUrl: Deno.env.get("SQS_GENERATE_PACKAGE_DETAILS_URL")!,
}))
console.log(`SQS task for pkg:${project} messageId:${res.MessageId}`)
2023-06-13 02:10:04 +03:00
const snsMessage = await snsClient.send(new PublishCommand({
TopicArn: Deno.env.get("SNS_NEW_PACKAGES_TOPIC")!,
Message: JSON.stringify(taskMessage),
MessageGroupId: 'project',
MessageDeduplicationId: project,
}))
console.log(`SNS message published for pkg:${project} messageId:${snsMessage.MessageId}`)
} catch (error) {
console.error(error);
}
}