mirror of
https://github.com/GLEGram/GLEGram-iOS.git
synced 2026-04-23 19:36:26 +02:00
4647310322
Based on Swiftgram 12.5 (Telegram iOS 12.5). All GLEGram features ported and organized in GLEGram/ folder. Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass, Font Replacement, Fake Profile, Chat Export, Plugin System, and more. See CHANGELOG_12.5.md for full details.
119 lines
4.1 KiB
Swift
119 lines
4.1 KiB
Swift
import Foundation
|
|
import JSONUtilities
|
|
|
|
public struct BuildScript: Equatable {
|
|
public static let runOnlyWhenInstallingDefault = false
|
|
public static let showEnvVarsDefault = true
|
|
public static let basedOnDependencyAnalysisDefault = true
|
|
|
|
public var script: ScriptType
|
|
public var name: String?
|
|
public var shell: String?
|
|
public var inputFiles: [String]
|
|
public var outputFiles: [String]
|
|
public var inputFileLists: [String]
|
|
public var outputFileLists: [String]
|
|
public var runOnlyWhenInstalling: Bool
|
|
public let showEnvVars: Bool
|
|
public let basedOnDependencyAnalysis: Bool
|
|
public let discoveredDependencyFile: String?
|
|
|
|
public enum ScriptType: Equatable {
|
|
case path(String)
|
|
case script(String)
|
|
}
|
|
|
|
public init(
|
|
script: ScriptType,
|
|
name: String? = nil,
|
|
inputFiles: [String] = [],
|
|
outputFiles: [String] = [],
|
|
inputFileLists: [String] = [],
|
|
outputFileLists: [String] = [],
|
|
shell: String? = nil,
|
|
runOnlyWhenInstalling: Bool = runOnlyWhenInstallingDefault,
|
|
showEnvVars: Bool = showEnvVarsDefault,
|
|
basedOnDependencyAnalysis: Bool = basedOnDependencyAnalysisDefault,
|
|
discoveredDependencyFile: String? = nil
|
|
) {
|
|
self.script = script
|
|
self.name = name
|
|
self.inputFiles = inputFiles
|
|
self.outputFiles = outputFiles
|
|
self.inputFileLists = inputFileLists
|
|
self.outputFileLists = outputFileLists
|
|
self.shell = shell
|
|
self.runOnlyWhenInstalling = runOnlyWhenInstalling
|
|
self.showEnvVars = showEnvVars
|
|
self.basedOnDependencyAnalysis = basedOnDependencyAnalysis
|
|
self.discoveredDependencyFile = discoveredDependencyFile
|
|
}
|
|
}
|
|
|
|
extension BuildScript: JSONObjectConvertible {
|
|
|
|
public init(jsonDictionary: JSONDictionary) throws {
|
|
name = jsonDictionary.json(atKeyPath: "name")
|
|
inputFiles = jsonDictionary.json(atKeyPath: "inputFiles") ?? []
|
|
outputFiles = jsonDictionary.json(atKeyPath: "outputFiles") ?? []
|
|
inputFileLists = jsonDictionary.json(atKeyPath: "inputFileLists") ?? []
|
|
outputFileLists = jsonDictionary.json(atKeyPath: "outputFileLists") ?? []
|
|
|
|
if let string: String = jsonDictionary.json(atKeyPath: "script") {
|
|
script = .script(string)
|
|
} else {
|
|
let path: String = try jsonDictionary.json(atKeyPath: "path")
|
|
script = .path(path)
|
|
}
|
|
shell = jsonDictionary.json(atKeyPath: "shell")
|
|
runOnlyWhenInstalling = jsonDictionary.json(atKeyPath: "runOnlyWhenInstalling") ?? BuildScript.runOnlyWhenInstallingDefault
|
|
showEnvVars = jsonDictionary.json(atKeyPath: "showEnvVars") ?? BuildScript.showEnvVarsDefault
|
|
basedOnDependencyAnalysis = jsonDictionary.json(atKeyPath: "basedOnDependencyAnalysis") ?? BuildScript.basedOnDependencyAnalysisDefault
|
|
discoveredDependencyFile = jsonDictionary.json(atKeyPath: "discoveredDependencyFile")
|
|
}
|
|
}
|
|
|
|
extension BuildScript: JSONEncodable {
|
|
public func toJSONValue() -> Any {
|
|
var dict: [String: Any?] = [
|
|
"inputFiles": inputFiles,
|
|
"inputFileLists": inputFileLists,
|
|
"outputFiles": outputFiles,
|
|
"outputFileLists": outputFileLists,
|
|
"runOnlyWhenInstalling": runOnlyWhenInstalling,
|
|
"name": name,
|
|
"shell": shell,
|
|
]
|
|
|
|
if showEnvVars != BuildScript.showEnvVarsDefault {
|
|
dict["showEnvVars"] = showEnvVars
|
|
}
|
|
|
|
if basedOnDependencyAnalysis != BuildScript.basedOnDependencyAnalysisDefault {
|
|
dict["basedOnDependencyAnalysis"] = basedOnDependencyAnalysis
|
|
}
|
|
|
|
switch script {
|
|
case .path(let string):
|
|
dict["path"] = string
|
|
case .script(let string):
|
|
dict["script"] = string
|
|
}
|
|
|
|
if let discoveredDependencyFile = discoveredDependencyFile {
|
|
dict["discoveredDependencyFile"] = discoveredDependencyFile
|
|
}
|
|
|
|
return dict
|
|
}
|
|
}
|
|
|
|
extension BuildScript: PathContainer {
|
|
|
|
static var pathProperties: [PathProperty] {
|
|
[
|
|
.string("path"),
|
|
]
|
|
}
|
|
}
|