45 lines
1.0 KiB
TypeScript
Executable File
45 lines
1.0 KiB
TypeScript
Executable File
#!/home/silicoflare/.bun/bin/bun
|
|
|
|
import { spawn } from "bun";
|
|
import { workDomains, directWorkURLs } from "./data";
|
|
|
|
const url = process.argv[2] ?? "";
|
|
|
|
const WORK_BROWSER = "firefox";
|
|
const PERSONAL_BROWSER = "/home/silicoflare/Programs/waterfox/waterfox";
|
|
|
|
if (!workDomains || !directWorkURLs) {
|
|
console.error("Data is not loaded");
|
|
process.exit(1);
|
|
}
|
|
|
|
function getBrowser(url: string) {
|
|
const parsed = new URL(url);
|
|
|
|
// query param based
|
|
const queryParams = parsed.searchParams;
|
|
if (queryParams.has("work")) {
|
|
return WORK_BROWSER;
|
|
}
|
|
|
|
// domain based
|
|
const domain = parsed.hostname;
|
|
if (workDomains.some(workDomain => domain.includes(workDomain))) {
|
|
return WORK_BROWSER;
|
|
}
|
|
|
|
// direct URL based
|
|
if (directWorkURLs.some(directWorkURL => url.includes(directWorkURL))) {
|
|
return WORK_BROWSER;
|
|
}
|
|
|
|
return PERSONAL_BROWSER;
|
|
}
|
|
|
|
if (!url) {
|
|
// open personal browser if no URL is provided
|
|
spawn([PERSONAL_BROWSER]);
|
|
}
|
|
|
|
const browser = getBrowser(url);
|
|
spawn([browser, url]); |