// Copyright 2018 The Wuffs Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package wuffsroot

import (
	"errors"
	"go/build"
	"os"
	"path/filepath"
	"sync"
)

var cache struct {
	mu    sync.Mutex
	value string
}

func Value() (string, error) {
	cache.mu.Lock()
	value := cache.value
	cache.mu.Unlock()

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

	// TODO: look for a WUFFSROOT environment variable? Also check that
	// wuffs-root-directory.txt exists?
	for _, p := range filepath.SplitList(build.Default.GOPATH) {
		p = filepath.Join(p, "src", "github.com", "google", "wuffs")
		if o, err := os.Stat(p); err == nil && o.IsDir() {
			cache.mu.Lock()
			cache.value = p
			cache.mu.Unlock()

			return p, nil
		}
	}
	return "", errors.New("could not find Wuffs root directory")
}
