/* 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 .
*/
#pragma once
#include
/**
* \brief The Config class holds all the build-time information passed from the
* build system.
*/
class Config
{
public:
Config();
QString MESHMC_NAME;
QString MESHMC_DISPLAYNAME;
QString MESHMC_COPYRIGHT;
QString MESHMC_DOMAIN;
QString MESHMC_CONFIGFILE;
QString MESHMC_GIT;
/// The major version number.
int VERSION_MAJOR;
/// The minor version number.
int VERSION_MINOR;
/// The hotfix number.
int VERSION_HOTFIX;
/// The build number.
int VERSION_BUILD;
/**
* The version channel
* This is used by the updater to determine what channel the current version
* came from.
*/
QString VERSION_CHANNEL;
bool UPDATER_ENABLED = false;
/// A short string identifying this build's platform. For example, "lin64"
/// or "win32".
QString BUILD_PLATFORM;
/// URL for the updater's channel (legacy, unused)
QString UPDATER_BASE;
/// RSS feed URL for the new updater (projt: namespace).
QString UPDATER_FEED_URL;
/// GitHub releases API URL for update verification.
QString UPDATER_GITHUB_API_URL;
/// A string containing the build timestamp
QString BUILD_DATE;
/// User-Agent to use.
QString USER_AGENT;
/// User-Agent to use for uncached requests.
QString USER_AGENT_UNCACHED;
/// A short string identifying this build's valid artifacts int he updater.
/// For example, "lin64" or "win32".
QString BUILD_ARTIFACT;
/// Compiler name
QString COMPILER_NAME;
/// Compiler version
QString COMPILER_VERSION;
/// Target system name (e.g. "Linux", "Windows")
QString COMPILER_TARGET_SYSTEM;
/// Target system version
QString COMPILER_TARGET_SYSTEM_VERSION;
/// Target system processor (e.g. "x86_64")
QString COMPILER_TARGET_SYSTEM_PROCESSOR;
/// Google analytics ID
QString ANALYTICS_ID;
/// URL for notifications
QString NOTIFICATION_URL;
/// Used for matching notifications
QString FULL_VERSION_STR;
/// The git commit hash of this build
QString GIT_COMMIT;
/// The git refspec of this build
QString GIT_REFSPEC;
/// The exact git tag of this build, if any
QString GIT_TAG;
/// This is printed on start to standard output
QString VERSION_STR;
/**
* This is used to fetch the news RSS feed.
* It defaults in CMakeLists.txt to "https://projecttick.org/rss.xml"
*/
QString NEWS_RSS_URL;
QString MSAClientID;
/**
* API key you can get from paste.ee when you register an account
*/
QString PASTE_EE_KEY;
/**
* Client ID you can get from Imgur when you register an application
*/
QString IMGUR_CLIENT_ID;
/**
* Metadata repository URL prefix
*/
QString META_URL;
/**
* API key for the CurseForge API
*/
QString CURSEFORGE_API_KEY;
QString BUG_TRACKER_URL;
QString DISCORD_URL;
QString SUBREDDIT_URL;
QString RESOURCE_BASE = "https://resources.download.minecraft.net/";
QString LIBRARY_BASE = "https://libraries.minecraft.net/";
QString IMGUR_BASE_URL = "https://api.imgur.com/3/";
QString FMLLIBS_BASE_URL = "https://files.projecttick.org/fmllibs/";
QString TRANSLATIONS_BASE_URL = "https://i18n.projecttick.org/";
QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/";
QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/";
QString ATL_DOWNLOAD_SERVER_URL =
"https://download.nodecdn.net/containers/atl/";
/**
* \brief Converts the Version to a string.
* \return The version number in string format (major.minor.revision.build).
*/
QString printableVersionString() const;
/**
* \brief Compiler ID String
* \return a string of the form "Name - Version" of just "Name" if the
* version is empty
*/
QString compilerID() const;
/**
* \brief System ID String
* \return a string of the form "OS Verison Processor"
*/
QString systemID() const;
};
extern const Config BuildConfig;