From 847d87078291d337f5675df616851fc393a3608b Mon Sep 17 00:00:00 2001 From: Laurynas Gadliauskas Date: Fri, 28 May 2021 15:11:43 +0300 Subject: [PATCH] feat: add hidden files flag (#2) --- .gitignore | 1 + Makefile | 7 +++++- cmd/config_set.go | 2 ++ cmd/root.go | 5 ++++ cmd/utils.go | 14 +++++++++++ files/listing.go | 10 ++++++++ frontend/src/components/prompts/Archive.vue | 5 ++++ frontend/src/components/prompts/Unarchive.vue | 5 ++++ frontend/src/views/settings/Profile.vue | 8 ------ http/resource.go | 4 +++ settings/settings.go | 25 ++++++++++--------- 11 files changed, 65 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index 0e438fe260..e9c56fc4f2 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,5 @@ yarn-error.log* *.sln *.sw* bin/ +dist/ build/ diff --git a/Makefile b/Makefile index 1feaeb35f2..9977f47f02 100644 --- a/Makefile +++ b/Makefile @@ -91,4 +91,9 @@ bump-version: | ; $(info $(M) creating a new releaseā€¦) ## help: Show this help .PHONY: help help: - @sed -n 's/^## //p' $(MAKEFILE_LIST) | column -t -s ':' | sed -e 's/^/ /' | sort \ No newline at end of file + @sed -n 's/^## //p' $(MAKEFILE_LIST) | column -t -s ':' | sed -e 's/^/ /' | sort + +.PHONY: build-release-bin +build-release-bin: + GO111MODULE=on GOOS=linux GOARCH=amd64 $(GO) build -ldflags '$(LDFLAGS)' -o bin/filebrowser-$(VERSION) + tar -C bin -czf "dist/filebrowser-$(VERSION).tar.gz" "filebrowser-$(VERSION)" diff --git a/cmd/config_set.go b/cmd/config_set.go index e959bc97cd..4f81863cff 100644 --- a/cmd/config_set.go +++ b/cmd/config_set.go @@ -43,6 +43,8 @@ you want to change. Other options will remain unchanged.`, ser.Port = mustGetString(flags, flag.Name) case "log": ser.Log = mustGetString(flags, flag.Name) + case "hidden-files": + ser.HiddenFiles = convertFileStrToFileMap(mustGetString(flags, flag.Name)) case "signup": set.Signup = mustGetBool(flags, flag.Name) case "auth.method": diff --git a/cmd/root.go b/cmd/root.go index 7810f37db6..1d586062a6 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -69,6 +69,7 @@ func addServerFlags(flags *pflag.FlagSet) { flags.Bool("disable-preview-resize", false, "disable resize of image previews") flags.Bool("disable-exec", false, "disables Command Runner feature") flags.Bool("disable-type-detection-by-header", false, "disables type detection by reading file headers") + flags.String("hidden-files", "", "comma separated list of files that should be hidden") } var rootCmd = &cobra.Command{ @@ -260,6 +261,10 @@ func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server { _, disableExec := getParamB(flags, "disable-exec") server.EnableExec = !disableExec + if val, set := getParamB(flags, "hidden-files"); set { + server.HiddenFiles = convertFileStrToFileMap(val) + } + return server } diff --git a/cmd/utils.go b/cmd/utils.go index ad27cc0341..685cb7cfc9 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -191,3 +191,17 @@ func convertCmdStrToCmdArray(cmd string) []string { } return cmdArray } + +// convertFileStrToFileMap parses a comma-separated file list string +// into a map where each key is a separate file +func convertFileStrToFileMap(files string) map[string]struct{} { + fileMap := make(map[string]struct{}) + files = strings.TrimSpace(files) + if files != "" { + fileParts := strings.Split(files, ",") + for _, file := range fileParts { + fileMap[file] = struct{}{} + } + } + return fileMap +} diff --git a/files/listing.go b/files/listing.go index 448d7e9c79..a511696c57 100644 --- a/files/listing.go +++ b/files/listing.go @@ -108,3 +108,13 @@ func (l byModified) Less(i, j int) bool { iModified, jModified := l.Items[i].ModTime, l.Items[j].ModTime return iModified.Sub(jModified) < 0 } + +func (l *Listing) FilterItems(fn func(fi *FileInfo) bool) { + var filtered []*FileInfo + for _, item := range l.Items { + if fn(item) { + filtered = append(filtered, item) + } + } + l.Items = filtered +} diff --git a/frontend/src/components/prompts/Archive.vue b/frontend/src/components/prompts/Archive.vue index 53e9ae9b55..9a875520de 100644 --- a/frontend/src/components/prompts/Archive.vue +++ b/frontend/src/components/prompts/Archive.vue @@ -16,6 +16,7 @@ /> @@ -45,6 +46,7 @@ export default { name: "rename", data: function () { return { + loading: false, name: "", }; }, @@ -63,11 +65,14 @@ export default { dst = dst.replace("//", "/"); try { + this.loading = true; await api.unarchive(item.url, dst, false); this.$store.commit("setReload", true); } catch (e) { this.$showError(e); + } finally { + this.loading = true; } this.$store.commit("closeHovers"); diff --git a/frontend/src/views/settings/Profile.vue b/frontend/src/views/settings/Profile.vue index 3c57791ed8..de1778c99f 100644 --- a/frontend/src/views/settings/Profile.vue +++ b/frontend/src/views/settings/Profile.vue @@ -7,14 +7,6 @@
-

- - {{ $t("settings.hideDotfiles") }} -

-

- - {{ $t("settings.singleClick") }} -

{{ $t("settings.language") }}