From c75553c191af740b1480cc2b415f0d9f9af7621f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rk=20S=C3=A1gi-Kaz=C3=A1r?= Date: Wed, 26 Mar 2025 07:24:42 +0100 Subject: [PATCH] docs: update upgrade guide with more details about mapstructure --- UPGRADE.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/UPGRADE.md b/UPGRADE.md index 17305cf..a33c965 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -85,14 +85,24 @@ v := viper.NewWithOptions( ### BREAKING: "github.com/mitchellh/mapstructure" depedency replaced -`mapstructure` package import has changed ([#1723](https://github.com/spf13/viper/pull/1723)) and code like take does not compile anymore +The original [mapstructure](https://github.com/mitchellh/mapstructure) has been [archived](https://github.com/mitchellh/mapstructure/issues/349) and was replaced with a [fork](https://github.com/go-viper/mapstructure) maintained by Viper ([#1723](https://github.com/spf13/viper/pull/1723)). + +As a result, the package import path needs to be changed in cases where `mapstructure` is directly referenced in your code. + +For example, when providing a custom decoder config: + ```go err := viper.Unmarshal(&appConfig, func(config *mapstructure.DecoderConfig) { config.TagName = "yaml" }) ``` -To fix this issue, replace all instances of imports [`"github.com/mitchellh/mapstructure"`](https://github.com/mitchellh/mapstructure) with [`"github.com/go-viper/mapstructure/v2"`](https://github.com/go-viper/mapstructure/). +The change is fairly straightforward, just replace all occurrences of the import path `github.com/mitchellh/mapstructure` with `github.com/go-viper/mapstructure/v2`: + +```diff +- import "github.com/mitchellh/mapstructure" ++ import "github.com/go-viper/mapstructure/v2" +``` ### BREAKING: HCL, Java properties, INI removed from core