#!/usr/bin/env bash
#=
PROGRAM_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
exec julia --color=yes --startup-file=no -q --project=$PROGRAM_PATH "${BASH_SOURCE[0]}" "$@"
=#

using ZhanKai
using LibGit2
using Expronicon

const help_msg = """
Boostrap CLI for Expronicon

    boostrap [release]

This CLI creates the package ExproniconLite that has zero dependency
by expanding all MLStyle macros. if `release` is feeded it will use
`ion` to release a new version for `ExproniconLite`.
"""

function main(ARGS=ARGS)
    if "-h" in ARGS || "--help" in ARGS
        println(help_msg)
        return
    end

    if length(ARGS) > 0 && ARGS[1] == "release"
        cd(pkgdir(Expronicon)) do
            LibGit2.isdirty(LibGit2.GitRepo(".")) && error("Expronicon is dirty")
            run(`ion release $(ARGS[2])`)
        end
    end

    cd(pkgdir(Expronicon)) do
        rm("build"; force=true, recursive=true)
        mkpath("build")

        cd("build") do
            run(`ion clone ExproniconLite`)
        end
        ZhanKai.CLI.zhan()

        if length(ARGS) > 0 && ARGS[1] == "release"
            cd(pkgdir(Expronicon, "build", "ExproniconLite")) do
                if LibGit2.isdirty(LibGit2.GitRepo("."))
                    run(`git add .gitignore`)
                    run(`git add -A`)
                    run(`git commit -m"generated from Expronicon"`)
                    run(`git push origin main`)
                end
                run(`ion release current`)
            end
        end
        # rm("build"; force=true, recursive=true)
    end # cd project
end

main()
