From 0a4b5665c408faa2ba1331ebe24ec33d59d9fa17 Mon Sep 17 00:00:00 2001 From: Yash-Garg Date: Fri, 26 Nov 2021 00:21:55 +0530 Subject: [PATCH] show disk usage and free space on sidebar --- disk/usage.go | 11 +++++ files/file.go | 31 +++++++------ frontend/package.json | 2 +- frontend/src/components/Sidebar.vue | 6 ++- go.mod | 10 ++-- go.sum | 72 +++++++++++++++++++++++++++++ http/resource.go | 8 ++++ 7 files changed, 119 insertions(+), 21 deletions(-) create mode 100644 disk/usage.go diff --git a/disk/usage.go b/disk/usage.go new file mode 100644 index 00000000..013b15b4 --- /dev/null +++ b/disk/usage.go @@ -0,0 +1,11 @@ +package disk + +import "github.com/shirou/gopsutil/disk" + +func GetDiskUsage(path string) *disk.UsageStat { + usage, err := disk.Usage(path) + if err != nil { + return nil + } + return usage +} diff --git a/files/file.go b/files/file.go index 675f7df1..6c4fb62f 100644 --- a/files/file.go +++ b/files/file.go @@ -26,20 +26,23 @@ import ( // FileInfo describes a file. type FileInfo struct { *Listing - Fs afero.Fs `json:"-"` - Path string `json:"path"` - Name string `json:"name"` - Size int64 `json:"size"` - Extension string `json:"extension"` - ModTime time.Time `json:"modified"` - Mode os.FileMode `json:"mode"` - IsDir bool `json:"isDir"` - IsSymlink bool `json:"isSymlink"` - Type string `json:"type"` - Subtitles []string `json:"subtitles,omitempty"` - Content string `json:"content,omitempty"` - Checksums map[string]string `json:"checksums,omitempty"` - Token string `json:"token,omitempty"` + Fs afero.Fs `json:"-"` + Path string `json:"path"` + Name string `json:"name"` + Size int64 `json:"size"` + Extension string `json:"extension"` + ModTime time.Time `json:"modified"` + Mode os.FileMode `json:"mode"` + IsDir bool `json:"isDir"` + IsSymlink bool `json:"isSymlink"` + Type string `json:"type"` + Subtitles []string `json:"subtitles,omitempty"` + Content string `json:"content,omitempty"` + Checksums map[string]string `json:"checksums,omitempty"` + Token string `json:"token,omitempty"` + DiskUsedPercent string `json:"diskUsedPercent"` + FreeDiskSpace string `json:"freeDiskSpace"` + TotalDiskSpace string `json:"totalDiskSpace"` } // FileOptions are the options when getting a file info. diff --git a/frontend/package.json b/frontend/package.json index bdf17bc9..eec96ba2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", - "build": "find ./dist -maxdepth 1 -mindepth 1 ! -name '.gitignore' -exec rm -r {} + && vue-cli-service build --no-clean", + "build": "vue-cli-service build --no-clean", "lint": "npx vue-cli-service lint --no-fix", "fix": "npx vue-cli-service lint", "watch": "find ./dist -maxdepth 1 -mindepth 1 ! -name '.gitignore' -exec rm -r {} + && vue-cli-service build --watch --no-clean" diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index 2986b6c7..36768b54 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -44,6 +44,10 @@ {{ $t("sidebar.settings") }} +
+ {{ req.freeDiskSpace }} free of {{ req.totalDiskSpace }} +
+