build: Add additional build information to version and bug report (#2124)
* fix https://github.com/starship/starship/issues * cargo fmt * upgrade shadow-rs 0.5.6 * upgrade shadow-rs * update * complet bug_report infomation * cargo fmt * upgrade shadow-rs 0.5.11 * upgrade shadow-rs 0.5.14 * fixed:https://github.com/starship/starship/pull/2124#discussion_r559076634 fixed:https://github.com/starship/starship/pull/2124#discussion_r559076918 * add long_version * upgrade shadow-rs 0.5.19; adaptate clap version() use by shadow-rs clap_version() * fix unit test error * fix test error * upgrade shadow-rs 0.5.22 * upgrade shadow-rs 0.5.23
This commit is contained in:
parent
5471007db9
commit
bcaf835321
|
@ -1262,6 +1262,16 @@ dependencies = [
|
||||||
"opaque-debug",
|
"opaque-debug",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "shadow-rs"
|
||||||
|
version = "0.5.23"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bb054640a4d209cbfcc56fa1d9f4a229d4aef3f9da130e7f5698aba36db1c6ce"
|
||||||
|
dependencies = [
|
||||||
|
"chrono",
|
||||||
|
"git2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "shell-words"
|
name = "shell-words"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -1301,6 +1311,7 @@ dependencies = [
|
||||||
"semver",
|
"semver",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"shadow-rs",
|
||||||
"shell-words",
|
"shell-words",
|
||||||
"starship_module_config_derive",
|
"starship_module_config_derive",
|
||||||
"sys-info",
|
"sys-info",
|
||||||
|
|
|
@ -10,6 +10,7 @@ readme = "README.md"
|
||||||
license = "ISC"
|
license = "ISC"
|
||||||
keywords = ["prompt", "shell", "bash", "fish", "zsh"]
|
keywords = ["prompt", "shell", "bash", "fish", "zsh"]
|
||||||
categories = ["command-line-utilities"]
|
categories = ["command-line-utilities"]
|
||||||
|
build = "build.rs"
|
||||||
description = """
|
description = """
|
||||||
The minimal, blazing-fast, and infinitely customizable prompt for any shell! ☄🌌️
|
The minimal, blazing-fast, and infinitely customizable prompt for any shell! ☄🌌️
|
||||||
"""
|
"""
|
||||||
|
@ -64,6 +65,8 @@ indexmap = "1.6.1"
|
||||||
notify-rust = { version = "4.2.2", optional = true }
|
notify-rust = { version = "4.2.2", optional = true }
|
||||||
semver = "0.11.0"
|
semver = "0.11.0"
|
||||||
which = "4.0.2"
|
which = "4.0.2"
|
||||||
|
shadow-rs = "0.5.23"
|
||||||
|
|
||||||
process_control = { version = "3.0.0", features = ["crossbeam-channel"] }
|
process_control = { version = "3.0.0", features = ["crossbeam-channel"] }
|
||||||
|
|
||||||
# Optional/http:
|
# Optional/http:
|
||||||
|
@ -83,6 +86,9 @@ winapi = { version = "0.3.9", features = [
|
||||||
[target.'cfg(not(windows))'.dependencies]
|
[target.'cfg(not(windows))'.dependencies]
|
||||||
nix = "0.19.1"
|
nix = "0.19.1"
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
shadow-rs = "0.5.23"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3.2.0"
|
tempfile = "3.2.0"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() -> shadow_rs::SdResult<()> {
|
||||||
|
shadow_rs::new()
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
|
use crate::shadow;
|
||||||
use crate::utils::exec_cmd;
|
use crate::utils::exec_cmd;
|
||||||
|
|
||||||
use clap::crate_version;
|
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ use std::path::PathBuf;
|
||||||
const GIT_IO_BASE_URL: &str = "https://git.io/";
|
const GIT_IO_BASE_URL: &str = "https://git.io/";
|
||||||
|
|
||||||
pub fn create() {
|
pub fn create() {
|
||||||
|
println!("{}\n", shadow::version().trim());
|
||||||
let os_info = os_info::get();
|
let os_info = os_info::get();
|
||||||
|
|
||||||
let environment = Environment {
|
let environment = Environment {
|
||||||
|
@ -18,7 +19,7 @@ pub fn create() {
|
||||||
starship_config: get_starship_config(),
|
starship_config: get_starship_config(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let link = make_github_issue_link(crate_version!(), environment);
|
let link = make_github_issue_link(environment);
|
||||||
let short_link = shorten_link(&link);
|
let short_link = shorten_link(&link);
|
||||||
|
|
||||||
if open::that(&link)
|
if open::that(&link)
|
||||||
|
@ -63,7 +64,14 @@ struct Environment {
|
||||||
starship_config: String,
|
starship_config: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn make_github_issue_link(starship_version: &str, environment: Environment) -> String {
|
fn get_pkg_branch_tag() -> &'static str {
|
||||||
|
if !shadow::TAG.is_empty() {
|
||||||
|
return shadow::TAG;
|
||||||
|
}
|
||||||
|
shadow::BRANCH
|
||||||
|
}
|
||||||
|
|
||||||
|
fn make_github_issue_link(environment: Environment) -> String {
|
||||||
let body = urlencoding::encode(&format!("#### Current Behavior
|
let body = urlencoding::encode(&format!("#### Current Behavior
|
||||||
<!-- A clear and concise description of the behavior. -->
|
<!-- A clear and concise description of the behavior. -->
|
||||||
|
|
||||||
|
@ -81,7 +89,11 @@ fn make_github_issue_link(starship_version: &str, environment: Environment) -> S
|
||||||
- {shell_name} version: {shell_version}
|
- {shell_name} version: {shell_version}
|
||||||
- Operating system: {os_name} {os_version}
|
- Operating system: {os_name} {os_version}
|
||||||
- Terminal emulator: {terminal_name} {terminal_version}
|
- Terminal emulator: {terminal_name} {terminal_version}
|
||||||
|
- Git Commit Hash: {git_commit_hash}
|
||||||
|
- Branch/Tag: {pkg_branch_tag}
|
||||||
|
- Rust Version: {rust_version}
|
||||||
|
- Rust channel: {rust_channel} {build_rust_channel}
|
||||||
|
- Build Time: {build_time}
|
||||||
#### Relevant Shell Configuration
|
#### Relevant Shell Configuration
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -93,7 +105,7 @@ fn make_github_issue_link(starship_version: &str, environment: Environment) -> S
|
||||||
```toml
|
```toml
|
||||||
{starship_config}
|
{starship_config}
|
||||||
```",
|
```",
|
||||||
starship_version = starship_version,
|
starship_version = shadow::PKG_VERSION,
|
||||||
shell_name = environment.shell_info.name,
|
shell_name = environment.shell_info.name,
|
||||||
shell_version = environment.shell_info.version,
|
shell_version = environment.shell_info.version,
|
||||||
terminal_name = environment.terminal_info.name,
|
terminal_name = environment.terminal_info.name,
|
||||||
|
@ -102,6 +114,12 @@ fn make_github_issue_link(starship_version: &str, environment: Environment) -> S
|
||||||
os_version = environment.os_version,
|
os_version = environment.os_version,
|
||||||
shell_config = environment.shell_info.config,
|
shell_config = environment.shell_info.config,
|
||||||
starship_config = environment.starship_config,
|
starship_config = environment.starship_config,
|
||||||
|
git_commit_hash = shadow::SHORT_COMMIT,
|
||||||
|
pkg_branch_tag = get_pkg_branch_tag(),
|
||||||
|
rust_version = shadow::RUST_VERSION,
|
||||||
|
rust_channel = shadow::RUST_CHANNEL,
|
||||||
|
build_rust_channel = shadow::BUILD_RUST_CHANNEL,
|
||||||
|
build_time = shadow::BUILD_TIME,
|
||||||
))
|
))
|
||||||
.replace("%20", "+");
|
.replace("%20", "+");
|
||||||
|
|
||||||
|
@ -212,7 +230,6 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_make_github_link() {
|
fn test_make_github_link() {
|
||||||
let starship_version = "0.1.2";
|
|
||||||
let environment = Environment {
|
let environment = Environment {
|
||||||
os_type: os_info::Type::Linux,
|
os_type: os_info::Type::Linux,
|
||||||
os_version: os_info::Version::Semantic(1, 2, 3),
|
os_version: os_info::Version::Semantic(1, 2, 3),
|
||||||
|
@ -228,9 +245,9 @@ mod tests {
|
||||||
starship_config: "No Starship config".to_string(),
|
starship_config: "No Starship config".to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let link = make_github_issue_link(starship_version, environment);
|
let link = make_github_issue_link(environment);
|
||||||
|
|
||||||
assert!(link.contains(starship_version));
|
assert!(link.contains(clap::crate_version!()));
|
||||||
assert!(link.contains("Linux"));
|
assert!(link.contains("Linux"));
|
||||||
assert!(link.contains("1.2.3"));
|
assert!(link.contains("1.2.3"));
|
||||||
assert!(link.contains("test_shell"));
|
assert!(link.contains("test_shell"));
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
#[macro_use]
|
||||||
|
extern crate shadow_rs;
|
||||||
|
|
||||||
|
shadow!(shadow);
|
||||||
|
|
||||||
// Lib is present to allow for benchmarking
|
// Lib is present to allow for benchmarking
|
||||||
pub mod bug_report;
|
pub mod bug_report;
|
||||||
pub mod config;
|
pub mod config;
|
||||||
|
|
16
src/main.rs
16
src/main.rs
|
@ -1,4 +1,4 @@
|
||||||
use clap::{crate_authors, crate_version};
|
use clap::crate_authors;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
|
|
||||||
|
@ -29,11 +29,11 @@ fn main() {
|
||||||
.takes_value(true);
|
.takes_value(true);
|
||||||
|
|
||||||
let shell_arg = Arg::with_name("shell")
|
let shell_arg = Arg::with_name("shell")
|
||||||
.value_name("SHELL")
|
.value_name("SHELL")
|
||||||
.help(
|
.help(
|
||||||
"The name of the currently running shell\nCurrently supported options: bash, zsh, fish, powershell, ion",
|
"The name of the currently running shell\nCurrently supported options: bash, zsh, fish, powershell, ion",
|
||||||
)
|
)
|
||||||
.required(true);
|
.required(true);
|
||||||
|
|
||||||
let cmd_duration_arg = Arg::with_name("cmd_duration")
|
let cmd_duration_arg = Arg::with_name("cmd_duration")
|
||||||
.short("d")
|
.short("d")
|
||||||
|
@ -61,10 +61,12 @@ fn main() {
|
||||||
.long("print-full-init")
|
.long("print-full-init")
|
||||||
.help("Print the main initialization script (as opposed to the init stub)");
|
.help("Print the main initialization script (as opposed to the init stub)");
|
||||||
|
|
||||||
|
let long_version = crate::shadow::clap_version();
|
||||||
let mut app = App::new("starship")
|
let mut app = App::new("starship")
|
||||||
.about("The cross-shell prompt for astronauts. ☄🌌️")
|
.about("The cross-shell prompt for astronauts. ☄🌌️")
|
||||||
// pull the version number from Cargo.toml
|
// pull the version number from Cargo.toml
|
||||||
.version(crate_version!())
|
.version(shadow::PKG_VERSION)
|
||||||
|
.long_version(long_version.as_str())
|
||||||
// pull the authors from Cargo.toml
|
// pull the authors from Cargo.toml
|
||||||
.author(crate_authors!())
|
.author(crate_authors!())
|
||||||
.after_help("https://github.com/starship/starship")
|
.after_help("https://github.com/starship/starship")
|
||||||
|
|
Loading…
Reference in New Issue