Просмотр исходного кода

Support opening the archived page

Lucas Stadler лет назад: 8
Родитель
Сommit
a2285f436f
1 измененных файлов с 33 добавлено и 1 удалено
  1. 33 1
      go/archive/archive.go

+ 33 - 1
go/archive/archive.go

3
import (
3
import (
4
	"crypto/rand"
4
	"crypto/rand"
5
	"encoding/json"
5
	"encoding/json"
6
	"flag"
6
	"fmt"
7
	"fmt"
7
	"net/url"
8
	"net/url"
8
	"os"
9
	"os"
11
	"path/filepath"
12
	"path/filepath"
12
)
13
)
13
14
15
var flags struct {
16
	open bool
17
}
18
14
type Archive struct {
19
type Archive struct {
15
	Mappings map[string]string `json:"mappings"`
20
	Mappings map[string]string `json:"mappings"`
16
}
21
}
17
22
23
func init() {
24
	flag.BoolVar(&flags.open, "open", false, "Open the archived page")
25
}
26
18
func main() {
27
func main() {
19
	u, err := url.Parse(os.Args[1])
28
	flag.Parse()
29
30
	u, err := url.Parse(flag.Arg(0))
20
	if err != nil {
31
	if err != nil {
21
		exit("url.Parse", err)
32
		exit("url.Parse", err)
22
	}
33
	}
37
	p, ok := archive.Mappings[u.String()]
48
	p, ok := archive.Mappings[u.String()]
38
	if ok {
49
	if ok {
39
		fmt.Println("==> Archived at", p)
50
		fmt.Println("==> Archived at", p)
51
52
		if flags.open {
53
			fmt.Println("==> Opening archive of", u)
54
			open(u, p)
55
		}
56
40
		return
57
		return
41
	}
58
	}
42
59
112
	f.Close()
129
	f.Close()
113
130
114
	fmt.Println("==> Archived at", p)
131
	fmt.Println("==> Archived at", p)
132
133
	if flags.open {
134
		fmt.Println("==> Opening archive of", u)
135
		open(u, p)
136
	}
137
}
138
139
func open(u *url.URL, path string) {
140
	cmd := exec.Command("xdg-open", path)
141
	cmd.Stderr = os.Stderr
142
	cmd.Stdout = os.Stdout
143
	err := cmd.Start()
144
	if err != nil {
145
		exit("cmd.Start", err)
146
	}
115
}
147
}
116
148
117
func exit(msg string, err error) {
149
func exit(msg string, err error) {