Class/TerrafunConfig.ps1

class TerrafunConfig
{
    # Properties
    [String]$DesiredVersion
    [DateTime]$LastUpdateCheck
    [string[]]$AvailableVersions

    # Constructor
    TfConfig ()
    {
    }

    [Void] ReadConfigFile()
    {
        $UserProfile = (Get-Item ~).FullName
        $WorkingDir = Join-Path -Path $UserProfile -ChildPath ".terrafun"
        $ConfigPath = Join-Path -Path $WorkingDir -ChildPath "config.json"
        Write-Debug ("reading config {0}" -f $ConfigPath)
        New-Item -ItemType Directory -Path $WorkingDir -Force -ErrorAction SilentlyContinue | Out-Null

        if (Test-Path $ConfigPath){
            $Config = Get-Content -Path $ConfigPath | ConvertFrom-Json
            $this.DesiredVersion = $Config.DesiredVersion
            $this.LastUpdateCheck = $Config.LastUpdateCheck
            $this.AvailableVersions = $Config.AvailableVersions
        }
    }  

    [Void] WriteConfigFile()
    {
        $UserProfile = (Get-Item ~).FullName
        $WorkingDir = Join-Path -Path $UserProfile -ChildPath ".terrafun"
        $ConfigPath = Join-Path -Path $WorkingDir -ChildPath "config.json"
        Write-Debug ("writing config {0}" -f $ConfigPath)
        $this | ConvertTo-Json | Out-File -FilePath $ConfigPath

    }

}