Adjust arguments for mac crafter
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 20 Jun 2024 06:58:14 +0000 (14:58 +0800)
committerClaudio Cambra <developer@claudiocambra.com>
Mon, 8 Jul 2024 07:41:45 +0000 (15:41 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
admin/osx/mac-crafter/Sources/main.swift

index 930ef076ec530552d3f79e1d05ac2225f17fcf1e..afe12cc4ac891a398d4454ab240073d489bbcafc 100644 (file)
@@ -24,14 +24,23 @@ struct MacCrafter: ParsableCommand {
         case failedEnumeration(String)
     }
 
-    @Argument var codeSignIdentity: String
-    @Argument var buildPath = FileManager.default.currentDirectoryPath
-    @Argument var brewInstallShUrl =
-        "https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
-    @Argument var craftMasterGitUrl =
-        "https://invent.kde.org/packaging/craftmaster.git"
-    @Argument var clientBlueprintsGitUrl =
-        "https://github.com/nextcloud/desktop-client-blueprints.git"
+    @Argument(help: "Path to the root directory of the Nextcloud Desktop Client git repository.")
+    var repoRootDir = "\(FileManager.default.currentDirectoryPath)/../../.."
+
+    @Option(name: [.short, .long], help: "Code signing identity for desktop client and libs.")
+    var codeSignIdentity: String?
+
+    @Option(name: [.short, .customLong("buildPath")], help: "Path for build files to be written.")
+    var buildPath = "\(FileManager.default.currentDirectoryPath)/build"
+
+    @Option(name: [.long], help: "Brew installation script URL.")
+    var brewInstallShUrl = "https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
+
+    @Option(name: [.long], help: "CraftMaster git url.")
+    var craftMasterGitUrl = "https://invent.kde.org/packaging/craftmaster.git"
+
+    @Option(name: [.long], help: "Nextcloud Desktop Client git url.")
+    var clientBlueprintsGitUrl = "https://github.com/nextcloud/desktop-client-blueprints.git"
 
     mutating func run() throws {
         print("Configuring build tooling.")
@@ -75,23 +84,25 @@ struct MacCrafter: ParsableCommand {
         print("Crafting Nextcloud Desktop Client dependencies...")
         shell("\(craftCommand) --install-deps nextcloud-client")
 
-        print("Code-signing Nextcloud Desktop Client libraries and frameworks...")
-
-        let craftLibDir = "\(self.buildPath)/\(craftTarget)/lib"
-        let craftLibs = try fm.contentsOfDirectory(atPath: craftLibDir)
-        for lib in craftLibs {
-            guard isLibrary(lib) else { continue }
-            try codesign(identity: codeSignIdentity, path: "\(craftLibDir)/\(lib)")
-        }
-
-        let craftPluginsDir = "\(currentDir)/\(craftTarget)/plugins"
-        guard let craftPluginsEnumerator = fm.enumerator(atPath: craftPluginsDir) else {
-            throw MacCrafterError.failedEnumeration("Failed to list craft plugins directory.")
-        }
-
-        for case let plugin as String in craftPluginsEnumerator {
-            guard isLibrary(plugin) else { continue }
-            try codesign(identity: codeSignIdentity, path: "\(craftPluginsDir)/\(plugin)")
+        if let codeSignIdentity {
+            print("Code-signing Nextcloud Desktop Client libraries and frameworks...")
+
+            let craftLibDir = "\(self.buildPath)/\(craftTarget)/lib"
+            let craftLibs = try fm.contentsOfDirectory(atPath: craftLibDir)
+            for lib in craftLibs {
+                guard isLibrary(lib) else { continue }
+                try codesign(identity: codeSignIdentity, path: "\(craftLibDir)/\(lib)")
+            }
+
+            let craftPluginsDir = "\(currentDir)/\(craftTarget)/plugins"
+            guard let craftPluginsEnumerator = fm.enumerator(atPath: craftPluginsDir) else {
+                throw MacCrafterError.failedEnumeration("Failed to list craft plugins directory.")
+            }
+
+            for case let plugin as String in craftPluginsEnumerator {
+                guard isLibrary(plugin) else { continue }
+                try codesign(identity: codeSignIdentity, path: "\(craftPluginsDir)/\(plugin)")
+            }
         }
 
         print("Crafting Nextcloud Desktop Client...")