|
| 1 | +#!/usr/bin/env bun |
| 2 | + |
| 3 | +import { deletePost, list } from "./src/browse.ts"; |
| 4 | +import { post } from "./src/post.ts"; |
| 5 | + |
| 6 | +const PRODUCTION_URL = "https://just-be.dev"; |
| 7 | +const WORKER_NAME = "just-be-dev"; |
| 8 | +const WORKERS_DEV_SUBDOMAIN = "just-be"; |
| 9 | + |
| 10 | +function siteUrlFromBranch(branch: string | undefined): string { |
| 11 | + if (!branch || branch === "main") return PRODUCTION_URL; |
| 12 | + const sanitized = branch |
| 13 | + .toLowerCase() |
| 14 | + .replace(/[^a-z0-9-]+/g, "-") |
| 15 | + .replace(/^-+|-+$/g, ""); |
| 16 | + return `https://${sanitized}-${WORKER_NAME}.${WORKERS_DEV_SUBDOMAIN}.workers.dev`; |
| 17 | +} |
| 18 | + |
| 19 | +const rawArgs = process.argv.slice(2); |
| 20 | +let branch: string | undefined; |
| 21 | +const args: string[] = []; |
| 22 | + |
| 23 | +for (let i = 0; i < rawArgs.length; i++) { |
| 24 | + if ((rawArgs[i] === "--branch" || rawArgs[i] === "-b") && i + 1 < rawArgs.length) { |
| 25 | + branch = rawArgs[++i]; |
| 26 | + } else { |
| 27 | + args.push(rawArgs[i]); |
| 28 | + } |
| 29 | +} |
| 30 | + |
| 31 | +const command = args[0]; |
| 32 | +const siteUrl = siteUrlFromBranch(branch); |
| 33 | + |
| 34 | +async function main() { |
| 35 | + if (!command || command === "list") { |
| 36 | + await list(siteUrl); |
| 37 | + } else if (command === "post") { |
| 38 | + await post(args[1], siteUrl); |
| 39 | + } else if (command === "delete") { |
| 40 | + const id = Number(args[1]); |
| 41 | + if (!args[1] || !Number.isFinite(id)) { |
| 42 | + console.error("Usage: micro delete <id>"); |
| 43 | + process.exit(1); |
| 44 | + } |
| 45 | + await deletePost(id, siteUrl); |
| 46 | + } else { |
| 47 | + console.error(`Unknown command: ${command}`); |
| 48 | + console.log("Usage:"); |
| 49 | + console.log(" micro [list] [--branch <name>] - List all posts"); |
| 50 | + console.log( |
| 51 | + ' micro post [--branch <name>] ["text"] - Create a post (reads stdin if no text)', |
| 52 | + ); |
| 53 | + console.log(" micro delete [--branch <name>] <id> - Delete a post"); |
| 54 | + process.exit(1); |
| 55 | + } |
| 56 | +} |
| 57 | + |
| 58 | +main().catch((error) => { |
| 59 | + console.error("Error:", error.message); |
| 60 | + process.exit(1); |
| 61 | +}); |
0 commit comments