Neigh map[NodeId]*Node
Alias map[string]*NodeId
+ AreaId2Area map[AreaId]*Area
+ AreaName2Id map[string]*AreaId
+
Spool string
LogPath string
UmaskForce *int
}
func CtxFromCmdline(
- cfgPath,
- spoolPath,
- logPath string,
+ cfgPath, spoolPath, logPath string,
quiet, showPrgrs, omitPrgrs, debug bool,
) (*Ctx, error) {
env := os.Getenv(CfgPathEnv)
if showPrgrs && omitPrgrs {
return nil, errors.New("simultaneous -progress and -noprogress")
}
- cfgRaw, err := ioutil.ReadFile(cfgPath)
+ fi, err := os.Stat(cfgPath)
if err != nil {
return nil, err
}
- ctx, err := CfgParse(cfgRaw)
+ var cfg *CfgJSON
+ if fi.IsDir() {
+ cfg, err = DirToCfg(cfgPath)
+ if err != nil {
+ return nil, err
+ }
+ } else {
+ cfgRaw, err := ioutil.ReadFile(cfgPath)
+ if err != nil {
+ return nil, err
+ }
+ cfg, err = CfgParse(cfgRaw)
+ if err != nil {
+ return nil, err
+ }
+ }
+ ctx, err := Cfg2Ctx(cfg)
if err != nil {
return nil, err
}
func (ctx *Ctx) IsEnoughSpace(want int64) bool {
var s unix.Statfs_t
if err := unix.Statfs(ctx.Spool, &s); err != nil {
- log.Fatalln(err)
+ log.Fatalln("Can not stat spool:", err)
}
return int64(s.Bavail)*int64(s.Bsize) > want
}