Introduce a build setting to detect Nightly builds. (#5852)

* Allow the AppIconBanner tool to be called with purely the build number.

And use that for the Element Pro Nightly.

* Use a build setting to determine Nightly builds.
This commit is contained in:
Doug
2026-07-09 13:56:26 +01:00
committed by GitHub
parent 5ba9296a65
commit 5915713a02
16 changed files with 43 additions and 16 deletions
@@ -40,11 +40,10 @@ nonisolated enum AppBuildType {
#if DEBUG
return .debug
#else
switch InfoPlistReader.main.baseBundleIdentifier {
case "io.element.elementx.nightly":
return .nightly
default:
return .release
if InfoPlistReader.main.isNightlyBuild {
.nightly
} else {
.release
}
#endif
}
+12 -1
View File
@@ -16,6 +16,7 @@ nonisolated struct InfoPlistReader {
static let bundleShortVersion = "CFBundleShortVersionString"
static let bundleDisplayName = "CFBundleDisplayName"
static let productionAppName = "productionAppName"
static let isNightlyBuild = "isNightlyBuild"
static let utExportedTypeDeclarationsKey = "UTExportedTypeDeclarations"
static let utTypeIdentifierKey = "UTTypeIdentifier"
static let utDescriptionKey = "UTTypeDescription"
@@ -93,6 +94,11 @@ nonisolated struct InfoPlistReader {
infoPlistValue(forKey: Keys.productionAppName)
}
/// Whether or not the build is from the Nightly stream.
var isNightlyBuild: Bool {
infoPlistValue(forKey: Keys.isNightlyBuild)
}
// MARK: - Custom App Scheme
var appScheme: String {
@@ -144,7 +150,7 @@ nonisolated struct InfoPlistReader {
@_disfavoredOverload // Make sure optional types default to the optional version below.
private func infoPlistValue<T>(forKey key: String) -> T {
guard let result = bundle.object(forInfoDictionaryKey: key) as? T else {
fatalError("Add \(key) into your target's Info.plst")
fatalError("Add \(key) into your target's Info.plist")
}
return result
}
@@ -153,6 +159,11 @@ nonisolated struct InfoPlistReader {
bundle.object(forInfoDictionaryKey: key) as? T
}
private func infoPlistValue(forKey key: String) -> Bool {
// Build setting values are stored as strings ("YES"/"NO")…
(infoPlistValue(forKey: key) as NSString).boolValue
}
private func customSchemeForName(_ name: String) -> String {
let urlTypes: [[String: Any]] = infoPlistValue(forKey: Keys.bundleURLTypes)
@@ -88,7 +88,7 @@ class BugReportService: NSObject, BugReportServiceProtocol {
params.append(contentsOf: defaultParams)
if InfoPlistReader.main.baseBundleIdentifier == "io.element.elementx.nightly" {
if AppBuildType.current == .nightly {
bugReport.githubLabels.append("Nightly")
}