pantry/scripts/ls-aws-s3.ts

48 lines
1,009 B
TypeScript
Raw Normal View History

2022-09-14 00:53:12 +03:00
#!/usr/bin/env -S tea -E
/*---
args:
- deno
- run
- --allow-env
- --allow-net
- --import-map={{ srcroot }}/import-map.json
---*/
import { S3 } from "s3"
const sortByModified = Deno.args.includes("-m")
const reverse = Deno.args.includes("-r")
const s3 = new S3({
accessKeyID: Deno.env.get("AWS_ACCESS_KEY_ID")!,
secretKey: Deno.env.get("AWS_SECRET_ACCESS_KEY")!,
region: "us-east-1",
})
const bucket = s3.getBucket(Deno.env.get("AWS_S3_BUCKET")!)
const output: FileInfo[] = []
for await(const obj of bucket.listAllObjects({ batchSize: 200 })) {
const { key, lastModified } = obj
2022-09-27 22:11:35 +03:00
if (!key?.match(/\.tar\.[gx]z$/)) { continue }
2022-09-14 00:53:12 +03:00
output.push({ key: key!, lastModified: lastModified! })
}
output.sort((a, b) => {
switch (sortByModified) {
case true: return a.lastModified.valueOf() - b.lastModified.valueOf()
case false: return a.key < b.key ? -1 : 1
}
})
if (reverse) { output.reverse() }
console.table(output)
interface FileInfo {
key: string
lastModified: Date
2022-09-27 22:11:35 +03:00
}