+func mainFetch(cfgPath string) error {
+ cfg, err := LoadConfig(cfgPath)
+ if err != nil {
+ return err
+ }
+ state, err := LoadState(cfg.StatePath)
+ if err != nil {
+ return err
+ }
+ err = handleFiles(cfg, state)
+ if err != nil {
+ return err
+ }
+ // NOTE: Make sure to call WriteState() only if there were no
+ // errors (see WriteState() and README)
+ err = WriteState(cfg.StatePath, state)
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+func mainConvert(typ, srcPath, dstPath string) error {
+ var t FileType
+ err := t.UnmarshalText([]byte(typ))
+ if err != nil {
+ return err
+ }
+
+ src, err := ioutil.ReadFile(srcPath)
+ if err != nil {
+ return err
+ }
+ var x bytes.Buffer
+ if t == FileTypePlain {
+ x.Write(src)
+ } else if t == FileTypePasswd {
+ pws, err := ParsePasswds(bytes.NewReader(src))