84 lines
No EOL
1.9 KiB
TypeScript
84 lines
No EOL
1.9 KiB
TypeScript
import { string } from "https://raw.githubusercontent.com/soremwar/deno_types/b5a146610e2c97c1612371fcf610b541f950ee73/prop-types/v15.7.2/prop-types.d.ts";
|
|
import { ensureFileSync, S3, S3Bucket } from "../deps.ts";
|
|
import { wait } from "../deps.ts"
|
|
|
|
const S3inner = wait({
|
|
text: "Generating S3 Index...",
|
|
spinner: "aesthetic"
|
|
})
|
|
|
|
interface S3File {
|
|
url: string
|
|
key: string | undefined
|
|
}
|
|
|
|
const s3 = new S3({
|
|
accessKeyID: Deno.env.get("S3_ACCESS_KEY")!,
|
|
secretKey: Deno.env.get("S3_SECRET_KEY")!,
|
|
endpointURL: Deno.env.get("S3_ENDPOINT_URL"),
|
|
region: "eu-central-1"
|
|
});
|
|
|
|
|
|
let DreamlandBucket = s3.getBucket(Deno.env.get("S3_BUCKET") || "dreamland-assets.lio.systems")
|
|
|
|
const bucketDomain = Deno.env.get("S3_DOMAIN") || `${Deno.env.get("S3_ENDPOINT_URL")}/${Deno.env.get("S3_BUCKET")}`
|
|
|
|
const list = DreamlandBucket.listAllObjects({
|
|
batchSize: 5
|
|
})
|
|
|
|
let Files: S3File[] = []
|
|
|
|
for await (const obj of list) {
|
|
if (obj.size === 0) {
|
|
S3inner.text = `${bucketDomain}/${obj.key} - Is a Folder, Continue`
|
|
continue
|
|
}
|
|
|
|
Files.push({
|
|
url: `${bucketDomain}/${obj.key}`,
|
|
key: obj.key
|
|
})
|
|
}
|
|
|
|
function createFile(files: S3File[]) {
|
|
let string =
|
|
`// This File is generated by scripts/s3.ts
|
|
// Do not edit this File manually
|
|
// run \`vr s3\` to regenerate this File
|
|
|
|
const S3Files = [
|
|
${files.map(file => (`{
|
|
"key" : "${file.key}",
|
|
"url" : "${file.url}"
|
|
}`)).join(",\n ")}
|
|
]
|
|
|
|
export default S3Files
|
|
`
|
|
|
|
return string
|
|
}
|
|
|
|
|
|
async function write(files: S3File[], file: string | URL) {
|
|
const content = createFile(files)
|
|
|
|
await Deno.writeTextFile(`./src/${file}`, content)
|
|
}
|
|
|
|
|
|
if (import.meta.main) {
|
|
|
|
try {
|
|
ensureFileSync(`./src/generated/s3.ts`)
|
|
await write(Files, `generated/s3.ts`)
|
|
} catch (error) {
|
|
console.error(error)
|
|
S3inner.fail()
|
|
Deno.exit(1)
|
|
}
|
|
S3inner.succeed("S3 Index generated.")
|
|
Deno.exit(0)
|
|
} |