func SetProjectRoot(args []string) error {
	if ProjectRoot != "" {
		return setCurrentProjectEnvVariable()
	}
	value := ""
	if len(args) != 0 {
		value = args[0]
	}
	root, err := common.GetProjectRootFromSpecPath(value)
	if err != nil {
		return err
	}
	ProjectRoot = root
	return setCurrentProjectEnvVariable()
}
SetProjectRoot sets project root location in ENV.
package config
import (
	"os"
	"strconv"
	"strings"
	"time"
	"github.com/getgauge/common"
	logging "github.com/op/go-logging"
)
const (
	gaugeRepositoryURL      = "gauge_repository_url"
	runnerConnectionTimeout = "runner_connection_timeout"
	pluginConnectionTimeout = "plugin_connection_timeout"
	pluginKillTimeOut       = "plugin_kill_timeout"
	runnerRequestTimeout    = "runner_request_timeout"
	ideRequestTimeout       = "ide_request_timeout"
	checkUpdates            = "check_updates"
	allowInsecureDownload   = "allow_insecure_download"
	defaultRunnerConnectionTimeout = time.Second * 25
	defaultPluginConnectionTimeout = time.Second * 10
	defaultPluginKillTimeout       = time.Second * 4
	defaultRefactorTimeout         = time.Second * 10
	defaultRunnerRequestTimeout    = time.Second * 30
	defaultIdeRequestTimeout       = time.Second * 30
	LayoutForTimeStamp             = "Jan 2, 2006 at 3:04pm"
)
var APILog = logging.MustGetLogger("gauge-api")
var ProjectRoot string
func RunnerConnectionTimeout() time.Duration {
	intervalString := getFromConfig(runnerConnectionTimeout)
	return convertToTime(intervalString, defaultRunnerConnectionTimeout, runnerConnectionTimeout)
}
func PluginConnectionTimeout() time.Duration {
	intervalString := getFromConfig(pluginConnectionTimeout)
	return convertToTime(intervalString, defaultPluginConnectionTimeout, pluginConnectionTimeout)
}
func PluginKillTimeout() time.Duration {
	intervalString := getFromConfig(pluginKillTimeOut)
	return convertToTime(intervalString, defaultPluginKillTimeout, pluginKillTimeOut)
}
func CheckUpdates() bool {
	allow := getFromConfig(checkUpdates)
	return convertToBool(allow, checkUpdates, true)
}
func RefactorTimeout() time.Duration {
	return defaultRefactorTimeout
}
func RunnerRequestTimeout() time.Duration {
	intervalString := os.Getenv(runnerRequestTimeout)
	if intervalString == "" {
		intervalString = getFromConfig(runnerRequestTimeout)
	}
	return convertToTime(intervalString, defaultRunnerRequestTimeout, runnerRequestTimeout)
}
func IdeRequestTimeout() time.Duration {
	intervalString := os.Getenv(ideRequestTimeout)
	if intervalString == "" {
		intervalString = getFromConfig(ideRequestTimeout)
	}
	return convertToTime(intervalString, defaultIdeRequestTimeout, ideRequestTimeout)
}
func AllowInsecureDownload() bool {
	allow := getFromConfig(allowInsecureDownload)
	return convertToBool(allow, allowInsecureDownload, false)
}
func GaugeRepositoryUrl() string {
	return getFromConfig(gaugeRepositoryURL)
}