Merge branch 'master' into conditional-style

This commit is contained in:
Filip Bachul 2022-11-26 16:40:09 +01:00
commit 3de96353ed
9 changed files with 249 additions and 52 deletions

View File

@ -323,6 +323,21 @@ jobs:
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
./wingetcreate.exe update Starship.Starship -s -v $version -u $env:URL_64 $env:URL_32 -t ${{ secrets.GH_PAT }}
choco_update:
name: Update Chocolatey Package
runs-on: windows-latest
needs: [release_please, github_build, upload_artifacts]
if: ${{ needs.release_please.outputs.release_created == 'true' }}
steps:
- name: Setup | Checkout
uses: actions/checkout@v3
- name: Setup | Artifacts
uses: actions/download-artifact@v3
- run: pwsh ./install/windows/choco/update.ps1
env:
STARSHIP_VERSION: ${{ needs.release_please.outputs.tag_name }}
PUSH_TOKEN: ${{ secrets.CHOCO_TOKEN }}
merge_crowdin_pr:
name: Merge Crowdin PR
runs-on: ubuntu-latest

View File

@ -227,6 +227,20 @@ jobs:
command: wix
args: --dbg-build -v --nocapture -I install/windows/main.wxs
- name: Build | Chocolatey Package [Windows]
continue-on-error: true
if: matrix.os == 'windows-latest' && matrix.rust == 'stable'
run: |
# Setup dummy release artifacts
New-Item -ItemType Directory -Path ./starship-x86_64-pc-windows-msvc
New-Item -ItemType Directory -Path ./starship-i686-pc-windows-msvc
New-Item -ItemType File -Path ./starship-x86_64-pc-windows-msvc/starship-x86_64-pc-windows-msvc.zip
New-Item -ItemType File -Path ./starship-i686-pc-windows-msvc/starship-i686-pc-windows-msvc.zip
# Build package
pwsh ./install/windows/choco/update.ps1
env:
STARSHIP_VERSION: v1.2.3
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
if: github.repository == 'starship/starship'

104
Cargo.lock generated
View File

