in commands/action.go [552:593]
func augmentWebSecureArg(cmd *cobra.Command, args []string, originalAction *whisk.Action, action *whisk.Action, existingAction *whisk.Action) (*whisk.Action, error) {
preserveAnnotations := action.Annotations == nil
var augmentedAction *whisk.Action = new(whisk.Action)
*augmentedAction = *action
disableWebAction := strings.ToLower(Flags.action.web) == "false" || strings.ToLower(Flags.action.web) == "no"
isWebSecureFlagValidToUse := action.WebAction() || (existingAction != nil && existingAction.WebAction() && !disableWebAction)
// Process the --web-secure flag when set
if cmd.LocalFlags().Changed(WEB_SECURE_FLAG) {
// The --web-secure option is only valid when:
// 1. action --web is set to either true or raw (i.e. web-export annotation is true)
// -OR-
// 2. existing action web-export annotation is true && action --web is not false/no
whisk.Debug(whisk.DbgInfo, "disableWebAction: %v isWebSecureFlagValidToUse: %v\n", disableWebAction, isWebSecureFlagValidToUse)
if !isWebSecureFlagValidToUse {
return nil, webSecureUsageError()
}
// Carry forward some or all of the existing action's annotations
// all -> if original command line had at least one annotation specified
// some -> if original command line had NO annotations, carry forward web/websecure annotation values
if existingAction != nil {
if preserveAnnotations {
augmentedAction.Annotations = action.Annotations.AppendKeyValueArr(existingAction.Annotations)
} else {
augmentedAction.Annotations = action.Annotations.AppendKeyValueArr(getWebActionAnnotations(existingAction))
augmentedAction.Annotations = augmentedAction.Annotations.AppendKeyValueArr(getWebSecureAnnotations(existingAction))
}
}
// when "--web-secure false", need to delete require-whisk-auth annotation
secureSecret := webSecureSecret(Flags.action.websecure) // will be false when "--web-secure false"
existingSecret := augmentedAction.Annotations.GetValue(WEB_SECURE_ANNOT)
_, disableSecurity := secureSecret.(bool)
if existingSecret != nil && disableSecurity {
augmentedAction.DelAnnotations = []string{"require-whisk-auth"}
}
augmentedAction.Annotations = updateWebSecureAnnotation(Flags.action.websecure, augmentedAction.Annotations)
}
whisk.Debug(whisk.DbgInfo, "augmentWebSecureArg: Augmented action struct: %#v\n", augmentedAction)
return augmentedAction, nil
}