/
main.go
92 lines (81 loc) · 2.09 KB
/
main.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
91
92
package main
import (
"bytes"
"fmt"
"log"
"os"
"path/filepath"
"strings"
"time"
"github.com/BurntSushi/toml"
"github.com/maliceio/malice/config"
"github.com/urfave/cli"
)
var (
version string
buildtime string
)
var header = `# Copyright (c) 2013 - 2017 blacktop Joshua Maine, All Rights Reserved.
# See LICENSE for license information.
#######################################################################
# MALICE Configuration ################################################
#######################################################################
`
func main() {
var path string
app := cli.NewApp()
app.Name = "tomlupdate"
app.Author = "blacktop"
app.Email = "https://github.com/blacktop"
app.Version = version + ", BuildTime: " + buildtime
app.Compiled, _ = time.Parse("20060102", buildtime)
app.Usage = "Update Version in Malice Config TOML"
app.ArgsUsage = "malice VERSION"
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "path",
Value: "",
Usage: "path to malice config TOML",
Destination: &path,
},
}
app.Action = func(c *cli.Context) error {
if path == "" {
log.Fatal(fmt.Errorf("please supply `--path` of config.toml flle"))
}
if c.Args().Present() {
// read VERSION
ver := strings.TrimSpace(string(c.Args().First()))
// load config from TOML
config.LoadFromToml("config/config.toml", ver)
// update config version from VERSION file
config.Conf.Version = ver
buf := new(bytes.Buffer)
if err := toml.NewEncoder(buf).Encode(config.Conf); err != nil {
panic(err)
}
fmt.Println(buf.String())
// open plugin config file
configPath, err := filepath.Abs(path)
if err != nil {
log.Fatal(err)
}
f, err := os.OpenFile(configPath, os.O_RDWR|os.O_CREATE, 0600)
if err != nil {
panic(err)
}
defer f.Close()
// write new plugin to installed plugin config
if _, err = f.WriteString(header + buf.String()); err != nil {
panic(err)
}
} else {
log.Fatal(fmt.Errorf("Please supply a malice VERSION"))
}
return nil
}
err := app.Run(os.Args)
if err != nil {
panic(err)
}
}