func AppDefaultCredentials()

in internal/google/adc.go [119:155]


func AppDefaultCredentials() (string, error) {
	adcPath, err := exec.Command(
		"gcloud", "info", "--format", "value(config.paths.global_config_dir)",
	).Output()

	filePath := strings.Trim(string(adcPath), "\n")
	filePath += "/" + adcJsonName

	if err != nil {
		return "", err
	}

	email, err := findToken(filePath)

	if err != nil {
		fmt.Println("\nNo default credentials found - authorizing with Google")
		authCmd := exec.Command(
			"gcloud", "auth", "application-default", "login",
			"--no-launch-browser",
		)
		authCmd.Stdout = os.Stdout
		authCmd.Stderr = os.Stderr
		authCmd.Stdin = os.Stdin

		if err := authCmd.Run(); err != nil {
			fmt.Printf("Error starting gcloud command: %v\n", err)
			return "", err
		}

		// need to refresh adc context to get email now that we're auth'd
		email, _ = findToken(filePath)
	} else {
		fmt.Println("\nFound default Google credentials - skipping")
	}

	return email, nil
}