Add an option to set config
This commit is contained in:
parent
e250429f56
commit
6abccc4d5e
@ -127,6 +127,10 @@ var DaemonCmd = &cli.Command{
|
|||||||
Usage: "manage open file limit",
|
Usage: "manage open file limit",
|
||||||
Value: true,
|
Value: true,
|
||||||
},
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "config",
|
||||||
|
Usage: "specify path of config file to use",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: func(cctx *cli.Context) error {
|
Action: func(cctx *cli.Context) error {
|
||||||
err := runmetrics.Enable(runmetrics.RunMetricOptions{
|
err := runmetrics.Enable(runmetrics.RunMetricOptions{
|
||||||
@ -180,6 +184,10 @@ var DaemonCmd = &cli.Command{
|
|||||||
return xerrors.Errorf("opening fs repo: %w", err)
|
return xerrors.Errorf("opening fs repo: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cctx.String("config") != "" {
|
||||||
|
r.SetConfigPath(cctx.String("config"))
|
||||||
|
}
|
||||||
|
|
||||||
if err := r.Init(repo.FullNode); err != nil && err != repo.ErrRepoExists {
|
if err := r.Init(repo.FullNode); err != nil && err != repo.ErrRepoExists {
|
||||||
return xerrors.Errorf("repo init error: %w", err)
|
return xerrors.Errorf("repo init error: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,8 @@ var ErrRepoExists = xerrors.New("repo exists")
|
|||||||
|
|
||||||
// FsRepo is struct for repo, use NewFS to create
|
// FsRepo is struct for repo, use NewFS to create
|
||||||
type FsRepo struct {
|
type FsRepo struct {
|
||||||
path string
|
path string
|
||||||
|
configPath string
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ Repo = &FsRepo{}
|
var _ Repo = &FsRepo{}
|
||||||
@ -78,10 +79,15 @@ func NewFS(path string) (*FsRepo, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return &FsRepo{
|
return &FsRepo{
|
||||||
path: path,
|
path: path,
|
||||||
|
configPath: filepath.Join(path, fsConfig),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (fsr *FsRepo) SetConfigPath(cfgPath string) {
|
||||||
|
fsr.configPath = cfgPath
|
||||||
|
}
|
||||||
|
|
||||||
func (fsr *FsRepo) Exists() (bool, error) {
|
func (fsr *FsRepo) Exists() (bool, error) {
|
||||||
_, err := os.Stat(filepath.Join(fsr.path, fsDatastore))
|
_, err := os.Stat(filepath.Join(fsr.path, fsDatastore))
|
||||||
notexist := os.IsNotExist(err)
|
notexist := os.IsNotExist(err)
|
||||||
@ -115,9 +121,7 @@ func (fsr *FsRepo) Init(t RepoType) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (fsr *FsRepo) initConfig(t RepoType) error {
|
func (fsr *FsRepo) initConfig(t RepoType) error {
|
||||||
cfgP := filepath.Join(fsr.path, fsConfig)
|
_, err := os.Stat(fsr.configPath)
|
||||||
|
|
||||||
_, err := os.Stat(cfgP)
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// exists
|
// exists
|
||||||
return nil
|
return nil
|
||||||
@ -125,7 +129,7 @@ func (fsr *FsRepo) initConfig(t RepoType) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := os.Create(cfgP)
|
c, err := os.Create(fsr.configPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -215,16 +219,18 @@ func (fsr *FsRepo) Lock(repoType RepoType) (LockedRepo, error) {
|
|||||||
return nil, xerrors.Errorf("could not lock the repo: %w", err)
|
return nil, xerrors.Errorf("could not lock the repo: %w", err)
|
||||||
}
|
}
|
||||||
return &fsLockedRepo{
|
return &fsLockedRepo{
|
||||||
path: fsr.path,
|
path: fsr.path,
|
||||||
repoType: repoType,
|
configPath: fsr.configPath,
|
||||||
closer: closer,
|
repoType: repoType,
|
||||||
|
closer: closer,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type fsLockedRepo struct {
|
type fsLockedRepo struct {
|
||||||
path string
|
path string
|
||||||
repoType RepoType
|
configPath string
|
||||||
closer io.Closer
|
repoType RepoType
|
||||||
|
closer io.Closer
|
||||||
|
|
||||||
ds map[string]datastore.Batching
|
ds map[string]datastore.Batching
|
||||||
dsErr error
|
dsErr error
|
||||||
@ -277,7 +283,7 @@ func (fsr *fsLockedRepo) Config() (interface{}, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (fsr *fsLockedRepo) loadConfigFromDisk() (interface{}, error) {
|
func (fsr *fsLockedRepo) loadConfigFromDisk() (interface{}, error) {
|
||||||
return config.FromFile(fsr.join(fsConfig), defConfForType(fsr.repoType))
|
return config.FromFile(fsr.configPath, defConfForType(fsr.repoType))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fsr *fsLockedRepo) SetConfig(c func(interface{})) error {
|
func (fsr *fsLockedRepo) SetConfig(c func(interface{})) error {
|
||||||
@ -306,7 +312,7 @@ func (fsr *fsLockedRepo) SetConfig(c func(interface{})) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// write buffer of TOML bytes to config file
|
// write buffer of TOML bytes to config file
|
||||||
err = ioutil.WriteFile(fsr.join(fsConfig), buf.Bytes(), 0644)
|
err = ioutil.WriteFile(fsr.configPath, buf.Bytes(), 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user