github.com/hashicorp/packer@v1.14.3/command/flag-kv/flag.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package kvflag
     5  
     6  import (
     7  	"fmt"
     8  	"strings"
     9  )
    10  
    11  // Flag is a flag.Value implementation for parsing user variables
    12  // from the command-line in the format of '-var key=value'.
    13  type Flag map[string]string
    14  
    15  func (v *Flag) String() string {
    16  	return ""
    17  }
    18  
    19  func (v *Flag) Set(raw string) error {
    20  	idx := strings.Index(raw, "=")
    21  	if idx == -1 {
    22  		return fmt.Errorf("No '=' value in arg: %s", raw)
    23  	}
    24  
    25  	if *v == nil {
    26  		*v = make(map[string]string)
    27  	}
    28  
    29  	key, value := raw[0:idx], raw[idx+1:]
    30  	(*v)[key] = value
    31  	return nil
    32  }