#include "BuildConfig.h"

Config BuildConfig;

Config::Config()
{
	// Version information
	VERSION_MAJOR =	@MultiMC_VERSION_MAJOR@;
	VERSION_MINOR = @MultiMC_VERSION_MINOR@;
	VERSION_HOTFIX = @MultiMC_VERSION_HOTFIX@;
	VERSION_BUILD = @MultiMC_VERSION_BUILD@;
	VERSION_TYPE = "@MultiMC_VERSION_TYPE@";

	if(VERSION_TYPE == "Release")
		versionTypeEnum = Release;
	else if(VERSION_TYPE == "ReleaseCandidate")
		versionTypeEnum = ReleaseCandidate;
	else if(VERSION_TYPE == "Development")
		versionTypeEnum = Development;
	else
		versionTypeEnum = Custom;
	VERSION_CHANNEL = "@MultiMC_VERSION_CHANNEL@";
	BUILD_PLATFORM = "@MultiMC_BUILD_PLATFORM@";
	CHANLIST_URL = "@MultiMC_CHANLIST_URL@";
	NOTIFICATION_URL = "@MultiMC_NOTIFICATION_URL@";
	FULL_VERSION_STR = "@MultiMC_VERSION_MAJOR@.@MultiMC_VERSION_MINOR@.@MultiMC_VERSION_BUILD@";

	UPDATER_DRY_RUN = @MultiMC_UPDATER_DRY_RUN_value@;
	UPDATER_FORCE_LOCAL = @MultiMC_UPDATER_FORCE_LOCAL_value@;

	GIT_COMMIT = "@MultiMC_GIT_COMMIT@";
	GIT_COMMIT_CSTR = "@MultiMC_GIT_COMMIT@";
	VERSION_STR = "@MultiMC_VERSION_STRING@";
	VERSION_CSTR = "@MultiMC_VERSION_STRING@";
	NEWS_RSS_URL = "@MultiMC_NEWS_RSS_URL@";
}

QString Config::versionTypeName() const
{
	switch (versionTypeEnum)
	{
		case Release:
			return "Stable Release";
		case ReleaseCandidate:
			return "Release Candidate";
		case Development:
			return "Development";
		case Custom:
		default:
			return "Custom";
	}
}

QString Config::printableVersionString() const
{
	QString vstr = QString("%1.%2").arg(QString::number(VERSION_MAJOR),	QString::number(VERSION_MINOR));

	if (VERSION_HOTFIX > 0) vstr += "." + QString::number(VERSION_HOTFIX);

	// If the build is a development build or release candidate, add that info to the end.
	if (versionTypeEnum == Development) vstr += "-dev" + QString::number(VERSION_BUILD);
	else if (versionTypeEnum == ReleaseCandidate) vstr += "-rc" + QString::number(VERSION_BUILD);

	return vstr;
}
