import "@johnlindquist/kit"
let website_content = "/Users/danielchapman/Library/Mobile Documents/iCloud~md~obsidian/Documents/dschapman-com-content"
let website_notes = "/Users/danielchapman/Library/Mobile Documents/iCloud~md~obsidian/Documents/My notes"
let website_dir = "/Users/danielchapman/github/dschapman/dschapman-com"
let today = Date()
let output = []
let input = await arg("Select an Option", [{ name: "Publish", description: "Update the git repositories necessary to publish an update to my website", value: "Publish" }, { name: "Open Website in VSCode", description: "Open a vscode environment for dschapman-com", value: "VSCode" }, { name: "Edit Website Content", description: "Open the website's content in Obsidian", value: "Edit Website Content" }, { name: "Open Website", description: "Open https://dschapman.com in the browser", value: "Open Website" }, { name: "View on Github", description: "View website code on Github", value: "Github" }].sort((a, b) => { return (a.name > b.name ? 1 : -1) }))
switch (input) {
    case "Publish":
        input = await arg("Publish", [{ name: "Website Content", description: "Publish any changes to poems, articles or blog posts", "value": "Website Content" }, { name: "Website Notes", description: "Publish any changes to public notes", value: "Website Notes" }, { name: "All Content", description: "Publish it all", value: "All Content" }])
        
        switch (input) {
            case "Website Content":
                output.push(await exec(`git -C "${website_content}" add -A`))
                output.push(await exec(`git -C "${website_content}" commit -m "Publish content: ${today.toString()}"`))
                output.push(await exec(`git -C "${website_content}" push`))
                output.push(await exec(`git -C "${website_dir}" submodule update --remote`))
                output.push(await exec(`git -C "${website_dir}" add dschapman-com-content`))
                output.push(await exec(`git -C "${website_dir}" commit -m "Publish content: ${today.toString()}"`))
                output.push(await exec(`git -C "${website_dir}" push`))
                break;
            case "Website Notes":
                output.push(await exec(`git -C "${website_notes}" add -A`))
                output.push(await exec(`git -C "${website_notes}" commit -m "Publish content: ${today.toString()}"`))
                output.push(await exec(`git -C "${website_notes}" push`))
                output.push(await exec(`git -C "${website_dir}" submodule update --remote`))
                output.push(await exec(`git -C "${website_dir}" add My-notes`))
                output.push(await exec(`git -C "${website_dir}" commit -m "Publish notes: ${today.toString()}"`))
                output.push(await exec(`git -C "${website_dir}" push`))
                break;
            case "All":
                output.push(await exec(`git -C "${website_content}" add -A`))
                output.push(await exec(`git -C "${website_content}" commit -m "Publish content: ${today.toString()}"`))
                output.push(await exec(`git -C "${website_content}" push`))
                output.push(await exec(`git -C "${website_notes}" add -A`))
                output.push(await exec(`git -C "${website_notes}" commit -m "Publish content: ${today.toString()}"`))
                output.push(await exec(`git -C "${website_notes}" push`))
                output.push(await exec(`git -C "${website_dir}" submodule update --remote`))
                output.push(await exec(`git -C "${website_dir}" add My-notes dschapman-com-content`))
                output.push(await exec(`git -C "${website_dir}" commit -m "Publish all content: ${today.toString()}"`))
                output.push(await exec(`git -C "${website_dir}" push`))
                break;
            default:
                break;
        }
        break;
    case "VSCode":
        exec(`code "${website_dir}"`);
        break;
    case "Edit Website Content":
        input = await arg("Open", [{ name: "Articles, Poems, and Blog Posts", value: "content" }, { name: "Digital Notes", value: "notes" }])
        switch (input) {
            case "content":
                console.log("Content")
                browse(`"obsidian://open?vault=dschapman-com-content"`)
                break;
            case "notes":
                console.log("Notes")
                browse(`"obsidian://open?vault=My%20notes"`)
                break;
            default:
                break;
        }
       break;
    case "Open Website":
        browse("https://dschapman.com")
        break;
    case "Github":
        browse("https://github.com/dschapman/dschapman-com")
        break;
    default:
        break;
}
output.forEach(item => {
    if (item.stdout)
        console.log(item.stdout)
})