Skip to content

Commit

Permalink
chore: Tidy up DumpSystem logic
Browse files Browse the repository at this point in the history
  • Loading branch information
twpayne committed May 30, 2022
1 parent d205ec4 commit 565cbbe
Showing 1 changed file with 15 additions and 26 deletions.
41 changes: 15 additions & 26 deletions pkg/chezmoi/dumpsystem.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,36 +77,28 @@ func (s *DumpSystem) Data() interface{} {

// Mkdir implements System.Mkdir.
func (s *DumpSystem) Mkdir(dirname AbsPath, perm fs.FileMode) error {
if _, exists := s.data[dirname.String()]; exists {
return fs.ErrExist
}
s.data[dirname.String()] = &dirData{
return s.setData(dirname.String(), &dirData{
Type: dataTypeDir,
Name: dirname,
Perm: perm,
}
return nil
})
}

// RunCmd implements System.RunCmd.
func (s *DumpSystem) RunCmd(cmd *exec.Cmd) error {
if cmd.Dir == "" {
return nil
}
s.data[cmd.Dir] = &commandData{
return s.setData(cmd.Dir, &commandData{
Type: dataTypeCommand,
Path: cmd.Path,
Args: cmd.Args,
}
return nil
})
}

// RunScript implements System.RunScript.
func (s *DumpSystem) RunScript(scriptname RelPath, dir AbsPath, data []byte, interpreter *Interpreter) error {
scriptnameStr := scriptname.String()
if _, exists := s.data[scriptnameStr]; exists {
return fs.ErrExist
}
scriptData := &scriptData{
Type: dataTypeScript,
Name: NewAbsPath(scriptnameStr),
Expand All @@ -115,8 +107,7 @@ func (s *DumpSystem) RunScript(scriptname RelPath, dir AbsPath, data []byte, int
if !interpreter.None() {
scriptData.Interpreter = interpreter
}
s.data[scriptnameStr] = scriptData
return nil
return s.setData(scriptnameStr, scriptData)
}

// UnderlyingFS implements System.UnderlyingFS.
Expand All @@ -126,29 +117,27 @@ func (s *DumpSystem) UnderlyingFS() vfs.FS {

// WriteFile implements System.WriteFile.
func (s *DumpSystem) WriteFile(filename AbsPath, data []byte, perm fs.FileMode) error {
filenameStr := filename.String()
if _, exists := s.data[filenameStr]; exists {
return fs.ErrExist
}
s.data[filenameStr] = &fileData{
return s.setData(filename.String(), &fileData{
Type: dataTypeFile,
Name: filename,
Contents: string(data),
Perm: perm,
}
return nil
})
}

// WriteSymlink implements System.WriteSymlink.
func (s *DumpSystem) WriteSymlink(oldname string, newname AbsPath) error {
newnameStr := newname.String()
if _, exists := s.data[newnameStr]; exists {
return fs.ErrExist
}
s.data[newnameStr] = &symlinkData{
return s.setData(newname.String(), &symlinkData{
Type: dataTypeSymlink,
Name: newname,
Linkname: oldname,
})
}

func (s *DumpSystem) setData(key string, value interface{}) error {
if _, ok := s.data[key]; ok {
return fs.ErrExist
}
s.data[key] = value
return nil
}

0 comments on commit 565cbbe

Please sign in to comment.