forked from superhx/goblog
/
command.go
90 lines (82 loc) · 1.81 KB
/
command.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package main
import (
"encoding/json"
"fmt"
log "github.com/Sirupsen/logrus"
"github.com/skratchdot/open-golang/open"
"github.com/superhx/goblog/blog"
"github.com/superhx/goblog/server"
"github.com/zenazn/goji/graceful"
"io/ioutil"
"os"
"os/exec"
"time"
)
var config blog.Config
func init() {
config = blog.GetConfig()
}
func main() {
start := time.Now()
defer func() {
end := time.Now()
fmt.Printf("The call took %v to run.\n", end.Sub(start))
}()
if len(os.Args) == 1 {
help("unkown")
return
}
switch cmd := os.Args[1]; {
case cmd == "server" || cmd == "s":
startServer()
defer graceful.Wait()
case cmd == "generate" || cmd == "g":
generate()
case cmd == "init" || cmd == "i":
workspace()
case cmd == "new" || cmd == "n":
article(os.Args[2:])
case cmd == "help" || cmd == "h":
if len(os.Args) > 2 {
help(os.Args[2])
}
case cmd == "deploy" || cmd == "d":
server.Deploy()
default:
help("unkown")
}
}
func startServer() {
go server.Server(8001)
open.Run("http://localhost:8001/dashboard")
}
func generate() {
blog.Generate()
}
func workspace() {
config := blog.GetConfig()
jconfig, _ := json.MarshalIndent(config, "", " ")
ioutil.WriteFile("config.json", jconfig, os.ModePerm)
os.MkdirAll(config.PublicDir, os.ModePerm)
os.MkdirAll(config.SourceDir+"/articles", os.ModePerm)
os.MkdirAll(config.SourceDir+"/data", os.ModePerm)
err := exec.Command("cp", "-R", blog.ThemeDir+"/data/", config.PublicDir).Run()
if err != nil {
log.Errorln(err)
return
}
// err = exec.Command("cp", "-R", blog.ThemeDir+"/dashboard", config.PublicDir).Run()
// if err != nil {
// log.Errorln(err)
// return
// }
log.Infoln("Init workspace done")
}
func article(args []string) {
if len(args) == 0 {
help("new")
return
}
title := args[0]
blog.New(title, []string{}, "", false)
}