hozonsite/main.go

114 行
3.0 KiB
Go
Raw パーマリンク Blame 履歴

このファイルには曖昧(ambiguous)なUnicode文字が含まれています

このファイルには、他の文字と見間違える可能性があるUnicode文字が含まれています。 それが意図的なものと考えられる場合は、この警告を無視して構いません。 それらの文字を表示するにはエスケープボタンを使用します。

package main
import (
"fmt"
"os"
"strings"
"strconv"
"gitler.moe/suwako/hozonsite/src"
"gitler.moe/suwako/hozonsite/common"
)
func help() {
fmt.Println("使い方:")
fmt.Println(
common.GetSofname() + " -v :バージョンを表示",
)
fmt.Println(
common.GetSofname() +
" -s [ポート番号] ポート番号でウェブサーバーを実行(デフォルト9920)",
)
fmt.Println(
common.GetSofname() +
" -h :ヘルプを表示",
)
fmt.Println(
common.GetSofname() +
" <URL> :コマンドラインでウェブサイトを保存",
)
}
func saveurlcmd(url string, cnf src.Config) {
// 結局HTTPかHTTPSじゃないわね…
if !src.Checkprefix(url) {
fmt.Println("URLは不正です。終了…")
return
}
// パラメートルの文字(?、=等)を削除
eurl := src.Stripurl(url)
// 既に/usr/local/share/hozonsite/archiveに存在するかどうか
exist := src.Checkexist(eurl, cnf.Datapath)
// 既に存在したら、使う
var confirm string
// あ、既に存在する
if len(exist) > 0 {
fmt.Println("このページが既に保存されているみたいです。")
fmt.Println("本当に手続きましょうか? [y/N]")
// 既に存在するページのURLを表示
for _, ex := range exist {
fmt.Println(strings.Replace(ex, cnf.Datapath, cnf.Domain, 1))
}
fmt.Scanf("%s", &confirm)
}
// 存在しない OR 「本当に手続きましょうか?」でYを入力した場合
if len(exist) == 0 || confirm == "y" || confirm == "Y" {
path := src.Mkdirs(eurl, cnf.Datapath)
// ページをダウンロード
src.Getpage(url, path)
// 色々の必須な編集
src.Scanpage(path, eurl, cnf.Datapath)
// 新しいURLを表示
fmt.Println(cnf.Domain + strings.Replace(path, cnf.Datapath, "", 1))
}
}
func main() {
// コンフィグファイル
cnf, err := src.Getconf()
if err != nil {
fmt.Println(err)
return
}
// コマンドラインのパラメートル
args := os.Args
if len(args) == 2 {
// バージョンを表示
if args[1] == "-v" {
fmt.Println(common.GetSofname() + "-" + common.GetVersion())
return
} else if args[1] == "-s" { // :9920でウェブサーバーを実行
src.Serv(cnf, 9920)
} else if args[1] == "-h" { // ヘルプを表示
help()
return
} else {
// コマンドラインでウェブサイトを保存
saveurlcmd(args[1], cnf)
return
}
} else if len(args) == 3 && args[1] == "-s" {
// 好みなポート番号でウェブサーバーを実行
// でも、数字じゃないかもしん
if port, err := strconv.Atoi(args[2]); err != nil {
fmt.Printf("%qは数字ではありません。\n", args[2])
return
} else {
// OK、実行しよ〜
src.Serv(cnf, port)
}
} else {
// パラメートルは不明の場合、ヘルプを表示
help()
return
}
}