File: appveyor_rust_install.ps1

package info (click to toggle)
rust-app-dirs2 2.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 200 kB
  • sloc: makefile: 2
file content (72 lines) | stat: -rw-r--r-- 2,691 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
##### Appveyor Rust Install Script #####

# https://github.com/starkat99/appveyor-rust

# This is the most important part of the Appveyor configuration. This installs the version of Rust
# specified by the "channel" and "target" environment variables from the build matrix. By default,
# Rust will be installed to C:\Rust for easy usage, but this path can be overridden by setting the
# RUST_INSTALL_DIR environment variable. The URL to download rust distributions defaults to
# https://static.rust-lang.org/dist/ but can overridden by setting the RUST_DOWNLOAD_URL environment
# variable.
#
# For simple configurations, instead of using the build matrix, you can override the channel and
# target environment variables with the --channel and --target script arguments.
#
# If no channel or target arguments or environment variables are specified, will default to stable
# channel and x86_64-pc-windows-msvc target.

param([string]$channel=${env:channel}, [string]$target=${env:target})

# Initialize our parameters from arguments and environment variables, falling back to defaults
if (!$channel) {
    $channel = "stable"
}
if (!$target) {
    $target = "x86_64-pc-windows-msvc"
}

$downloadUrl = "https://static.rust-lang.org/dist/"
if ($env:RUST_DOWNLOAD_URL) {
    $downloadUrl = $env:RUST_DOWNLOAD_URL
}

$installDir = "C:\Rust"
if ($env:RUST_INSTALL_DIR) {
    $installUrl = $env:RUST_INSTALL_DIR
}

if ($channel -eq "stable") {
    # Download manifest so we can find actual filename of installer to download. Needed for stable.
    echo "Downloading $channel channel manifest"
    $manifest = "${env:Temp}\channel-rust-${channel}"
    Start-FileDownload "${downloadUrl}channel-rust-${channel}" -FileName "$manifest"

    # Search the manifest lines for the correct filename based on target
    $match = Get-Content "$manifest" | Select-String -pattern "${target}.exe" -simplematch

    if (!$match -or !$match.line) {
        throw "Could not find $target in $channel channel manifest"
    }

    $installer = $match.line
} else {
    # Otherwise download the file specified by channel directly.
    $installer = "rust-${channel}-${target}.exe"
}

# Download installer
echo "Downloading ${downloadUrl}$installer"
Start-FileDownload "${downloadUrl}$installer" -FileName "${env:Temp}\$installer"

# Execute installer and wait for it to finish
echo "Installing $installer to $installDir"
&"${env:Temp}\$installer" /VERYSILENT /NORESTART /DIR="$installDir" | Write-Output

# Add Rust to the path.
$env:Path += ";${installDir}\bin;C:\MinGW\bin"

echo "Installation of $channel Rust $target completed"

# Test and display installed version information for rustc and cargo
rustc -V
cargo -V