diff --git a/package.json b/package.json index 816443892..b740268d2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "bitburner", "license": "SEE LICENSE IN license.txt", - "version": "2.4.0dev", + "version": "2.4.1dev", "main": "electron-main.js", "author": { "name": "Daniel Xie, Olivier Gagnon, et al." @@ -108,7 +108,7 @@ "url": "git+https://github.com/bitburner-official/bitburner-src.git" }, "scripts": { - "doc": "npx api-extractor run && npx api-documenter markdown && rm input/bitburner.api.json && rm -r input && git add markdown/ && git add tsdoc-metadata.json", + "doc": "bash ./tools/doc.sh", "format": "prettier -c --write .", "format:report": "prettier -c .", "start": "cd .app && http-server -p 8000", @@ -127,7 +127,6 @@ "preversion": "npm install && npm run test", "version": "sh ./tools/build-release.sh && git add --all", "postversion": "git push -u origin dev && git push --tags", - "changelog": "node tools/fetch-changelog/index.js --from=$(cat last_changelog_hash) > changelog.md", - "bundle-doc": "node tools/bundle-doc/index.js" + "changelog": "node tools/fetch-changelog/index.js --from=$(cat last_changelog_hash) > changelog.md" } } diff --git a/src/Documentation/ui/doc/advanced/bitnodes.md b/src/Documentation/doc/advanced/bitnodes.md similarity index 100% rename from src/Documentation/ui/doc/advanced/bitnodes.md rename to src/Documentation/doc/advanced/bitnodes.md diff --git a/src/Documentation/ui/doc/advanced/bladeburners.md b/src/Documentation/doc/advanced/bladeburners.md similarity index 100% rename from src/Documentation/ui/doc/advanced/bladeburners.md rename to src/Documentation/doc/advanced/bladeburners.md diff --git a/src/Documentation/ui/doc/advanced/corporations.md b/src/Documentation/doc/advanced/corporations.md similarity index 100% rename from src/Documentation/ui/doc/advanced/corporations.md rename to src/Documentation/doc/advanced/corporations.md diff --git a/src/Documentation/ui/doc/advanced/gang.md b/src/Documentation/doc/advanced/gang.md similarity index 100% rename from src/Documentation/ui/doc/advanced/gang.md rename to src/Documentation/doc/advanced/gang.md diff --git a/src/Documentation/ui/doc/advanced/grafting.md b/src/Documentation/doc/advanced/grafting.md similarity index 100% rename from src/Documentation/ui/doc/advanced/grafting.md rename to src/Documentation/doc/advanced/grafting.md diff --git a/src/Documentation/ui/doc/advanced/hacknetservers.md b/src/Documentation/doc/advanced/hacknetservers.md similarity index 100% rename from src/Documentation/ui/doc/advanced/hacknetservers.md rename to src/Documentation/doc/advanced/hacknetservers.md diff --git a/src/Documentation/ui/doc/advanced/intelligence.md b/src/Documentation/doc/advanced/intelligence.md similarity index 100% rename from src/Documentation/ui/doc/advanced/intelligence.md rename to src/Documentation/doc/advanced/intelligence.md diff --git a/src/Documentation/ui/doc/advanced/sleeves.md b/src/Documentation/doc/advanced/sleeves.md similarity index 100% rename from src/Documentation/ui/doc/advanced/sleeves.md rename to src/Documentation/doc/advanced/sleeves.md diff --git a/src/Documentation/ui/doc/advanced/sourcefiles.md b/src/Documentation/doc/advanced/sourcefiles.md similarity index 100% rename from src/Documentation/ui/doc/advanced/sourcefiles.md rename to src/Documentation/doc/advanced/sourcefiles.md diff --git a/src/Documentation/ui/doc/advanced/stanek.md b/src/Documentation/doc/advanced/stanek.md similarity index 100% rename from src/Documentation/ui/doc/advanced/stanek.md rename to src/Documentation/doc/advanced/stanek.md diff --git a/src/Documentation/ui/doc/basic/augmentations.md b/src/Documentation/doc/basic/augmentations.md similarity index 100% rename from src/Documentation/ui/doc/basic/augmentations.md rename to src/Documentation/doc/basic/augmentations.md diff --git a/src/Documentation/ui/doc/basic/codingcontracts.md b/src/Documentation/doc/basic/codingcontracts.md similarity index 100% rename from src/Documentation/ui/doc/basic/codingcontracts.md rename to src/Documentation/doc/basic/codingcontracts.md diff --git a/src/Documentation/ui/doc/basic/companies.md b/src/Documentation/doc/basic/companies.md similarity index 100% rename from src/Documentation/ui/doc/basic/companies.md rename to src/Documentation/doc/basic/companies.md diff --git a/src/Documentation/ui/doc/basic/crimes.md b/src/Documentation/doc/basic/crimes.md similarity index 100% rename from src/Documentation/ui/doc/basic/crimes.md rename to src/Documentation/doc/basic/crimes.md diff --git a/src/Documentation/ui/doc/basic/factions.md b/src/Documentation/doc/basic/factions.md similarity index 100% rename from src/Documentation/ui/doc/basic/factions.md rename to src/Documentation/doc/basic/factions.md diff --git a/src/Documentation/ui/doc/basic/hacking.md b/src/Documentation/doc/basic/hacking.md similarity index 100% rename from src/Documentation/ui/doc/basic/hacking.md rename to src/Documentation/doc/basic/hacking.md diff --git a/src/Documentation/ui/doc/basic/hacknet_nodes.md b/src/Documentation/doc/basic/hacknet_nodes.md similarity index 100% rename from src/Documentation/ui/doc/basic/hacknet_nodes.md rename to src/Documentation/doc/basic/hacknet_nodes.md diff --git a/src/Documentation/ui/doc/basic/infiltration.md b/src/Documentation/doc/basic/infiltration.md similarity index 100% rename from src/Documentation/ui/doc/basic/infiltration.md rename to src/Documentation/doc/basic/infiltration.md diff --git a/src/Documentation/ui/doc/basic/ram.md b/src/Documentation/doc/basic/ram.md similarity index 100% rename from src/Documentation/ui/doc/basic/ram.md rename to src/Documentation/doc/basic/ram.md diff --git a/src/Documentation/ui/doc/basic/reputation.md b/src/Documentation/doc/basic/reputation.md similarity index 100% rename from src/Documentation/ui/doc/basic/reputation.md rename to src/Documentation/doc/basic/reputation.md diff --git a/src/Documentation/ui/doc/basic/scripts.md b/src/Documentation/doc/basic/scripts.md similarity index 100% rename from src/Documentation/ui/doc/basic/scripts.md rename to src/Documentation/doc/basic/scripts.md diff --git a/src/Documentation/ui/doc/basic/servers.md b/src/Documentation/doc/basic/servers.md similarity index 100% rename from src/Documentation/ui/doc/basic/servers.md rename to src/Documentation/doc/basic/servers.md diff --git a/src/Documentation/ui/doc/basic/stats.md b/src/Documentation/doc/basic/stats.md similarity index 100% rename from src/Documentation/ui/doc/basic/stats.md rename to src/Documentation/doc/basic/stats.md diff --git a/src/Documentation/ui/doc/basic/stockmarket.md b/src/Documentation/doc/basic/stockmarket.md similarity index 100% rename from src/Documentation/ui/doc/basic/stockmarket.md rename to src/Documentation/doc/basic/stockmarket.md diff --git a/src/Documentation/ui/doc/basic/terminal.md b/src/Documentation/doc/basic/terminal.md similarity index 100% rename from src/Documentation/ui/doc/basic/terminal.md rename to src/Documentation/doc/basic/terminal.md diff --git a/src/Documentation/ui/doc/basic/world.md b/src/Documentation/doc/basic/world.md similarity index 100% rename from src/Documentation/ui/doc/basic/world.md rename to src/Documentation/doc/basic/world.md diff --git a/src/Documentation/ui/doc/changelog.md b/src/Documentation/doc/changelog.md similarity index 100% rename from src/Documentation/ui/doc/changelog.md rename to src/Documentation/doc/changelog.md diff --git a/src/Documentation/ui/doc/help/bitnode_order.md b/src/Documentation/doc/help/bitnode_order.md similarity index 100% rename from src/Documentation/ui/doc/help/bitnode_order.md rename to src/Documentation/doc/help/bitnode_order.md diff --git a/src/Documentation/ui/doc/help/getting_started.md b/src/Documentation/doc/help/getting_started.md similarity index 100% rename from src/Documentation/ui/doc/help/getting_started.md rename to src/Documentation/doc/help/getting_started.md diff --git a/src/Documentation/ui/doc/help/tools_and_resources.md b/src/Documentation/doc/help/tools_and_resources.md similarity index 100% rename from src/Documentation/ui/doc/help/tools_and_resources.md rename to src/Documentation/doc/help/tools_and_resources.md diff --git a/src/Documentation/ui/doc/index.md b/src/Documentation/doc/index.md similarity index 100% rename from src/Documentation/ui/doc/index.md rename to src/Documentation/doc/index.md diff --git a/src/Documentation/ui/doc/migrations/v1.md b/src/Documentation/doc/migrations/v1.md similarity index 100% rename from src/Documentation/ui/doc/migrations/v1.md rename to src/Documentation/doc/migrations/v1.md diff --git a/src/Documentation/ui/doc/migrations/v2.md b/src/Documentation/doc/migrations/v2.md similarity index 100% rename from src/Documentation/ui/doc/migrations/v2.md rename to src/Documentation/doc/migrations/v2.md diff --git a/src/Documentation/ui/doc/programming/game_frozen.md b/src/Documentation/doc/programming/game_frozen.md similarity index 100% rename from src/Documentation/ui/doc/programming/game_frozen.md rename to src/Documentation/doc/programming/game_frozen.md diff --git a/src/Documentation/ui/doc/programming/hackingalgorithms.md b/src/Documentation/doc/programming/hackingalgorithms.md similarity index 100% rename from src/Documentation/ui/doc/programming/hackingalgorithms.md rename to src/Documentation/doc/programming/hackingalgorithms.md diff --git a/src/Documentation/ui/doc/programming/learn.md b/src/Documentation/doc/programming/learn.md similarity index 100% rename from src/Documentation/ui/doc/programming/learn.md rename to src/Documentation/doc/programming/learn.md diff --git a/src/Documentation/ui/doc/programming/remote_api.md b/src/Documentation/doc/programming/remote_api.md similarity index 100% rename from src/Documentation/ui/doc/programming/remote_api.md rename to src/Documentation/doc/programming/remote_api.md diff --git a/src/Documentation/ui/pages.ts b/src/Documentation/pages.ts similarity index 100% rename from src/Documentation/ui/pages.ts rename to src/Documentation/pages.ts diff --git a/src/Documentation/ui/root.ts b/src/Documentation/root.ts similarity index 100% rename from src/Documentation/ui/root.ts rename to src/Documentation/root.ts diff --git a/src/Documentation/ui/DocumentationRoot.tsx b/src/Documentation/ui/DocumentationRoot.tsx index d871820ce..ba3676b52 100644 --- a/src/Documentation/ui/DocumentationRoot.tsx +++ b/src/Documentation/ui/DocumentationRoot.tsx @@ -3,32 +3,21 @@ import React from "react"; import Button from "@mui/material/Button"; import { MD } from "../../ui/MD/MD"; -import { getPage } from "./root"; +import { getPage } from "../root"; import { Navigator, useHistory } from "../../ui/React/Documentation"; import { CONSTANTS } from "../../Constants"; - -const resolveRelativePath = (folder: string, relative: string): string => { - const noLastSlash = folder.endsWith("/") ? folder.slice(0, folder.length - 1) : folder; - const lastIndex = noLastSlash.lastIndexOf("/"); - const prefix = lastIndex === -1 ? "" : noLastSlash.slice(0, lastIndex + 1); - const suffix = relative.slice("../".length); - return prefix + suffix; -}; - -const resolvePath = (currentPath: string, newPath: string): string => { - const lastIndex = currentPath.lastIndexOf("/"); - const folder = lastIndex === -1 ? "" : currentPath.slice(0, lastIndex + 1); - if (!newPath.startsWith("../")) return folder + newPath; - - return resolveRelativePath(folder, newPath); -}; +import { resolveFilePath } from "../../Paths/FilePath"; export function DocumentationRoot(): React.ReactElement { const history = useHistory(); const page = getPage(history.page); const navigator = { navigate(relPath: string, external: boolean) { - const newPath = resolvePath(history.page, relPath); + const newPath = resolveFilePath("./" + relPath, history.page); + if (!newPath) { + console.error(`Bad path ${relPath} from ${history.page} while navigating docs.`); + return; + } if (external) { const ver = CONSTANTS.isDevBranch ? "dev" : "stable"; const url = `https://github.com/bitburner-official/bitburner-src/blob/${ver}/src/Documentation/ui/doc/${newPath}`; diff --git a/src/ui/React/Documentation.tsx b/src/ui/React/Documentation.tsx index a3851bf07..d3826afd3 100644 --- a/src/ui/React/Documentation.tsx +++ b/src/ui/React/Documentation.tsx @@ -1,4 +1,5 @@ import React, { useContext, useState } from "react"; +import { FilePath, asFilePath } from "../../Paths/FilePath"; interface Navigator { navigate: (s: string, external: boolean) => void; @@ -9,17 +10,17 @@ export const Navigator = React.createContext({ navigate: () => undefi export const useNavigator = (): Navigator => useContext(Navigator); interface History { - pages: string[]; - page: string; - push(p: string): void; + pages: FilePath[]; + page: FilePath; + push(p: FilePath): void; pop(): void; home(): void; } -const defaultPage = "index.md"; +const defaultPage = asFilePath("index.md"); const HistoryContext = React.createContext({ - page: "", + page: defaultPage, pages: [], push: () => undefined, pop: () => undefined, @@ -29,7 +30,7 @@ const HistoryContext = React.createContext({ export const Provider = HistoryContext.Provider; export const useHistory = (): History => useContext(HistoryContext); -const onPush = (h: History, p: string): History => { +const onPush = (h: History, p: FilePath): History => { return { ...h, page: p, @@ -57,7 +58,7 @@ export const HistoryProvider = (props: React.PropsWithChildren): React.R const [history, setHistory] = useState({ page: defaultPage, pages: [], - push(p: string) { + push(p: FilePath) { setHistory((h) => onPush(h, p)); }, pop() { diff --git a/tools/bundle-doc/index.js b/tools/bundle-doc/index.js index 2583f5b69..230294f5f 100644 --- a/tools/bundle-doc/index.js +++ b/tools/bundle-doc/index.js @@ -1,7 +1,7 @@ const fs = require("fs"); const files = []; -const docRoot = "./src/Documentation/ui/doc"; +const docRoot = "./src/Documentation/doc"; const processDir = (dir) => { console.log(dir); for (const file of fs.readdirSync(dir)) { diff --git a/tools/doc.sh b/tools/doc.sh new file mode 100644 index 000000000..429a950a0 --- /dev/null +++ b/tools/doc.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +echo "Bundling ingame documentation..." +node tools/bundle-doc/index.js + +echo "" +echo "Using API Extractor to generate mappings for Netscript API definitions..." +npx api-extractor run + +echo "" +echo "Creating markdown from Netscript API mappings..." +npx api-documenter markdown + +echo "" +echo "Running cleanup tasks..." +rm input/bitburner.api.json && rm -r input + +# This git add is needed due to documenter using wrong line endings. Console spam discarded. +git add markdown/ 2> /dev/null && git add tsdoc-metadata.json 2> /dev/null +echo "" +echo "Documentation build completed."