github.com/s7techlab/cckit@v0.10.5/gateway/protoc-gen-cc-gateway/generator/opts.go (about)

     1  package generator
     2  
     3  import (
     4  	"strings"
     5  )
     6  
     7  const (
     8  	ParamPaths                        = `paths`
     9  	ParamPathsSourceRelative          = `source_relative`
    10  	ParamEmbedSwagger                 = `embed_swagger`
    11  	ParamChaincodeMethodServicePrefix = `service_name_method_prefix`
    12  	ParamServiceChaincodeResolver     = `service_resolver`
    13  )
    14  
    15  // Opts by default all opts are disabled
    16  type Opts struct {
    17  	PathsSourceRelative          bool
    18  	EmbedSwagger                 bool // generate var with embed annotation to include generated swagger fie
    19  	ChaincodeMethodServicePrefix bool // add prefix with service name to chaincode methdod
    20  	ServiceChaincodeResolver     bool
    21  }
    22  
    23  func isOptEnabled(paramValue string) bool {
    24  	if paramValue == `0` || paramValue == `false` {
    25  		return false
    26  	}
    27  
    28  	return true
    29  }
    30  
    31  func OptsFromParams(params string) Opts {
    32  	opts := Opts{}
    33  	for _, param := range strings.Split(params, ",") {
    34  		var value string
    35  		if i := strings.Index(param, "="); i >= 0 {
    36  			value = param[i+1:]
    37  			param = param[0:i]
    38  		}
    39  		switch param {
    40  		case ParamPaths:
    41  			switch value {
    42  			case ParamPathsSourceRelative:
    43  				opts.PathsSourceRelative = true
    44  			}
    45  
    46  		case ParamEmbedSwagger:
    47  			opts.EmbedSwagger = isOptEnabled(value)
    48  
    49  		case ParamChaincodeMethodServicePrefix:
    50  			opts.ChaincodeMethodServicePrefix = isOptEnabled(value)
    51  
    52  		case ParamServiceChaincodeResolver:
    53  			opts.ServiceChaincodeResolver = isOptEnabled(value)
    54  		}
    55  
    56  	}
    57  
    58  	return opts
    59  }