craftenv.ps1

    <#
       Copied from Craft for testing syntax highlighting
    #>

    @" multi
       line
       string
    "@

    $foo = "Test `u{2013} String`nwith `"escapes`""

    #    this file sets some environment variables that are needed
    #    for finding programs and libraries etc.
    #    by Hannah von Reth <vonreth@kde.org>
    #    you should copy kdesettings.ini to ..\etc\kdesettings.ini
    #    and adapt it to your needs (see that file for more info)

    #    this file should contain all path settings - and provide thus an environment
    #    to build and run kde programs
    #    based on kdeenv.bat

    cls

    $env:CraftRoot=[System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)

    $CRAFT_ARGUMENTS = $args

    &{
    [version]$minPythonVersion = 3.6

    function findPython([string] $name)
    {
        $py = (Get-Command $name -ErrorAction SilentlyContinue)
        if ($py -and ($py | Get-Member Version) -and $py.Version -ge $minPythonVersion) {
            $env:CRAFT_PYTHON=$py.Source
        }
    }

    findPython("python3")
    findPython("python")

    function readINI([string] $fileName)
    {
       $ini = @{}

      switch -regex -file $fileName {
        "^\[(.+)\]$" {
          $section = $matches[1].Trim()
          $ini[$section] = @{}
        }
        "^\s*([^#].+?)\s*=\s*(.*)" {
          $name,$value = $matches[1..2]
          $ini[$section][$name] = $value.Trim()
        }
      }
      $ini
    }

    if(test-path -path $env:CraftRoot\..\etc\kdesettings.ini)
    {
        $settings = readINI $env:CraftRoot\..\etc\kdesettings.ini
    }
    else
    {
        Write-Error("$env:CraftRoot\..\etc\kdesettings.ini Does not exist")
        break
    }
    if( $CRAFT_ARGUMENTS[0] -eq "--get")
    {
        Write-Host($settings[$CRAFT_ARGUMENTS[1]][$CRAFT_ARGUMENTS[2]])
        break
    }

    function prependPATH([string] $path)
    {
        $env:PATH="$path{0}$env:PATH" -f [IO.Path]::PathSeparator
    }

    if( -Not $env:CRAFT_PYTHON)
    {
        prependPATH $settings["Paths"]["Python"]
        $env:CRAFT_PYTHON=[IO.PATH]::COMBINE($settings["Paths"]["Python"], "python")
    }

    (& $env:CRAFT_PYTHON ([IO.PATH]::COMBINE("$env:CraftRoot", "bin", "CraftSetupHelper.py")) "--setup") |
    foreach {
      if ($_ -match "=") {
        $v = $_.split("=")
        set-item -force -path "ENV:\$($v[0])"  -value "$($v[1])"
        #Write-Host("$v[0]=$v[1]")
      }
    }

    cd "$env:KDEROOT"
    }

    function Global:craft() {
        return & $env:CRAFT_PYTHON ([IO.PATH]::COMBINE("$env:CraftRoot", "bin", "craft.py")) $args
    }

    if($args.Length -ne 0)
    {
        invoke-expression -command "$args"
    }