@ -169,17 +169,6 @@ dependencies = [
"num-traits",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.1.0"
@ -326,14 +315,14 @@ dependencies = [
[[package]]
name = "clap"
version = "4.0.26"
version = "4.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2148adefda54e14492fb9bddcc600b4344c5d1a3123bd666dcb939c6f0e0e57e"
checksum = "0acbd8d28a0a60d7108d7ae850af6ba34cf2d1257fc646980e5f97ce14275966"
dependencies = [
"atty",
"bitflags",
"clap_derive",
"clap_lex",
"is-terminal",
"once_cell",
"strsim",
"termcolor",
@ -343,9 +332,9 @@ dependencies = [
[[package]]
name = "clap_complete"
version = "4.0.5"
version = "4.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96b0fba905b035a30d25c1b585bf1171690712fbb0ad3ac47214963aa4acc36c"
checksum = "b7b3c9eae0de7bf8e3f904a5e40612b21fb2e2e566456d177809a48b892d24da"
dependencies = [
"clap",
]
@ -1444,6 +1433,15 @@ dependencies = [
"libc",
]
[[package]]
name = "hermit-abi"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
dependencies = [
"libc",
]
[[package]]
name = "hex"
version = "0.4.3"
@ -1535,6 +1533,28 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ea37f355c05dde75b84bba2d767906ad522e97cd9e2eef2be7a4ab7fb442c06"
[[package]]
name = "io-lifetimes"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7d367024b3f3414d8e01f437f704f41a9f64ab36f9067fa73e526ad4c763c87"
dependencies = [
"libc",
"windows-sys 0.42.0",
]
[[package]]
name = "is-terminal"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aae5bc6e2eb41c9def29a3e0f1306382807764b9b53112030eff57435667352d"
dependencies = [
"hermit-abi 0.2.6",
"io-lifetimes 1.0.1",
"rustix 0.36.3",
"windows-sys 0.42.0",
]
[[package]]
name = "is_debug"
version = "1.0.1"
@ -1579,9 +1599,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "libc"
version = "0.2.132"
version = "0.2.137"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5"
checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
[[package]]
name = "libz-ng-sys"
@ -1616,6 +1636,12 @@ version = "0.0.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d"
[[package]]
name = "linux-raw-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f"
[[package]]
name = "local_ipaddress"
version = "0.1.3"
@ -1861,7 +1887,7 @@ version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
dependencies = [
"hermit-abi",
"hermit-abi 0.1.19",
"libc",
]
@ -2036,9 +2062,9 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pest"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a528564cc62c19a7acac4d81e01f39e53e25e17b934878f4c6d25cc2836e62f8"
checksum = "5f400b0f7905bf702f9f3dc3df5a121b16c54e9e8012c082905fdf09a931861a"
dependencies = [
"thiserror",
"ucd-trie",
@ -2046,9 +2072,9 @@ dependencies = [
[[package]]
name = "pest_derive"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5fd9bc6500181952d34bd0b2b0163a54d794227b498be0b7afa7698d0a7b18f"
checksum = "423c2ba011d6e27b02b482a3707c773d19aec65cc024637aec44e19652e66f63"
dependencies = [
"pest",
"pest_generator",
@ -2056,9 +2082,9 @@ dependencies = [
[[package]]
name = "pest_generator"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2610d5ac5156217b4ff8e46ddcef7cdf44b273da2ac5bca2ecbfa86a330e7c4"
checksum = "3e64e6c2c85031c02fdbd9e5c72845445ca0a724d419aa0bc068ac620c9935c1"
dependencies = [
"pest",
"pest_meta",
@ -2069,9 +2095,9 @@ dependencies = [
[[package]]
name = "pest_meta"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "824749bf7e21dd66b36fbe26b3f45c713879cccd4a009a917ab8e045ca8246fe"
checksum = "57959b91f0a133f89a68be874a5c88ed689c19cd729ecdb5d762ebf16c64d662"
dependencies = [
"once_cell",
"pest",
@ -2457,12 +2483,26 @@ checksum = "72c825b8aa8010eb9ee99b75f05e10180b9278d161583034d7574c9d617aeada"
dependencies = [
"bitflags",
"errno",
"io-lifetimes",
"io-lifetimes 0.7.3",
"libc",
"linux-raw-sys",
"linux-raw-sys 0.0.46",
"windows-sys 0.36.1",
]
[[package]]
name = "rustix"
version = "0.36.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b1fbb4dfc4eb1d390c02df47760bb19a84bb80b301ecc947ab5406394d8223e"
dependencies = [
"bitflags",
"errno",
"io-lifetimes 1.0.1",
"libc",
"linux-raw-sys 0.1.3",
"windows-sys 0.42.0",
]
[[package]]
name = "rustversion"
version = "1.0.9"
@ -2654,9 +2694,9 @@ dependencies = [
[[package]]
name = "shadow-rs"
version = "0.17.1"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f679e51942d1dbd5a7ebfb442d30855fa951152512176bb21f5f55ed0fd2f53b"
checksum = "8bf8e33626554dd9027d240a3b91d73be43054c0f9ef645cdf0483b6ebe822fa"
dependencies = [
"const_format",
"is_debug",
@ -2912,7 +2952,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40ca90c434fd12083d1a6bdcbe9f92a14f96c8a1ba600ba451734ac334521f7a"
dependencies = [
"rustix",
"rustix 0.35.9",
"windows-sys 0.42.0",
]

View File

@ -43,8 +43,8 @@ git-repository-faster = ["git-features/zlib-stock", "git-repository/fast-sha1"]
[dependencies]
chrono = { version = "0.4.23", features = ["clock", "std"] }
clap = { version = "4.0.26", features = ["derive", "cargo", "unicode"] }
clap_complete = "4.0.5"
clap = { version = "4.0.27", features = ["derive", "cargo", "unicode"] }
clap_complete = "4.0.6"
dirs-next = "2.0.0"
dunce = "1.0.3"
gethostname = "0.4.0"
@ -63,8 +63,8 @@ open = "3.2.0"
# update os module config and tests when upgrading os_info
os_info = "3.5.1"
path-slash = "0.2.1"
pest = "2.4.1"
pest_derive = "2.4.1"
pest = "2.5.0"
pest_derive = "2.5.0"
quick-xml = "0.26.0"
rand = "0.8.5"
rayon = "1.6.0"
@ -74,7 +74,7 @@ semver = "1.0.14"
serde = { version = "1.0.147", features = ["derive"] }
serde_json = "1.0.89"
sha-1 = "0.10.0"
shadow-rs = { version = "0.17.1", default-features = false }
shadow-rs = { version = "0.18.0", default-features = false }
# battery is optional (on by default) because the crate doesn't currently build for Termux
# see: https://github.com/svartalf/rust-battery/issues/33
starship-battery = { version = "0.7.9", optional = true }
@ -118,7 +118,7 @@ features = [
nix = { version = "0.25.0", default-features = false, features = ["feature", "fs", "user"] }
[build-dependencies]
shadow-rs = { version = "0.17.1", default-features = false }
shadow-rs = { version = "0.18.0", default-features = false }
dunce = "1.0.3"
[target.'cfg(windows)'.build-dependencies]

View File

@ -583,7 +583,7 @@ By default the module will be shown if any of the following conditions are met:
| ------------------- | ------------------------------------ | ------------------------------------------------------------------------- |
| `format` | `'via [$symbol($version )]($style)'` | The format for the module. |
| `version_format` | `'v${raw}'` | The version format. Available vars are `raw`, `major`, `minor`, & `patch` |
| `symbol` | `'🍞 '` | A format string representing the symbol of Node.js. |
| `symbol` | `'🍞 '` | A format string representing the symbol of Bun. |
| `detect_extensions` | `[]` | Which extensions should trigger this module. |
| `detect_files` | `['bun.lockb', 'bunfig.toml']` | Which filenames should trigger this module. |
| `detect_folders` | `[]` | Which folders should trigger this module. |

View File

@ -0,0 +1,22 @@
$ErrorActionPreference = 'Stop'
$packageName = 'starship'
$url_x86_64_zip = ''
$url_i686_zip = ''
$checksum_x86_64_zip = ''
$checksum_i686_zip = ''
$checksumType = 'sha256'
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
Install-ChocolateyZipPackage -PackageName "$packageName" `
-Url "$url_i686_zip" `
-Url64 "$url_x86_64_zip" `
-UnzipLocation "$toolsDir" `
-Checksum "$checksum_i686_zip" `
-Checksum64 "$checksum_x86_64_zip" `
-ChecksumType "$checksumType"
# Add to Profile
Write-Host "Add the following to the end of ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 'Invoke-Expression (&starship init powershell)'"

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>starship</id>
<title>Starship</title>
<version>0.0.0.1</version>
<authors>Starship Contributors</authors>
<owners>davidkna,saanuregh</owners>
<summary>The cross-shell prompt for astronauts</summary>
<description>
Starship is the minimal, blazing fast, and extremely customizable prompt for any shell!
Shows the information you need, while staying sleek and minimal.
</description>
<packageSourceUrl>https://github.com/starship/starship/tree/master/install/windows/choco</packageSourceUrl>
<projectUrl>https://starship.rs</projectUrl>
<projectSourceUrl>https://github.com/starship/starship</projectSourceUrl>
<iconUrl>https://starship.rs/icon.png</iconUrl>
<tags>powershell prompt starship pwsh</tags>
<copyright>© 2022 Starship Contributors</copyright>
<licenseUrl>https://github.com/starship/starship/blob/master/LICENSE</licenseUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<releaseNotes></releaseNotes>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>

View File

@ -0,0 +1,57 @@
#!/usr/bin/env pwsh
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version 3.0
if ($null -eq $ENV:STARSHIP_VERSION) {
Write-Host "Version is required"
exit 1
}
$version = "$ENV:STARSHIP_VERSION"
$versionNumber = $version.TrimStart("v")
[xml]$nuspec_file = Get-Content -Path ./install/windows/choco/starship.nuspec
$nuspec_file.package.metadata.version = $versionNumber
$changelog = (Get-Content -Path ./CHANGELOG.md | Out-String)
$nuspec_file.package.metadata.releaseNotes = $changelog
$nuspec_file.Save("./starship.nuspec")
$url_x86_64_zip = "https://github.com/starship/starship/releases/download/$version/starship-x86_64-pc-windows-msvc.zip"
$url_i686_zip = "https://github.com/starship/starship/releases/download/$version/starship-i686-pc-windows-msvc.zip"
$checksum_x86_64_zip = Get-FileHash -Algorithm SHA256 -Path "./starship-x86_64-pc-windows-msvc/starship-x86_64-pc-windows-msvc.zip" | Select-Object -ExpandProperty Hash
$checksum_i686_zip = Get-FileHash -Algorithm SHA256 -Path "./starship-i686-pc-windows-msvc/starship-i686-pc-windows-msvc.zip" | Select-Object -ExpandProperty Hash
if (!(Test-Path "./tools")) {
New-Item -ItemType Directory -Path "./tools"
}
Get-Content ./install/windows/choco/chocolateyInstall.ps1 | ForEach-Object {
if ($_ -match '^\$url_x86_64_zip = (.*)') {
"`$url_x86_64_zip = '$url_x86_64_zip'"
}
elseif ($_ -match '^\$url_i686_zip = (.*)') {
"`$url_i686_zip = '$url_i686_zip'"
}
elseif ($_ -match '^\$checksum_x86_64_zip = (.*)') {
"`$checksum_x86_64_zip = '$checksum_x86_64_zip'"
}
elseif ($_ -match '^\$checksum_i686_zip = (.*)') {
"`$checksum_i686_zip = '$checksum_i686_zip'"
}
else {
$_
}
} | Set-Content ./tools/chocolateyInstall.ps1
choco pack ./starship.nuspec
if ($null -ne $Env:PUSH_TOKEN) {
choco push starship.$versionNumber.nupkg --key $ENV:PUSH_TOKEN
}
else {
Write-Host "No API key provided, skipping push"
}

View File

@ -1,5 +1,6 @@
use crate::shadow;
use crate::utils::{self, exec_cmd};
use nu_ansi_term::Style;
use std::fs;
use std::path::PathBuf;
@ -17,16 +18,33 @@ pub fn create() {
starship_config: get_starship_config(),
};
let link = make_github_issue_link(environment);
let issue_body = get_github_issue_body(&environment);
if open::that(&link).is_ok() {
println!("Take a look at your browser. A GitHub issue has been populated with your configuration.");
println!("If your browser has failed to open, please click this link:\n");
println!(
"{}\n{issue_body}\n\n",
Style::new().bold().paint("Generated bug report:")
);
println!("Forward the pre-filled report above to GitHub in your browser?");
println!("{} To avoid any sensitive data from being exposed, please review the included information before proceeding. Data forwarded to GitHub is subject to GitHub's privacy policy.", Style::new().bold().paint("Warning:"));
println!(
"Enter `{}` to accept, or anything else to decline, and `{}` to confirm your choice:\n",
Style::new().bold().paint("y"),
Style::new().bold().paint("Enter key")
);
let mut input = String::new();
let _ = std::io::stdin().read_line(&mut input);
if input.trim().to_lowercase() == "y" {
let link = make_github_issue_link(&issue_body);
if let Err(e) = open::that(&link) {
println!("Failed to open issue report in your browser: {}", e);
println!("Please copy the above report and open an issue manually, or try opening the following link:\n{link}");
}
} else {
println!("Click this link to create a GitHub issue populated with your configuration:\n");
println!("Will not open an issue in your browser! Please copy the above report and open an issue manually.");
}
println!("{link}");
println!("Thanks for using the Starship bug report tool!");
}
const UNKNOWN_SHELL: &str = "<unknown shell>";
@ -50,7 +68,7 @@ fn get_pkg_branch_tag() -> &'static str {
shadow::BRANCH
}
fn make_github_issue_link(environment: Environment) -> String {
fn get_github_issue_body(environment: &Environment) -> String {
let shell_syntax = match environment.shell_info.name.as_ref() {
"powershell" | "pwsh" => "pwsh",
"fish" => "fish",
@ -60,7 +78,7 @@ fn make_github_issue_link(environment: Environment) -> String {
_ => "bash",
};
let body = urlencoding::encode(&format!("#### Current Behavior
format!("#### Current Behavior
<!-- A clear and concise description of the behavior. -->
#### Expected Behavior
@ -109,13 +127,16 @@ fn make_github_issue_link(environment: Environment) -> String {
build_rust_channel = shadow::BUILD_RUST_CHANNEL,
build_time = shadow::BUILD_TIME,
shell_syntax = shell_syntax,
))
.replace("%20", "+");
)
}
fn make_github_issue_link(body: &str) -> String {
let escaped = urlencoding::encode(body).replace("%20", "+");
format!(
"https://github.com/starship/starship/issues/new?template={}&body={}",
urlencoding::encode("Bug_report.md"),
body
escaped
)
.chars()
.take(GITHUB_CHAR_LIMIT)
@ -259,7 +280,8 @@ mod tests {
starship_config: "No Starship config".to_string(),
};
let link = make_github_issue_link(environment);
let body = get_github_issue_body(&environment);
let link = make_github_issue_link(&body);
assert!(link.contains(clap::crate_version!()));
assert!(link.contains("Linux"));