piddly little docs

This commit is contained in:
Chris Wanstrath 2025-09-28 16:56:11 -07:00
parent 3e02b3d348
commit 7385900445
24 changed files with 81 additions and 5 deletions

View File

@ -1,3 +1,5 @@
// Show the webapps hosted on this NOSEputer.
import { $ } from "bun"
import { apps } from "app/src/webapp"
@ -12,6 +14,6 @@ export default async function () {
port = port === "80" ? "" : `:${port}`
return <>
{apps().map(app => <><a href={`http://${app}.${domain}${port}`}>{app}</a>{" "}</>)}
{apps().map(app => <a href={`http://${app}.${domain}${port}`}>{app}</a>)}
</>
}

View File

@ -1,3 +1,5 @@
// Show the contents of a file, if possible.
import { escapeHTML } from "bun"
import { readdirSync } from "fs"
import { join, extname } from "path"

View File

@ -1,3 +1,5 @@
// Change directory.
import { dirname, resolve, isAbsolute } from "path"
import { statSync } from "fs"
import { projectDir } from "@/project"

View File

@ -1,3 +1,5 @@
// stream() demo. Counts.
import { stream } from "@/stream"
export default async function () {

View File

@ -1,3 +1,5 @@
// Monkey see, monkey do.
export default function (...args: string[]): string {
return args.join(" ")
}

View File

@ -1,3 +1,5 @@
// Open the Advanced Text Editor and start editing a file.
import { readdirSync } from "fs"
import { join, extname } from "path"

View File

@ -1,3 +1,7 @@
// NOSE developer feature.
//
// Show some debugging information.
import { NOSE_STARTED, NOSE_SYS, NOSE_DIR, GIT_SHA } from "@/config"
export default function () {

View File

@ -1,4 +1,6 @@
/// <reference lib="dom" />
// Small game demo.
export const game = true
import type { InputState } from "@/shared/types"

View File

@ -1,3 +0,0 @@
export default function (name: string): string {
return `Hi, ${name || "stranger"}!!!!`
}

26
app/nose/bin/help.ts Normal file
View File

@ -0,0 +1,26 @@
// Show helpful information about a command.
//
// (Hopefully.)
import { commandPath } from "@/commands"
export default async function (cmd: string) {
const path = commandPath(cmd)
if (!path) throw `${cmd} not found`
const code = (await Bun.file(path).text()).split("\n")
let docs = []
for (const line of code) {
if (line.startsWith("///")) {
docs.push("Runs in the browser.\n")
continue
} else if (line.startsWith("//")) {
docs.push(line.slice(2).trim())
} else if (line.trim()) {
break
}
}
return docs.join("\n")
}

View File

@ -1,8 +1,11 @@
// Load a project so you can work on it.
import { apps } from "app/src/webapp"
import { getState } from "@/session"
export default function (project: string) {
const state = getState()
if (!project) throw `usage: load <project name>`
if (state && apps().includes(project)) {
state.project = project

View File

@ -1,3 +1,5 @@
// Look around.
import { readdirSync } from "fs"
import { NOSE_WWW } from "app/src/config"
import { projectName, projectDir } from "@/project"

View File

@ -1,3 +1,7 @@
// Makes a directory inside the current directory.
//
// Essentially `mkdir -p`.
import { mkdirSync } from "fs"
import { join } from "path"
import { projectDir } from "@/project"

View File

@ -1,3 +1,7 @@
// Create a new project.
//
// We should probably rename this...
import { mkdirSync, writeFileSync } from "fs"
import { join } from "path"
@ -8,7 +12,7 @@ import { isDir } from "app/src/utils"
import load from "./load"
export default function (project: string) {
if (!project) throw "Please provide a name for your new project\n> new <project>"
if (!project) throw "usage: new <project name>"
if (apps().includes(project)) throw `${project} already exists`

View File

@ -1,3 +1,5 @@
// Print the currently loaded project.
import { getState } from "@/session"
export default function () {

View File

@ -1,3 +1,5 @@
// Show the projects on this NOSEputer.
import { apps } from "app/src/webapp"
import { getState } from "@/session"

View File

@ -1,3 +1,5 @@
// Show the current working directory.
import { dirname } from "path"
import { projectDir } from "@/project"
import { getState } from "@/session"

View File

@ -1,3 +1,5 @@
// Remove a file.
import { unlinkSync, readdirSync } from "fs"
import { join } from "path"
import { projectDir } from "@/project"

View File

@ -1,3 +1,5 @@
// Remove a directory, and all its children.
import { rmdirSync, readdirSync } from "fs"
import { join } from "path"
import { projectDir } from "@/project"

View File

@ -1,3 +1,5 @@
// Share a webapp with the public internet.
import { apps } from "app/src/webapp"
import { connectSneaker, sneakers, sneakerUrl } from "app/src/sneaker"

View File

@ -1,3 +1,5 @@
// Create an empty text file.
import { join } from "path"
import { readdirSync } from "fs"
import { projectDir } from "@/project"

View File

@ -1,3 +1,5 @@
// Stop sharing a webapp with the public internet.
import { apps } from "app/src/webapp"
import { disconnectSneaker, sneakers } from "app/src/sneaker"

View File

@ -1,3 +1,5 @@
// Update NOSE itself and restart.
import { $ } from "bun"
export default async function () {

View File

@ -1,3 +1,7 @@
// How long has the NOSE app been running?
//
// Totally different from the host computer's uptime. Usually.
import { NOSE_STARTED } from "@/config"
export default function () {