Azure.ps1

function Initialize-Azure {

  # Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted

  # Install NuGet -MinimumVersion 2.8.5.201
  if ((Get-PackageProvider -Name NuGet).version -lt 2.8.5.201 ) {
    Write-Host("Installing NuGet Package Provider ...")
    Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 
  }

  Install-AzureModule Az.Accounts
  Install-AzureModule Az.Resources
  Install-AzureModule Az.Network
}

function Install-AzureModule {
  param(
    [string] $Name
  )

  $module = Get-InstalledModule $Name -errorAction SilentlyContinue
  if (-Not($module)) {
    Write-Host "Intalling module ${Name} ..."
    Install-Module -Name $Name -Scope CurrentUser -AllowClobber -Repository PSGallery

  }

  #if (-Not (Get-Command Get-AzPublicIpAddress -errorAction SilentlyContinue)) {
}

function New-AzureTemplate {
  "<xml></xml>"
}

function Connect-AzureAccount {

  if ( -not (Get-AzContext -errorAction SilentlyContinue)) {
    Write-Host("Connecting Azure account ...")
    Connect-AzAccount
  }

  if (!(Get-AzAccessToken -ErrorAction SilentlyContinue)) {
    Write-Host("Azure credentials have expired, connecting Azure account ...")
    Connect-AzAccount
  }
}
function New-Azure {
  param(
    [Parameter(mandatory = $True)]
    [string] $Name,
    [string] $Location = "westeurope"
  )

  Initialize-Azure
  Connect-AzureAccount

  if (-not(Get-AzResourceGroup -Name $Name -ErrorAction SilentlyContinue)) {
    Write-Host("Creating resource group ${Name}")
    New-AzResourceGroup -Name $Name -Location $Location
  }

  New-AzResourceGroupDeployment -ResourceGroupName $Name -TemplateFile (Join-Path $PSScriptRoot Azure.json)

  Write-Host "azure"
}


function Remove-Azure {
  param(
    [Parameter(mandatory = $True)]
    [string] $Name
  )

  Remove-AzResourceGroup -Name $Name

}