From 30f43a245b76d43bcfb3ec3f4c7d73c953c325c5 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Sun, 18 Aug 2024 11:27:08 +0200 Subject: [PATCH] Fix loading customCommands from per-repo config file Any newly loaded custom command coming from the per-repo config file should add to the global ones (or override an existing one in the global one), rather than replace all global ones. We can achieve this by simply prepending the newly loaded commands to the existing ones. We don't have to take care of removing duplicate key assignments; it is already possible to add two custom commands with the same key to the global config file, the first one wins. --- pkg/config/app_config.go | 4 ++++ .../tests/config/custom_commands_in_per_repo_config.go | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/config/app_config.go b/pkg/config/app_config.go index 936dcb64a..d68620867 100644 --- a/pkg/config/app_config.go +++ b/pkg/config/app_config.go @@ -196,10 +196,14 @@ func loadUserConfig(configFiles []*ConfigFile, base *UserConfig) (*UserConfig, e return nil, err } + existingCustomCommands := base.CustomCommands + if err := yaml.Unmarshal(content, base); err != nil { return nil, fmt.Errorf("The config at `%s` couldn't be parsed, please inspect it before opening up an issue.\n%w", path, err) } + base.CustomCommands = append(base.CustomCommands, existingCustomCommands...) + if err := base.Validate(); err != nil { return nil, fmt.Errorf("The config at `%s` has a validation error.\n%w", path, err) } diff --git a/pkg/integration/tests/config/custom_commands_in_per_repo_config.go b/pkg/integration/tests/config/custom_commands_in_per_repo_config.go index 4cff322ef..81f8724aa 100644 --- a/pkg/integration/tests/config/custom_commands_in_per_repo_config.go +++ b/pkg/integration/tests/config/custom_commands_in_per_repo_config.go @@ -49,10 +49,7 @@ customCommands: t.Views().Status().Content(Contains("other → master")) t.GlobalPress("X") - /* EXPECTED: t.FileSystem().FileContent("../other/file.txt", Equals("global X")) - ACTUAL: */ - t.FileSystem().PathNotPresent("../other/file.txt") t.GlobalPress("Y") t.FileSystem().FileContent("../other/file.txt", Equals("local Y"))