feat: Elixir 0.10.0 package first release
- ensure Erlang and toolsroot are installed - add bin directory to PATH - uninstall removes Elixir from tools directory and removes PATH mods
This commit is contained in:
31
Elixir/Elixir.nuspec
Normal file
31
Elixir/Elixir.nuspec
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Elixir</id>
|
||||
<title>Elixir</title>
|
||||
<version>0.10.0</version>
|
||||
<authors>Jose Valim</authors>
|
||||
<owners>Ethan J Brown</owners>
|
||||
<summary>Elixir is a functional meta-programming aware language built on top of the Erlang VM.</summary>
|
||||
<description>Elixir is a functional meta-programming aware language built on top of the Erlang VM. It is a dynamic language with flexible syntax with macros support that leverages Erlang's abilities to build concurrent, distributed, fault-tolerant applications with hot code upgrades.
|
||||
|
||||
Elixir also provides first-class support for pattern matching, polymorphism via protocols (similar to Clojure's), aliases and associative data structures (usually known as dicts or hashes in other programming languages).
|
||||
|
||||
Finally, Elixir and Erlang share the same bytecode and data types. This means you can invoke Erlang code from Elixir (and vice-versa) without any conversion or performance hit. This allows a developer to mix the expressiveness of Elixir with the robustness and performance of Erlang.</description>
|
||||
<releaseNotes>https://github.com/elixir-lang/elixir/releases/</releaseNotes>
|
||||
<projectUrl>http://elixir-lang.org/</projectUrl>
|
||||
<tags>erlang concurrent programming language sdk otp elixir ruby</tags>
|
||||
<licenseUrl>https://github.com/elixir-lang/elixir/blob/master/LICENSE</licenseUrl>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<iconUrl>https://secure.gravatar.com/avatar/4c5c2c297ed9f4664cfbe7733a011fb2?s=400&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png</iconUrl>
|
||||
<dependencies>
|
||||
<dependency id="toolsroot"/>
|
||||
<!-- mingw installer is broken, not silent, only needed to compile anyhow -->
|
||||
<!-- <dependency id="MinGw" version="0.5.20121115" /> -->
|
||||
<dependency id="Erlang16" />
|
||||
</dependencies>
|
||||
</metadata>
|
||||
<files>
|
||||
<file src="tools\**" target="tools" />
|
||||
</files>
|
||||
</package>
|
36
Elixir/tools/chocolateyInstall.ps1
Normal file
36
Elixir/tools/chocolateyInstall.ps1
Normal file
@@ -0,0 +1,36 @@
|
||||
$package = 'Elixir'
|
||||
$version = '0.10.0'
|
||||
|
||||
try {
|
||||
$params = @{
|
||||
PackageName = $package;
|
||||
FileType = 'zip';
|
||||
Url = "https://github.com/elixir-lang/elixir/releases/download/v$version/v$version.zip";
|
||||
UnzipLocation = Join-Path $Env:SystemDrive 'tools';
|
||||
}
|
||||
|
||||
$binRoot = Join-Path $Env:SystemDrive $Env:Chocolatey_Bin_Root
|
||||
if (Test-Path $binRoot)
|
||||
{
|
||||
$params.UnzipLocation = $binRoot
|
||||
}
|
||||
|
||||
$params.UnzipLocation = Join-Path $params.UnzipLocation 'Elixir'
|
||||
|
||||
if (!(Test-Path($params.UnzipLocation)))
|
||||
{
|
||||
New-Item $params.UnzipLocation -Type Directory | Out-Null
|
||||
}
|
||||
|
||||
Install-ChocolateyZipPackage @params
|
||||
|
||||
$elixirBin = Join-Path $params.UnzipLocation 'bin'
|
||||
|
||||
Install-ChocolateyPath $elixirBin
|
||||
|
||||
Write-ChocolateySuccess $package
|
||||
} catch {
|
||||
Write-ChocolateyFailure $package "$($_.Exception.Message)"
|
||||
throw
|
||||
}
|
||||
|
35
Elixir/tools/chocolateyUninstall.ps1
Normal file
35
Elixir/tools/chocolateyUninstall.ps1
Normal file
@@ -0,0 +1,35 @@
|
||||
$package = 'Elixir'
|
||||
|
||||
try {
|
||||
$location = Join-Path $Env:SystemDrive $Env:Chocolatey_Bin_Root
|
||||
if (!(Test-Path $location))
|
||||
{
|
||||
$location = Join-Path $Env:SystemDrive 'tools'
|
||||
}
|
||||
$location = Join-Path $location $package
|
||||
|
||||
if (Test-Path $location)
|
||||
{
|
||||
Remove-Item $location -Recurse -Force
|
||||
}
|
||||
|
||||
$binLocation = (Join-Path $location 'bin') -replace '\\', '\\'
|
||||
|
||||
$userPaths = [Environment]::GetEnvironmentVariable('Path', 'User') -split ';' |
|
||||
? { ($_ -notmatch $binLocation) -and (![String]::IsNullOrEmpty($_)) } |
|
||||
Select-Object -Unique
|
||||
|
||||
[Environment]::SetEnvironmentVariable('Path', ($userPaths -join ';'), 'User')
|
||||
|
||||
Write-Host @'Please restart your current shell session to access Elixir commands:
|
||||
elixir
|
||||
elixirc
|
||||
mix
|
||||
iex.bat (use batch file within Powershell due to name collision)
|
||||
'@
|
||||
|
||||
Write-ChocolateySuccess $package
|
||||
} catch {
|
||||
Write-ChocolateyFailure $package "$($_.Exception.Message)"
|
||||
throw
|
||||
}
|
Reference in New Issue
Block a user