Compare commits

..

2 Commits

Author SHA1 Message Date
687c1ac5e8 add cmd options 2023-01-06 22:57:57 +09:00
5fc8ba54da fix URL encoding bug 2023-01-06 22:53:37 +09:00
4 changed files with 69 additions and 4 deletions

18
main.ts
View File

@ -25,6 +25,8 @@ import { serve } from "http/server.ts";
import { user_command } from "./user.ts"; import { user_command } from "./user.ts";
import { key_out_cmd } from "./keyout.ts"; import { key_out_cmd } from "./keyout.ts";
import { prepareDocs } from "./src/store/doc.ts"; import { prepareDocs } from "./src/store/doc.ts";
import { connectDB } from "./src/user/db.ts";
import * as users from "./src/user/user.ts";
const github_markdown = (await Deno.readTextFile( const github_markdown = (await Deno.readTextFile(
join(fromFileUrl(import.meta.url), "..", "static", "github-markdown.css"), join(fromFileUrl(import.meta.url), "..", "static", "github-markdown.css"),
@ -81,12 +83,26 @@ if (import.meta.main) {
default: 8000, default: 8000,
}) })
.option("--auth", "Enable authentication.") .option("--auth", "Enable authentication.")
.option("--db-path <path:string>", "The path to the database file.", {
default: ":memory:",
})
.option("--id-password <idpassword:string>", "The password to use. (Not recommended). id:password format.")
.arguments("[hostname:string]") .arguments("[hostname:string]")
.action(async ({ debug, port, auth }, hostname) => { .action(async ({ debug, port, auth, dbPath, idPassword }, hostname) => {
hostname ??= "localhost"; hostname ??= "localhost";
if (auth) { if (auth) {
Deno.env.set("AUTH_REQUIRED", "true"); Deno.env.set("AUTH_REQUIRED", "true");
} }
if (dbPath) {
Deno.env.set("DB_PATH", dbPath);
}
if (idPassword) {
Deno.env.set("AUTH_REQUIRED", "true");
const db = connectDB();
const [username, password] = idPassword.split(":");
const new_user = await users.createUser(username, password);
await users.addUser(db, new_user);
}
if (debug) { if (debug) {
console.log("Debug mode enabled."); console.log("Debug mode enabled.");
} }

View File

@ -1,6 +1,10 @@
import { HandlerContext, Handlers, PageProps } from "$fresh/server.ts"; import { HandlerContext, Handlers, PageProps } from "$fresh/server.ts";
import { asset, Head } from "$fresh/runtime.ts"; import { Head } from "$fresh/runtime.ts";
import { encodePath, removePrefixFromPathname } from "../../util/util.ts"; import {
decodePath,
encodePath,
removePrefixFromPathname,
} from "../../util/util.ts";
import { join } from "path/posix.ts"; import { join } from "path/posix.ts";
import DirList, { EntryInfo } from "../../islands/DirList.tsx"; import DirList, { EntryInfo } from "../../islands/DirList.tsx";
import FileViewer from "../../islands/FileViewer.tsx"; import FileViewer from "../../islands/FileViewer.tsx";
@ -127,7 +131,7 @@ async function GET(req: Request, ctx: HandlerContext): Promise<Response> {
} }
} }
const url = new URL(req.url); const url = new URL(req.url);
const path = removePrefixFromPathname(decodeURI(url.pathname), "/dir"); const path = removePrefixFromPathname(decodePath(url.pathname), "/dir");
if (url.searchParams.has("pretty")) { if (url.searchParams.has("pretty")) {
return await renderPage(req, path, ctx); return await renderPage(req, path, ctx);
} else { } else {

41
test_data/h#1/SUMMARY.md Normal file
View File

@ -0,0 +1,41 @@
---
title: Q&A
tags: ["Q&A"]
---
# Q&A
## Q1
What is the default branch name?
## A1
The default branch name is `master`. You can change it to any name you like. For
example, you can change it to `main` by following the steps below:
```
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a
```
## Q2
What is the defference between `git branch` and `git branch -a`?
## A2
`git branch` shows only local branches, while `git branch -a` shows both local
and remote branches.
## Q3
Fast-forward merge is not possible. How can I merge the feature branch into the
main branch?
## A3
You can use `--no-ff` option to force a merge commit even if the merge is a
fast-forward.

View File

@ -16,3 +16,7 @@ export function removePrefixFromPathname(
export function encodePath(path: string): string { export function encodePath(path: string): string {
return path.split("/").map(encodeURIComponent).join("/"); return path.split("/").map(encodeURIComponent).join("/");
} }
export function decodePath(path: string): string {
return path.split("/").map(decodeURIComponent).join("/");
}