{"id":23246284,"url":"https://github.com/wanmail/viper-vault-injector","last_synced_at":"2025-04-06T00:21:22.487Z","repository":{"id":185750416,"uuid":"671374393","full_name":"wanmail/viper-vault-injector","owner":"wanmail","description":"a package help you inject vault secret in viper config automatically","archived":false,"fork":false,"pushed_at":"2023-08-03T03:12:44.000Z","size":22,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-12T06:30:52.500Z","etag":null,"topics":["hashicorp-vault","mapstructure","vault","viper"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wanmail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-27T07:12:25.000Z","updated_at":"2024-04-24T03:33:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"6e582555-049c-4aa5-a776-a51f1384f41b","html_url":"https://github.com/wanmail/viper-vault-injector","commit_stats":null,"previous_names":["wanmail/viper-vault-injector"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanmail%2Fviper-vault-injector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanmail%2Fviper-vault-injector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanmail%2Fviper-vault-injector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanmail%2Fviper-vault-injector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wanmail","download_url":"https://codeload.github.com/wanmail/viper-vault-injector/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247417555,"owners_count":20935669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hashicorp-vault","mapstructure","vault","viper"],"created_at":"2024-12-19T07:13:55.586Z","updated_at":"2025-04-06T00:21:22.465Z","avatar_url":"https://github.com/wanmail.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vipervaultinjector\r\n\r\nPackage vipervaultinjector is a package help you inject vault secret in viper config automatically.\r\n\r\nIt will replace the secret url with the secret vaule in vault automatically, when you unmarshal the map to the struct.\r\n\r\nSo it can be used anywhere that uses mapstructure for unmarshal, not just viper.\r\n\r\n## Examples\r\n\r\n### StringToVaultSecretHookFunc\r\n\r\nStringToVaultSecretHookFunc Hook function for convert vault url string to vault secret.\r\n\r\nFor example, set {vault://vault.example/_/test/foo/password1} in vault string, and it will replace it to password1 value in vault when unmarshalled by mapstructure\r\n\r\n```golang\r\n\r\nclient, err := initClient()\r\nif err != nil {\r\n    log.Fatal(err)\r\n}\r\n\r\nerr = setupSecret(client)\r\nif err != nil {\r\n    log.Fatal(err)\r\n}\r\ndefer teardownSecret(client)\r\n\r\nviper.SetConfigType(\"yaml\") // or viper.SetConfigType(\"YAML\")\r\n\r\ntype DBExample struct {\r\n    Address  string `mapstructure:\"address\"`\r\n    Database string `mapstructure:\"database\"`\r\n    Username string `mapstructure:\"username\"`\r\n    Password string `mapstructure:\"password\"`\r\n}\r\n\r\n// any approach to require this configuration into your program.\r\nvar yamlExample = []byte(`\r\n        address: 127.0.0.1\r\n        database: example\r\n        username: root\r\n        password: {vault://vault.org/_/test/foo/password1}\r\n        `)\r\n\r\nerr = viper.ReadConfig(bytes.NewBuffer(yamlExample))\r\nif err != nil {\r\n    log.Fatal(err)\r\n}\r\n\r\nvar db DBExample\r\nerr = viper.Unmarshal(\u0026db, viper.DecodeHook(vipervaultinjector.StringToVaultSecretHookFunc(client)))\r\nif err != nil {\r\n    log.Fatal(err)\r\n}\r\n\r\nif db.Password != value1 {\r\n    log.Fatalf(\"value1[%s] incorrect\", db.Password)\r\n}\r\n\r\n```\r\n\r\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwanmail%2Fviper-vault-injector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwanmail%2Fviper-vault-injector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwanmail%2Fviper-vault-injector/lists"}