PSSakuraManager.psm1

$URL=@{
    v2320="https://github.com/sakura-editor/sakura/releases/download/v2.3.2.0/sakura2-3-2-0.zip";
    v2310="https://github.com/sakura-editor/sakura/releases/download/v2.3.1.0/sakura2-3-1-0.zip";
    v2300="https://github.com/sakura-editor/sakura/releases/download/v2.3.0.0/sakura2-3-0-0.zip";
    bregonig="https://bitbucket.org/k_takata/bregonig/downloads/bron412.zip"
}

<#
.SYNOPSIS
Sakura Editor をインストールします。
 
.PARAMETER v2320
Sakura Editor v2.3.2.0 をインストールします。
 
.PARAMETER v2310
Sakura Editor v2.3.1.0 をインストールします。
 
.PARAMETER v2300
Sakura Editor v2.3.0.0 をインストールします。
#>

function Install-SakuraEditor([switch]$v2320,[switch]$v2310,[switch]$v2300){
    if($v2320){
        $base_name=(Split-Path -Leaf $URL["v2320"])

        Uninstall-SakuraEditor
        curl.exe $URL["v2320"] -L -o "${HOME}/Downloads/${base_name}"
        Expand-Archive "${HOME}/Downloads/${base_name}" $HOME
    }elseif($v2310){
        $base_name=(Split-Path -Leaf $URL["v2310"])
        $dir_name=($base_name -replace ".zip","")

        Uninstall-SakuraEditor
        curl.exe $URL["v2310"] -L -o "${HOME}/Downloads/${base_name}"
        Expand-Archive "${HOME}/Downloads/${base_name}" "${HOME}/${dir_name}"
    }elseif($v2300){
        $base_name=(Split-Path -Leaf $URL["v2300"])
        $dir_name=($base_name -replace ".zip","")

        Uninstall-SakuraEditor
        curl.exe $URL["v2300"] -L -o "${HOME}/Downloads/${base_name}"
        Expand-Archive "${HOME}/Downloads/${base_name}" "${HOME}/${dir_name}"
    }else{
        Write-Output "オプションを指定してください。"
        return
    }

    Remove-Item "${HOME}/Downloads/${base_name}"
}

<#
.SYNOPSIS
Sakura Editor をアンインストールします。
#>

function Uninstall-SakuraEditor(){
    if(Test-Path "${HOME}/sakura[0-9]*"){
        Remove-Item -Recurse "${HOME}/sakura[0-9]*"
    }
}

<#
.SYNOPSIS
環境変数 Path へ Sakura Editor がインストールされているフォルダーのパスを追加します。
#>

function Set-SakuraEditorPath(){
    $sakura_path=(Resolve-Path "${HOME}/sakura[0-9]*")
    $env:Path="${env:Path}${sakura_path};"
}

<#
.SYNOPSIS
bregonig.dll をインストールします。
#>

function Install-Bregonig(){
    if(Test-Path "${HOME}/sakura[0-9]*"){
        $base_name=(Split-Path -Leaf $URL["bregonig"])
        $dir_name=($base_name -replace ".zip","")
        $sakura_path=(Resolve-Path "${HOME}/sakura[0-9]*")

        Invoke-WebRequest $URL["bregonig"] -OutFile "${HOME}/Downloads/${base_name}"
        Uninstall-Bregonig
        Expand-Archive "${HOME}/Downloads/${base_name}" "${sakura_path}/${dir_name}"
        Remove-Item "${HOME}/Downloads/${base_name}"
        Copy-Item "${sakura_path}/${dir_name}/bregonig.dll" $sakura_path
    }else{
        Write-Output "Sakura Editor がインストールされていません。"
        return
    }
}

<#
.SYNOPSIS
bregonig.dll をアンインストールします。
#>

function Uninstall-Bregonig(){
    $base_name=(Split-Path -Leaf $URL["bregonig"])
    $dir_name=($base_name -replace ".zip","")
    $sakura_path=(Resolve-Path "${HOME}/sakura[0-9]*")

    if(Test-Path "${sakura_path}/${dir_name}"){
        Remove-Item -Recurse "${sakura_path}/${dir_name}"
    }

    if(Test-Path "${sakura_path}/bregonig.dll"){
        Remove-Item "${sakura_path}/bregonig.dll"
    }
}