47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
#!/usr/bin/env bun
|
|
|
|
import { fileURLToPath } from 'url';
|
|
import fs from "node:fs/promises";
|
|
import { basename, normalize } from "node:path";
|
|
|
|
function ignore_exist_error(fn: (...args: any[]) => Promise<void>) {
|
|
return async (...args: any[]) => {
|
|
try {
|
|
await fn(...args);
|
|
} catch (error: any) {
|
|
if (error.code !== 'EEXIST') {
|
|
throw error; // Re-throw the error if it's not "file exists"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
const mkdir = ignore_exist_error(fs.mkdir);
|
|
const symlink = ignore_exist_error(fs.symlink);
|
|
|
|
|
|
const def = await Bun.file("package.json").json();
|
|
|
|
const dependencies = Object.keys(def.dependencies);
|
|
|
|
for (const pkg of dependencies) {
|
|
const path = normalize(fileURLToPath(import.meta.resolve(pkg)));
|
|
const file = Bun.file(import.meta.resolve(pkg));
|
|
const type = file.type.split(";").at(0);
|
|
const filename = basename(path);
|
|
|
|
switch (type) {
|
|
case "text/x-scss":
|
|
await mkdir(`sass/${pkg}`)
|
|
await symlink(path, `sass/${pkg}/${filename}`);
|
|
console.log(`${path} -> sass/${pkg}/${filename}`)
|
|
break;
|
|
case "text/javascript":
|
|
// console.log("es JS")
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
console.log();
|
|
console.log("Dependencies linked!");
|