mirror of
https://github.com/ivabus/pantry
synced 2024-11-10 10:35:17 +03:00
48 lines
1,009 B
TypeScript
Executable file
48 lines
1,009 B
TypeScript
Executable file
#!/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
|
|
if (!key?.match(/\.tar\.[gx]z$/)) { continue }
|
|
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
|
|
}
|