From f66fc64018637f85ab5575c33389672aea9ff5dd Mon Sep 17 00:00:00 2001 From: Vitalii Budnik Date: Fri, 20 Jun 2025 12:08:17 +0300 Subject: [PATCH 1/5] fix: rename BinaryDependenciesManager to binary_dependencies_manager --- Package.swift | 8 ++++---- .../BinaryDependencyManagerTests.swift | 6 ++++++ .../PrivateDependenciesResolverTests.swift | 6 ------ 3 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift delete mode 100644 Tests/PrivateDependenciesResolverTests/PrivateDependenciesResolverTests.swift diff --git a/Package.swift b/Package.swift index 07b353d..b716c86 100644 --- a/Package.swift +++ b/Package.swift @@ -12,7 +12,7 @@ let package = Package( // Products define the executables and libraries a package produces, making them visible to other packages. .executable( name: "binary-dependencies-manager", - targets: ["BinaryDependenciesManager"] + targets: ["binary_dependencies_manager"] ), ], dependencies: [ @@ -24,7 +24,7 @@ let package = Package( // Targets are the basic building blocks of a package, defining a module or a test suite. // Targets can depend on other targets in this package and products from dependencies. .executableTarget( - name: "BinaryDependenciesManager", + name: "binary_dependencies_manager", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser"), .product(name: "Crypto", package: "swift-crypto"), @@ -32,8 +32,8 @@ let package = Package( ), .testTarget( - name: "DependenciesResolverTests", - dependencies: ["BinaryDependenciesManager"] + name: "BinaryDependencyManagerTests", + dependencies: ["binary_dependencies_manager"] ), ] ) diff --git a/Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift b/Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift new file mode 100644 index 0000000..bd5d44a --- /dev/null +++ b/Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift @@ -0,0 +1,6 @@ +@testable import binary_dependencies_manager +import XCTest + +final class BinaryDependencyManagerTests: XCTestCase { + func testExample() throws {} +} diff --git a/Tests/PrivateDependenciesResolverTests/PrivateDependenciesResolverTests.swift b/Tests/PrivateDependenciesResolverTests/PrivateDependenciesResolverTests.swift deleted file mode 100644 index f97c226..0000000 --- a/Tests/PrivateDependenciesResolverTests/PrivateDependenciesResolverTests.swift +++ /dev/null @@ -1,6 +0,0 @@ -@testable import BinaryDependenciesManager -import XCTest - -final class DependenciesResolverTests: XCTestCase { - func testExample() throws {} -} From 7b2546c2c1aca14c0955e77ea4a25ec81ea31b22 Mon Sep 17 00:00:00 2001 From: Paul Taykalo Date: Fri, 20 Jun 2025 15:34:39 +0300 Subject: [PATCH 2/5] fix: Make sure that target naming is CamelCase and tests works --- Package.swift | 22 +++-- .../DepeneciesResolverRunner.swift | 16 +++- .../Commands/CleanCommand.swift | 0 .../Commands/ResolveCommand.swift | 1 + Sources/CommandLine/Utils/Logging.swift | 10 +++ .../CommandLine/Utils/Strings+Colored.swift | 85 +++++++++++++++++++ .../main.swift | 0 .../BinaryDependencyManagerTests.swift | 7 +- 8 files changed, 129 insertions(+), 12 deletions(-) rename Sources/{BinaryDependencyManager => CommandLine}/Commands/CleanCommand.swift (100%) rename Sources/{BinaryDependencyManager => CommandLine}/Commands/ResolveCommand.swift (96%) create mode 100644 Sources/CommandLine/Utils/Logging.swift create mode 100644 Sources/CommandLine/Utils/Strings+Colored.swift rename Sources/{BinaryDependencyManager => CommandLine}/main.swift (100%) diff --git a/Package.swift b/Package.swift index b716c86..3e67b57 100644 --- a/Package.swift +++ b/Package.swift @@ -12,8 +12,8 @@ let package = Package( // Products define the executables and libraries a package produces, making them visible to other packages. .executable( name: "binary-dependencies-manager", - targets: ["binary_dependencies_manager"] - ), + targets: ["CommandLine"] + ) ], dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMajor(from: "1.5.1")), @@ -21,19 +21,27 @@ let package = Package( ], targets: [ - // Targets are the basic building blocks of a package, defining a module or a test suite. - // Targets can depend on other targets in this package and products from dependencies. + .executableTarget( - name: "binary_dependencies_manager", + name: "CommandLine", + dependencies: [ + "BinaryDependencyManager", + .product(name: "ArgumentParser", package: "swift-argument-parser") + ] + ), + + .target( + name: "BinaryDependencyManager", dependencies: [ - .product(name: "ArgumentParser", package: "swift-argument-parser"), .product(name: "Crypto", package: "swift-crypto"), ] ), .testTarget( name: "BinaryDependencyManagerTests", - dependencies: ["binary_dependencies_manager"] + dependencies: [ + .target(name: "BinaryDependencyManager") + ] ), ] ) diff --git a/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift b/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift index b5a3c37..ac208e0 100644 --- a/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift +++ b/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift @@ -1,14 +1,24 @@ import Crypto import Foundation -struct DependenciesResolverRunner { +public struct DependenciesResolverRunner { let dependenciesJSONPath: String let cacheDirectoryPath: String let outputDirectoryPath: String - - func run() throws { + + public init( + dependenciesJSONPath: String, + cacheDirectoryPath: String, + outputDirectoryPath: String + ) { + self.dependenciesJSONPath = dependenciesJSONPath + self.cacheDirectoryPath = cacheDirectoryPath + self.outputDirectoryPath = outputDirectoryPath + } + + public func run() throws { let dependencies = try runThrowable("Reading dependencies") { try readDependencies() } // resolve dependencies one by one diff --git a/Sources/BinaryDependencyManager/Commands/CleanCommand.swift b/Sources/CommandLine/Commands/CleanCommand.swift similarity index 100% rename from Sources/BinaryDependencyManager/Commands/CleanCommand.swift rename to Sources/CommandLine/Commands/CleanCommand.swift diff --git a/Sources/BinaryDependencyManager/Commands/ResolveCommand.swift b/Sources/CommandLine/Commands/ResolveCommand.swift similarity index 96% rename from Sources/BinaryDependencyManager/Commands/ResolveCommand.swift rename to Sources/CommandLine/Commands/ResolveCommand.swift index 6b2b5d2..e00e947 100644 --- a/Sources/BinaryDependencyManager/Commands/ResolveCommand.swift +++ b/Sources/CommandLine/Commands/ResolveCommand.swift @@ -1,4 +1,5 @@ import ArgumentParser +import BinaryDependencyManager struct ResolveCommand: ParsableCommand { diff --git a/Sources/CommandLine/Utils/Logging.swift b/Sources/CommandLine/Utils/Logging.swift new file mode 100644 index 0000000..b84b658 --- /dev/null +++ b/Sources/CommandLine/Utils/Logging.swift @@ -0,0 +1,10 @@ +enum Logger { + static func log(_ message: String) { + // extract [(.^] from the message)] and print it with green + let message = message + .replacingOccurrences(of: #"(\[.*?\])"#, with: "$1".green, options: .regularExpression) + .replacingOccurrences(of: #"#(.*?)#"#, with: "[$1]".yellow, options: .regularExpression) + + print(message) + } +} diff --git a/Sources/CommandLine/Utils/Strings+Colored.swift b/Sources/CommandLine/Utils/Strings+Colored.swift new file mode 100644 index 0000000..f322b65 --- /dev/null +++ b/Sources/CommandLine/Utils/Strings+Colored.swift @@ -0,0 +1,85 @@ +extension String { + var black: String { + "\u{001B}[30m\(self)\u{001B}[0m" + } + + var red: String { + "\u{001B}[31m\(self)\u{001B}[0m" + } + + var green: String { + "\u{001B}[32m\(self)\u{001B}[0m" + } + + var yellow: String { + "\u{001B}[33m\(self)\u{001B}[0m" + } + + var blue: String { + "\u{001B}[34m\(self)\u{001B}[0m" + } + + var magenta: String { + "\u{001B}[35m\(self)\u{001B}[0m" + } + + var cyan: String { + "\u{001B}[36m\(self)\u{001B}[0m" + } + + var gray: String { + "\u{001B}[37m\(self)\u{001B}[0m" + } + + var bg_black: String { + "\u{001B}[40m\(self)\u{001B}[0m" + } + + var bg_red: String { + "\u{001B}[41m\(self)\u{001B}[0m" + } + + var bg_green: String { + "\u{001B}[42m\(self)\u{001B}[0m" + } + + var bg_brown: String { + "\u{001B}[43m\(self)\u{001B}[0m" + } + + var bg_blue: String { + "\u{001B}[44m\(self)\u{001B}[0m" + } + + var bg_magenta: String { + "\u{001B}[45m\(self)\u{001B}[0m" + } + + var bg_cyan: String { + "\u{001B}[46m\(self)\u{001B}[0m" + } + + var bg_gray: String { + "\u{001B}[47m\(self)\u{001B}[0m" + } + + var bold: String { + "\u{001B}[1m\(self)\u{001B}[22m" + } + + var italic: String { + "\u{001B}[3m\(self)\u{001B}[23m" + } + + var underline: String { + "\u{001B}[4m\(self)\u{001B}[24m" + } + + var blink: String { + "\u{001B}[5m\(self)\u{001B}[25m" + } + + var reverse_color: String { + "\u{001B}[7m\(self)\u{001B}[27m" + } +} diff --git a/Sources/BinaryDependencyManager/main.swift b/Sources/CommandLine/main.swift similarity index 100% rename from Sources/BinaryDependencyManager/main.swift rename to Sources/CommandLine/main.swift diff --git a/Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift b/Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift index bd5d44a..2a64efd 100644 --- a/Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift +++ b/Tests/BinaryDependencyManagerTests/BinaryDependencyManagerTests.swift @@ -1,6 +1,9 @@ -@testable import binary_dependencies_manager +import BinaryDependencyManager + import XCTest final class BinaryDependencyManagerTests: XCTestCase { - func testExample() throws {} + func testExample() throws { + _ = DependenciesResolverRunner(dependenciesJSONPath: "", cacheDirectoryPath: "", outputDirectoryPath: "") + } } From 9a6f2be7ee4ebc856c3507bafd8e218f66283f7f Mon Sep 17 00:00:00 2001 From: Paul Taykalo Date: Fri, 20 Jun 2025 15:38:00 +0300 Subject: [PATCH 3/5] fix: add Utils which is used from the Manager and the Runenr --- Package.swift | 6 +- .../DepeneciesResolverRunner.swift | 1 + .../CommandLine/Commands/CleanCommand.swift | 1 + Sources/CommandLine/Utils/Logging.swift | 10 --- .../CommandLine/Utils/Strings+Colored.swift | 85 ------------------- .../Utils/Logging.swift | 6 +- .../Utils/Strings+Colored.swift | 0 7 files changed, 11 insertions(+), 98 deletions(-) delete mode 100644 Sources/CommandLine/Utils/Logging.swift delete mode 100644 Sources/CommandLine/Utils/Strings+Colored.swift rename Sources/{BinaryDependencyManager => }/Utils/Logging.swift (78%) rename Sources/{BinaryDependencyManager => }/Utils/Strings+Colored.swift (100%) diff --git a/Package.swift b/Package.swift index 3e67b57..766f279 100644 --- a/Package.swift +++ b/Package.swift @@ -25,8 +25,9 @@ let package = Package( .executableTarget( name: "CommandLine", dependencies: [ + .product(name: "ArgumentParser", package: "swift-argument-parser"), "BinaryDependencyManager", - .product(name: "ArgumentParser", package: "swift-argument-parser") + "Utils", ] ), @@ -34,8 +35,11 @@ let package = Package( name: "BinaryDependencyManager", dependencies: [ .product(name: "Crypto", package: "swift-crypto"), + "Utils" ] ), + + .target(name: "Utils"), .testTarget( name: "BinaryDependencyManagerTests", diff --git a/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift b/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift index ac208e0..8b95827 100644 --- a/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift +++ b/Sources/BinaryDependencyManager/DepeneciesResolverRunner.swift @@ -1,5 +1,6 @@ import Crypto import Foundation +import Utils public struct DependenciesResolverRunner { let dependenciesJSONPath: String diff --git a/Sources/CommandLine/Commands/CleanCommand.swift b/Sources/CommandLine/Commands/CleanCommand.swift index b3e4d09..552b151 100644 --- a/Sources/CommandLine/Commands/CleanCommand.swift +++ b/Sources/CommandLine/Commands/CleanCommand.swift @@ -1,5 +1,6 @@ import ArgumentParser import Foundation +import Utils struct CleanCommand: ParsableCommand { diff --git a/Sources/CommandLine/Utils/Logging.swift b/Sources/CommandLine/Utils/Logging.swift deleted file mode 100644 index b84b658..0000000 --- a/Sources/CommandLine/Utils/Logging.swift +++ /dev/null @@ -1,10 +0,0 @@ -enum Logger { - static func log(_ message: String) { - // extract [(.^] from the message)] and print it with green - let message = message - .replacingOccurrences(of: #"(\[.*?\])"#, with: "$1".green, options: .regularExpression) - .replacingOccurrences(of: #"#(.*?)#"#, with: "[$1]".yellow, options: .regularExpression) - - print(message) - } -} diff --git a/Sources/CommandLine/Utils/Strings+Colored.swift b/Sources/CommandLine/Utils/Strings+Colored.swift deleted file mode 100644 index f322b65..0000000 --- a/Sources/CommandLine/Utils/Strings+Colored.swift +++ /dev/null @@ -1,85 +0,0 @@ -extension String { - var black: String { - "\u{001B}[30m\(self)\u{001B}[0m" - } - - var red: String { - "\u{001B}[31m\(self)\u{001B}[0m" - } - - var green: String { - "\u{001B}[32m\(self)\u{001B}[0m" - } - - var yellow: String { - "\u{001B}[33m\(self)\u{001B}[0m" - } - - var blue: String { - "\u{001B}[34m\(self)\u{001B}[0m" - } - - var magenta: String { - "\u{001B}[35m\(self)\u{001B}[0m" - } - - var cyan: String { - "\u{001B}[36m\(self)\u{001B}[0m" - } - - var gray: String { - "\u{001B}[37m\(self)\u{001B}[0m" - } - - var bg_black: String { - "\u{001B}[40m\(self)\u{001B}[0m" - } - - var bg_red: String { - "\u{001B}[41m\(self)\u{001B}[0m" - } - - var bg_green: String { - "\u{001B}[42m\(self)\u{001B}[0m" - } - - var bg_brown: String { - "\u{001B}[43m\(self)\u{001B}[0m" - } - - var bg_blue: String { - "\u{001B}[44m\(self)\u{001B}[0m" - } - - var bg_magenta: String { - "\u{001B}[45m\(self)\u{001B}[0m" - } - - var bg_cyan: String { - "\u{001B}[46m\(self)\u{001B}[0m" - } - - var bg_gray: String { - "\u{001B}[47m\(self)\u{001B}[0m" - } - - var bold: String { - "\u{001B}[1m\(self)\u{001B}[22m" - } - - var italic: String { - "\u{001B}[3m\(self)\u{001B}[23m" - } - - var underline: String { - "\u{001B}[4m\(self)\u{001B}[24m" - } - - var blink: String { - "\u{001B}[5m\(self)\u{001B}[25m" - } - - var reverse_color: String { - "\u{001B}[7m\(self)\u{001B}[27m" - } -} diff --git a/Sources/BinaryDependencyManager/Utils/Logging.swift b/Sources/Utils/Logging.swift similarity index 78% rename from Sources/BinaryDependencyManager/Utils/Logging.swift rename to Sources/Utils/Logging.swift index b84b658..61042e9 100644 --- a/Sources/BinaryDependencyManager/Utils/Logging.swift +++ b/Sources/Utils/Logging.swift @@ -1,5 +1,7 @@ -enum Logger { - static func log(_ message: String) { +import Foundation + +public enum Logger { + public static func log(_ message: String) { // extract [(.^] from the message)] and print it with green let message = message .replacingOccurrences(of: #"(\[.*?\])"#, with: "$1".green, options: .regularExpression) diff --git a/Sources/BinaryDependencyManager/Utils/Strings+Colored.swift b/Sources/Utils/Strings+Colored.swift similarity index 100% rename from Sources/BinaryDependencyManager/Utils/Strings+Colored.swift rename to Sources/Utils/Strings+Colored.swift From 9f0d558b5c329c9c507065ae3165de4253559c02 Mon Sep 17 00:00:00 2001 From: Paul Taykalo Date: Fri, 20 Jun 2025 15:38:34 +0300 Subject: [PATCH 4/5] fix: Add binary file to exclude --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b8eff2e..da0a5cb 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ DerivedData/ .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc *.zip +Binary/binary-dependencies-manager From af0fa1b8ff560ad897c5df8798761b893f503f9e Mon Sep 17 00:00:00 2001 From: Vitalii Budnik Date: Fri, 20 Jun 2025 16:22:06 +0300 Subject: [PATCH 5/5] chpore: fix imports --- .../BinaryDependenciesConfigurationReaderTests.swift | 2 +- .../BinaryDependenciesConfigurationTests.swift | 2 +- .../Mocks/FileManagerProtocolMock.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationReaderTests.swift b/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationReaderTests.swift index 1082d9c..3e8851e 100644 --- a/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationReaderTests.swift +++ b/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationReaderTests.swift @@ -1,4 +1,4 @@ -@testable import binary_dependencies_manager +@testable import BinaryDependencyManager import XCTest import Testing import Yams diff --git a/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationTests.swift b/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationTests.swift index ddc2b74..4a7fa6c 100644 --- a/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationTests.swift +++ b/Tests/BinaryDependencyManagerTests/BinaryDependenciesConfigurationTests.swift @@ -1,4 +1,4 @@ -@testable import binary_dependencies_manager +@testable import BinaryDependencyManager import XCTest import Testing import Yams diff --git a/Tests/BinaryDependencyManagerTests/Mocks/FileManagerProtocolMock.swift b/Tests/BinaryDependencyManagerTests/Mocks/FileManagerProtocolMock.swift index cb8ac55..17dc8b7 100644 --- a/Tests/BinaryDependencyManagerTests/Mocks/FileManagerProtocolMock.swift +++ b/Tests/BinaryDependencyManagerTests/Mocks/FileManagerProtocolMock.swift @@ -1,4 +1,4 @@ -@testable import binary_dependencies_manager +@testable import BinaryDependencyManager import Foundation class FileManagerProtocolMock: FileManagerProtocol {