@@ -15,6 +15,7 @@ pub struct SystemSpecs {
memory: u64,
architecture: &'static str,
commit_sha: Option<String>,
+ bundle_type: Option<String>,
gpu_specs: Option<String>,
}
@@ -34,6 +35,7 @@ impl SystemSpecs {
}
_ => None,
};
+ let bundle_type = bundle_type();
let gpu_specs = window.gpu_specs().map(|specs| {
format!(
@@ -47,6 +49,7 @@ impl SystemSpecs {
SystemSpecs {
app_version,
release_channel: release_channel.display_name(),
+ bundle_type,
os_name,
os_version,
memory,
@@ -73,6 +76,7 @@ impl SystemSpecs {
ReleaseChannel::Dev | ReleaseChannel::Nightly => app_commit_sha.map(|sha| sha.full()),
_ => None,
};
+ let bundle_type = bundle_type();
Self {
app_version: app_version.to_string(),
@@ -82,6 +86,7 @@ impl SystemSpecs {
memory,
architecture,
commit_sha,
+ bundle_type,
gpu_specs: try_determine_available_gpus(),
}
}
@@ -91,12 +96,17 @@ impl Display for SystemSpecs {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let os_information = format!("OS: {} {}", self.os_name, self.os_version);
let app_version_information = format!(
- "Zed: v{} ({}) {}",
+ "Zed: v{} ({}) {}{}",
self.app_version,
match &self.commit_sha {
Some(commit_sha) => format!("{} {}", self.release_channel, commit_sha),
None => self.release_channel.to_string(),
},
+ if let Some(bundle_type) = &self.bundle_type {
+ format!("({bundle_type})")
+ } else {
+ "".to_string()
+ },
if cfg!(debug_assertions) {
"(Taylor's Version)"
} else {
@@ -147,3 +157,16 @@ fn try_determine_available_gpus() -> Option<String> {
return None;
}
}
+
+/// Returns value of `ZED_BUNDLE_TYPE` set at compiletime or else at runtime.
+///
+/// The compiletime value is used by flatpak since it doesn't seem to have a way to provide a
+/// runtime environment variable.
+///
+/// The runtime value is used by snap since the Zed snaps use release binaries directly, and so
+/// cannot have this baked in.
+fn bundle_type() -> Option<String> {
+ option_env!("ZED_BUNDLE_TYPE")
+ .map(|bundle_type| bundle_type.to_string())
+ .or_else(|| env::var("ZED_BUNDLE_TYPE").ok())
+}
@@ -10,17 +10,36 @@ Usage: ${0##*/} [options]
Build a release .tar.gz for Linux.
Options:
- -h Display this help and exit.
+ -h, --help Display this help and exit.
+ --flatpak Set ZED_BUNDLE_TYPE=flatpak so that this can be included in system info
"
}
-while getopts 'h' flag
-do
- case "${flag}" in
- h)
- help_info
- exit 0
- ;;
+# Parse all arguments manually
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ -h|--help)
+ help_info
+ exit 0
+ ;;
+ --flatpak)
+ export ZED_BUNDLE_TYPE=flatpak
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ -*)
+ echo "Unknown option: $1" >&2
+ help_info
+ exit 1
+ ;;
+ *)
+ echo "Error: Unexpected argument: $1" >&2
+ help_info
+ exit 1
+ ;;
esac
done