fix: prompt login in red when bitwarden session is missing

This commit is contained in:
thibaud-lclr 2026-04-20 17:52:50 +02:00
parent 017005b0b1
commit ef22b1aa8a
2 changed files with 39 additions and 3 deletions

View file

@ -1596,6 +1596,11 @@ type Runtime struct {
SecretName string
}
const (
ansiRedColor = "\033[31m"
ansiResetColor = "\033[0m"
)
func Run(ctx context.Context, args []string, version string) error {
runtime, err := NewRuntime(version)
if err != nil {
@ -1917,9 +1922,7 @@ func (r Runtime) runUpdate(ctx context.Context, inv bootstrap.Invocation) error
func (r Runtime) openSecretStore() (secretstore.Store, error) {
policy := r.activeBackendPolicy()
if policy == secretstore.BackendBitwardenCLI {
if _, err := secretstore.EnsureBitwardenSessionEnv(secretstore.BitwardenSessionOptions{
ServiceName: r.BinaryName,
}); err != nil {
if err := r.ensureBitwardenSession(); err != nil {
return nil, err
}
}
@ -1936,6 +1939,37 @@ func (r Runtime) openSecretStore() (secretstore.Store, error) {
})
}
func (r Runtime) ensureBitwardenSession() error {
if hasBitwardenSessionInEnv() {
return nil
}
loaded, err := secretstore.EnsureBitwardenSessionEnv(secretstore.BitwardenSessionOptions{
ServiceName: r.BinaryName,
})
if err != nil {
return err
}
if loaded || hasBitwardenSessionInEnv() {
return nil
}
return errors.New(colorizeRed(fmt.Sprintf(
"Session Bitwarden introuvable. Lance %s login puis relance la commande.",
r.BinaryName,
)))
}
func hasBitwardenSessionInEnv() bool {
session, ok := os.LookupEnv("BW_SESSION")
return ok && strings.TrimSpace(session) != ""
}
func colorizeRed(message string) string {
return ansiRedColor + strings.TrimSpace(message) + ansiResetColor
}
func (r Runtime) activeBackendPolicy() secretstore.BackendPolicy {
policy := secretstore.BackendPolicy(strings.TrimSpace(r.Manifest.SecretStore.BackendPolicy))
if policy == "" {

View file

@ -68,6 +68,8 @@ func TestGenerateCreatesRecommendedSkeleton(t *testing.T) {
"config.NewStore[Profile]",
"secretstore.Open(secretstore.Options",
"secretstore.EnsureBitwardenSessionEnv",
"func (r Runtime) ensureBitwardenSession() error {",
"\\033[31m",
"secretstore.LoginBitwarden",
"update.Run",
"manifest.LoadDefaultOrEmbedded",