diff options
| author | Shulhan <ms@kilabit.info> | 2025-05-30 03:05:40 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2025-05-30 03:06:10 +0700 |
| commit | 470cd42e6516897feaf2f9734e2c4a9d99c97f86 (patch) | |
| tree | d7cee0b28462ee81fdeeb1d77b853bd38a2b6e83 /cmd | |
| parent | 37c5a44f1330c968332a0a00d925ed32add80084 (diff) | |
| download | jarink-470cd42e6516897feaf2f9734e2c4a9d99c97f86.tar.xz | |
cmd/deadlinks: implement the CLI for deadlinks
The CLI contains one command: scan
Its accept single argument: an URL to be scanned,
and one option "-verbose".
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/deadlinks/main.go | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/cmd/deadlinks/main.go b/cmd/deadlinks/main.go new file mode 100644 index 0000000..59c06b1 --- /dev/null +++ b/cmd/deadlinks/main.go @@ -0,0 +1,92 @@ +// SPDX-FileCopyrightText: 2025 M. Shulhan <ms@kilabit.info> +// SPDX-License-Identifier: GPL-3.0-only + +package main + +import ( + "flag" + "fmt" + "log" + "os" + "strings" + + "git.sr.ht/~shulhan/deadlinks" +) + +func main() { + var optVerbose bool + + flag.BoolVar(&optVerbose, `verbose`, false, + `print additional information while running`) + + flag.Parse() + + var cmd = flag.Arg(0) + if cmd == "" { + goto invalid_command + } + + cmd = strings.ToLower(cmd) + if cmd == "scan" { + var scanOpts = deadlinks.ScanOptions{ + Url: flag.Arg(1), + IsVerbose: optVerbose, + } + if scanOpts.Url == "" { + goto invalid_command + } + + var result *deadlinks.Result + var err error + result, err = deadlinks.Scan(scanOpts) + if err != nil { + log.Fatal(err.Error()) + } + + var page string + var listBroken []deadlinks.Broken + for page, listBroken = range result.PageLinks { + fmt.Printf("Page: %s\n", page) + for _, broken := range listBroken { + fmt.Printf("\tDead: %s (%d)\n", broken.Link, + broken.Code) + } + } + return + } + +invalid_command: + usage() + os.Exit(1) +} + +func usage() { + log.Println(` +deadlinks <COMMAND> <args...> + +Deadlinks is a program to scan for invalid links inside HTML page on the live +web server. +Invalid links will be scanned on anchor href attribute ("<a href=...>") or on +the image src attribute ("<img src=..."). + +== Usage + +scan URL [OPTIONS] + + Start scanning for deadlinks on the web server pointed by URL. + Once finished it will print the page and list of dead links inside + that page. + This command accept the following options, + + -verbose : print the page that being scanned. + + Example, + + $ deadlinks scan https://kilabit.info + Page: https://kilabit.info/some/page + Dead: https://kilabit.info/some/page/image.png (404) + Dead: https://external.com/link (500) + Page: https://kilabit.info/another/page + Dead: https://kilabit.info/another/page/image.png (404) + Dead: https://external.org/link (500)`) +} |
