/
install.go
56 lines (45 loc) · 1.04 KB
/
install.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
package use
import (
"crypto/sha256"
"encoding/hex"
"io"
"os"
"github.com/mitchellh/ioprogress"
)
func GetFileSha256(filename string) (string, error) {
f, err := os.Open(filename)
if err != nil {
return "", err
}
defer f.Close()
h := sha256.New()
if _, err := io.Copy(h, f); err != nil {
return "", err
}
return hex.EncodeToString(h.Sum(nil)), nil
}
// download accepts a reader, writer, and expected asset size, copies
// the bytes through and displays progress to the console.
func Download(reader io.Reader, writer io.Writer, size int64, title string) error {
// Attempt 1:
// bar := pb.New(size).SetUnits(pb.U_BYTES)
// bar.Prefix(title)
// bar.Start()
// reader = bar.NewProxyReader(reader)
// Attempt 2: mpb
//progress := mpb.New()
//bar := progress.AddBar(size, mpb.BarTrim())
//reader = bar.ProxyReader(reader)
// Attempt 3: ioprogress
reader = &ioprogress.Reader{
Reader: reader,
Size: size,
}
_, err := io.Copy(writer, reader)
if err != nil {
return err
}
//bar.Finish()
//progress.Stop()
return nil
}