forked from Consensys/gnark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
options.go
66 lines (54 loc) · 1.16 KB
/
options.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
package unsafekzg
import (
"os"
"path/filepath"
"github.com/consensys/gnark/logger"
)
type Option func(*config) error
// WithCacheDir enables the filesystem cache and sets the cache directory
// to ~/.gnark/kzg by default.
func WithFSCache() Option {
return func(opt *config) error {
opt.fsCache = true
return nil
}
}
type config struct {
fsCache bool
cacheDir string
}
// default options
func options(opts ...Option) (config, error) {
var opt config
// apply user provided options.
for _, option := range opts {
err := option(&opt)
if err != nil {
return opt, err
}
}
// default value for cacheDir is ~/.gnark/kzg
if opt.fsCache {
if opt.cacheDir == "" {
homeDir, err := os.UserHomeDir()
if err != nil {
panic(err)
}
opt.cacheDir = filepath.Join(homeDir, ".gnark", "kzg")
}
initCache(opt.cacheDir)
}
return opt, nil
}
func initCache(cacheDir string) {
// get gnark logger
log := logger.Logger()
// populate cache from disk
log.Warn().Str("cacheDir", cacheDir).Msg("using kzg srs cache")
if _, err := os.Stat(cacheDir); os.IsNotExist(err) {
err := os.MkdirAll(cacheDir, 0700)
if err != nil {
panic(err)
}
}
}