@@ -30,11 +30,46 @@ public final class UBKit {
3030
3131 private let fileManager = FileManager . default
3232
33- public init ( arguments: [ String ] = CommandLine . arguments) {
33+ public init ( arguments: [ String ] = CommandLine . arguments) throws {
34+ guard arguments. count == 2 else {
35+ throw UBKitError . invalidNumberOfArguments
36+ }
37+
3438 self . arguments = arguments
3539 }
3640
3741 public func run( _ completion: @escaping ( ( Error ? ) -> Void ) ) {
42+ guard let arg = getArgument ( for: arguments [ 1 ] ) else {
43+ completion ( UBKitError . invalidArguments ( arguments [ 1 ] ) )
44+ return
45+ }
46+
47+ switch arg {
48+ case . generate:
49+ generate ( completion)
50+ case . refresh:
51+ refresh ( completion)
52+ }
53+ }
54+
55+ class func validatePath( _ path: String , isDirectory: Bool ) -> Bool {
56+ if isDirectory {
57+ var directory = ObjCBool ( false )
58+ let folderExists = FileManager . default. fileExists ( atPath: path, isDirectory: & directory)
59+ return folderExists && directory. boolValue
60+ } else {
61+ return FileManager . default. fileExists ( atPath: path)
62+ }
63+ }
64+ }
65+
66+ private extension UBKit {
67+
68+ enum Argument : String {
69+ case generate, refresh
70+ }
71+
72+ func generate( _ completion: @escaping ( ( Error ? ) -> Void ) ) {
3873 let workingPath = fileManager. currentDirectoryPath
3974 do {
4075 guard let fileData = fileManager. contents ( atPath: workingPath. appending ( " /ubconfig.json " ) ) else {
@@ -60,16 +95,20 @@ public final class UBKit {
6095 return
6196 }
6297
98+ print ( " \n ---------- " )
99+ print ( " 👍 Successfully created your iOS and Unity projects " )
100+ print ( " The iOS project is located under iOS/ " )
101+ print ( " The Unity project is located under Unity/ " )
63102 completion ( nil )
64103 }
65104
66- class func validatePath ( _ path : String , isDirectory : Bool ) -> Bool {
67- if isDirectory {
68- var directory = ObjCBool ( false )
69- let folderExists = FileManager . default . fileExists ( atPath : path , isDirectory : & directory )
70- return folderExists && directory . boolValue
71- } else {
72- return FileManager . default . fileExists ( atPath : path )
73- }
105+ func refresh ( _ completion : @escaping ( ( Error ? ) -> Void ) ) {
106+ print ( " \n ---------- " )
107+ print ( " 👍 Successfully refreshed your iOS project " )
108+ completion ( nil )
109+ }
110+
111+ func getArgument ( for arg : String ) -> Argument ? {
112+ return Argument ( rawValue : arg )
74113 }
75114}
0 commit comments