             arguments: ["pod"] + arguments)
     }
     
+    static func version() throws {
+        guard PodTask(arguments: ["--version"]).excute() else {
+            throw TaskError()
+        }
+    }
+    
     static func trunkPush(path: String) throws {
-        if !PodTask(arguments: ["trunk", "push", path, "--allow-warnings"]).excute() {
-            print("RE: pod trunk push \(path) ? Y/n")
-            if let line = readLine()?.trimmingCharacters(in: .whitespacesAndNewlines),
-                line.lowercased() == "y" {
+        _ = PodTask(arguments: ["repo", "update"]).excute()
+        if PodTask(arguments: ["trunk", "push", path, "--allow-warnings"]).excute() {
+            print("wait for 5 minutes ...")
+            sleep(60 * 5)
+        } else {
+            print("[?] try pod trunk push \(path) again? [yes/no]")
+            if let input = readLine()?.trimmingCharacters(in: .whitespaces).lowercased(),
+                ["y", "ye", "yes"].contains(input) {
                 try PodTask.trunkPush(path: path)
             } else {
                 throw TaskError()

            self.revision = revision
            self.tag = tag
        }
        
        func newVersion(increase part: IncrementalPart) throws -> Version {
            guard [.major, .minor, .revision].contains(part) && self.tag == nil else {
                throw TaskError(description: "tag exist.")
            }
            switch part {
            case .major:
                return Version(major: self.major + 1, minor: self.minor, revision: self.revision)
            case .minor:
                return Version(major: self.major, minor: self.minor + 1, revision: self.revision)
            case .revision:
                return Version(major: self.major, minor: self.minor, revision: self.revision + 1)
            case .tag:
                guard let tag = self.tag else {
                    throw TaskError(description: "tag not found.")
                }
                return Version(
                    major: self.major,
                    minor: self.minor,
                    revision: self.revision,
                    tag: (tag.category, tag.number + 1))
            }
        }
    }
    
    static func currentVersion(path: String = VersionUpdater.userAgentFilePath) throws -> Version {
        try checkFileExists(path: path)
        return try Version(string: String((try String(contentsOfFile: path, encoding: .utf8))
            .trimmingCharacters(in: .whitespacesAndNewlines)
            .dropFirst(#"#define SDK_VERSION @""#.count)
            .dropLast()))
    }
}

class CLI {
    
    static func help() {
        
    }
    
    static func build() throws {
        try XcodebuildTask.building()
    }
    
    static func githubRelease() {
        
    }
    
    static func podTrunk() {
        
    }
    
    static func read() -> [String] {

        schemeSuffixes: [SchemeSuffix] = [.iOS, .macOS, .tvOS, .watchOS])
        throws
    {
        try version()
        let xcodeproj = try getXcodeproj(name: project)
        try xcodeproj.project.schemes.forEach { (scheme) in
            try schemeSuffixes.forEach { (schemeSuffix) in
