1
0
mirror of https://github.com/writeas/writeas-cli synced 2025-07-22 22:08:13 +00:00

Clean up directories on wf logout

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

Ref T586
This commit is contained in:
Matt Baer 2019-07-29 14:40:49 -04:00
parent eb6332945a
commit 60d987eed3
2 changed files with 52 additions and 1 deletions

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 {

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
}