// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package main

import (
	"os"
)

func processGomaCccFlags(allowGoma bool, builder *commandBuilder) (gomaUsed bool, err error) {
	gomaPath := ""
	nextArgIsGomaPath := false
	builder.transformArgs(func(arg builderArg) string {
		if arg.fromUser {
			if arg.value == "--gomacc-path" {
				nextArgIsGomaPath = true
				return ""
			}
			if nextArgIsGomaPath {
				gomaPath = arg.value
				nextArgIsGomaPath = false
				return ""
			}
		}
		return arg.value
	})
	if nextArgIsGomaPath {
		return false, newUserErrorf("--gomacc-path given without value")
	}
	if gomaPath == "" {
		gomaPath, _ = builder.env.getenv("GOMACC_PATH")
	}
	if allowGoma && gomaPath != "" {
		if _, err := os.Lstat(gomaPath); err == nil {
			builder.wrapPath(gomaPath)
			return true, nil
		}
	}
	return false, nil
}
