Browse Source

Clean up directories on `wf logout`

On logout, this deletes host / user directories if they're empty.

Ref T586
pull/36/head
Matt Baer 4 years ago
parent
commit
60d987eed3
2 changed files with 52 additions and 1 deletions
  1. +36
    -1
      config/user.go
  2. +16
    -0
      fileutils/fileutils.go

+ 36
- 1
config/user.go View File

@@ -57,7 +57,42 @@ func DeleteUser(c *cli.Context) error {
username = ""
}

return fileutils.DeleteFile(filepath.Join(dir, username, "user.json"))
// Delete user data
err = fileutils.DeleteFile(filepath.Join(dir, username, "user.json"))
if err != nil {
return err
}

// Do additional cleanup in wf-cli
if c.App.Name == "wf" {
// Delete user dir if it's empty
userEmpty, err := fileutils.IsEmpty(filepath.Join(dir, username))
if err != nil {
return err
}
if !userEmpty {
return nil
}
err = fileutils.DeleteFile(filepath.Join(dir, username))
if err != nil {
return err
}

// Delete host dir if it's empty
hostEmpty, err := fileutils.IsEmpty(dir)
if err != nil {
return err
}
if !hostEmpty {
return nil
}
err = fileutils.DeleteFile(dir)
if err != nil {
return err
}
}

return nil
}

func SaveUser(c *cli.Context, u *writeas.AuthUser) error {


+ 16
- 0
fileutils/fileutils.go View File

@@ -3,6 +3,7 @@ package fileutils
import (
"bufio"
"fmt"
"io"
"os"
"strings"
)
@@ -109,3 +110,18 @@ func FindLine(p, startsWith string) string {
func DeleteFile(p string) error {
return os.Remove(p)
}

// IsEmpty returns whether or not the given directory is empty
func IsEmpty(d string) (bool, error) {
f, err := os.Open(d)
if err != nil {
return false, err
}
defer f.Close()

_, err = f.Readdirnames(1)
if err == io.EOF {
return true, nil
}
return false, err
}

Loading…
Cancel
Save