summaryrefslogtreecommitdiff
path: root/meshmc/buildconfig/BuildConfig.cpp.in
blob: 9af27350dfe2e6b9281178e913afe12650c21e33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* SPDX-FileCopyrightText: 2026 Project Tick
 * SPDX-FileContributor: Project Tick
 * SPDX-License-Identifier: GPL-3.0-or-later
 *
 *   MeshMC - A Custom Launcher for Minecraft
 *   Copyright (C) 2026 Project Tick
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#include "BuildConfig.h"
#include <QObject>

const Config BuildConfig;

Config::Config()
{
	// Name and copyright
	MESHMC_NAME = "@MeshMC_Name@";
	MESHMC_DISPLAYNAME = "@MeshMC_DisplayName@";
	MESHMC_COPYRIGHT = "@MeshMC_Copyright@";
	MESHMC_DOMAIN = "@MeshMC_Domain@";
	MESHMC_CONFIGFILE = "@MeshMC_ConfigFile@";
	MESHMC_GIT = "@MeshMC_Git@";

	USER_AGENT = "@MeshMC_UserAgent@";
	USER_AGENT_UNCACHED = USER_AGENT + " (Uncached)";

	// Version information
	VERSION_MAJOR = @MeshMC_VERSION_MAJOR@;
	VERSION_MINOR = @MeshMC_VERSION_MINOR@;
	VERSION_HOTFIX = @MeshMC_VERSION_HOTFIX@;
	VERSION_BUILD = @MeshMC_VERSION_BUILD@;

	BUILD_PLATFORM = "@MeshMC_BUILD_PLATFORM@";
	BUILD_ARTIFACT = "@MeshMC_BUILD_ARTIFACT@";
	BUILD_DATE = "@MeshMC_BUILD_TIMESTAMP@";
	COMPILER_NAME = "@MeshMC_COMPILER_NAME@";
	COMPILER_VERSION = "@MeshMC_COMPILER_VERSION@";
	COMPILER_TARGET_SYSTEM = "@MeshMC_COMPILER_TARGET_SYSTEM@";
	COMPILER_TARGET_SYSTEM_VERSION = "@MeshMC_COMPILER_TARGET_SYSTEM_VERSION@";
	COMPILER_TARGET_SYSTEM_PROCESSOR = "@MeshMC_COMPILER_TARGET_PROCESSOR@";
	UPDATER_BASE = "@MeshMC_UPDATER_BASE@";
	UPDATER_FEED_URL = "@MeshMC_UPDATER_FEED_URL@";
	UPDATER_GITHUB_API_URL = "@MeshMC_UPDATER_GITHUB_API_URL@";
	ANALYTICS_ID = "@MeshMC_ANALYTICS_ID@";
	NOTIFICATION_URL = "@MeshMC_NOTIFICATION_URL@";
	FULL_VERSION_STR =
		"@MeshMC_VERSION_MAJOR@.@MeshMC_VERSION_MINOR@.@MeshMC_VERSION_BUILD@";

	GIT_COMMIT = "@MeshMC_GIT_COMMIT@";
	GIT_REFSPEC = "@MeshMC_GIT_REFSPEC@";
	GIT_TAG = "@MeshMC_GIT_TAG@";

	// New updater: enabled when both feed and GitHub API URLs are configured
	// and a build artifact name is provided for platform-specific asset
	// matching.
	if (!UPDATER_FEED_URL.isEmpty() && !UPDATER_GITHUB_API_URL.isEmpty() &&
		!BUILD_ARTIFACT.isEmpty()) {
		UPDATER_ENABLED = true;
	}

	// VERSION_CHANNEL is still populated from the git branch for informational
	// use.
	if (GIT_REFSPEC.startsWith("refs/heads/")) {
		VERSION_CHANNEL = GIT_REFSPEC;
		VERSION_CHANNEL.remove("refs/heads/");
	} else {
		VERSION_CHANNEL = QObject::tr("custom");
	}

	VERSION_STR = "@MeshMC_VERSION_STRING@";
	MSAClientID = "@MeshMC_MICROSOFT_CLIENT_ID@";
	NEWS_RSS_URL = "@MeshMC_NEWS_RSS_URL@";
	PASTE_EE_KEY = "@MeshMC_PASTE_EE_API_KEY@";
	IMGUR_CLIENT_ID = "@MeshMC_IMGUR_CLIENT_ID@";
	META_URL = "@MeshMC_META_URL@";
	CURSEFORGE_API_KEY = "@MeshMC_CURSEFORGE_API_KEY@";

	BUG_TRACKER_URL = "@MeshMC_BUG_TRACKER_URL@";
	DISCORD_URL = "@MeshMC_DISCORD_URL@";
	SUBREDDIT_URL = "@MeshMC_SUBREDDIT_URL@";
}

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

	if (!GIT_TAG.isEmpty() && !GIT_TAG.endsWith("-NOTFOUND")) {
		return vstr;
	}

	if (!GIT_COMMIT.isEmpty() && !GIT_COMMIT.endsWith("-NOTFOUND")) {
		vstr += "-r" + GIT_COMMIT.left(6);
	}

	return vstr;
}

QString Config::compilerID() const
{
	if (COMPILER_VERSION.isEmpty())
		return COMPILER_NAME;
	return QStringLiteral("%1 - %2").arg(COMPILER_NAME).arg(COMPILER_VERSION);
}

QString Config::systemID() const
{
	return QStringLiteral("%1 %2 %3")
		.arg(COMPILER_TARGET_SYSTEM, COMPILER_TARGET_SYSTEM_VERSION,
			 COMPILER_TARGET_SYSTEM_PROCESSOR);
}