/
main.go
72 lines (64 loc) · 1.59 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
package main
import (
"flag"
"fmt"
"io/ioutil"
"os"
"github.com/nlopes/slack"
)
func main() {
var token, message, channel, username string
var err error
flag.StringVar(&token, "token", "", "token")
flag.StringVar(&message, "message", "", "post message")
flag.StringVar(&channel, "channel", "general", "posting channel name")
flag.StringVar(&username, "username", "", "posting username")
flag.Parse()
if token == "" {
fmt.Fprintln(os.Stderr, "token was required")
os.Exit(1)
}
api := slack.New(token)
channels, err := api.GetChannels(true)
if err != nil {
fmt.Fprintf(os.Stderr, "get channels error: %s", err)
os.Exit(1)
}
var channelInfo *slack.Channel
for _, ch := range channels {
if ch.Name == channel {
channelInfo = &ch
break
}
}
if channelInfo == nil {
fmt.Fprintln(os.Stderr, "channel not found", err)
os.Exit(1)
}
var pretext string
if hostname, err := os.Hostname(); err == nil {
if username == "" {
pretext = fmt.Sprintf("this nopaste posted by %s", hostname)
} else {
pretext = fmt.Sprintf("this nopaste posted by %s@%s", username, hostname)
}
}
b, err := ioutil.ReadAll(os.Stdin)
if err != nil {
fmt.Fprintf(os.Stderr, "stdin read error: %s", err)
os.Exit(1)
}
bs := string(b)
fp := slack.FileUploadParameters{
Title: message,
InitialComment: pretext,
Content: bs,
Channels: []string{channelInfo.ID},
}
file, err := api.UploadFile(fp)
if err != nil {
fmt.Fprintf(os.Stderr, "file upload error: %s", err)
os.Exit(1)
}
fmt.Printf("Message successfully upload snippet: %s at %s", file.URL, file.Timestamp)
}