import ArgumentParser
import CommandLineTools
import Foundation

struct SetupProject: ParsableCommand {
    static var configuration = CommandConfiguration(abstract: "A tool to setup the required components to efficiently run and contribute to Element X iOS")

    func run() throws {
        try setupGitHooks()
        try brewInstall()
        try mintPackagesInstall()
        try xcodegen()
    }

    func setupGitHooks() throws {
        try Zsh.run(command: "git config core.hooksPath .githooks")
    }

    func brewInstall() throws {
        try Zsh.run(command: "brew install xcodegen swiftgen swiftformat git-lfs sourcery mint kiliankoe/formulae/swift-outdated localazy/tools/localazy peripheryapp/periphery/periphery FelixHerrmann/tap/swift-package-list")
    }

    func mintPackagesInstall() throws {
        try Zsh.run(command: "mint install Asana/locheck")
    }

    func xcodegen() throws {
        try Zsh.run(command: "xcodegen")
    }
}
