aboutsummaryrefslogtreecommitdiffstats
path: root/ui/backend/src/update.rs
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@elliehuxtable.com>2024-06-17 15:36:38 +0100
committerGitHub <noreply@github.com>2024-06-17 15:36:38 +0100
commit88633b8994437180afdd66068cc2c8f02aea1db1 (patch)
tree6df7ead44d8cb3c219dd43d0ee86256f4a6025ef /ui/backend/src/update.rs
parentchore(deps): bump lucide-react from 0.394.0 to 0.395.0 in /ui (#2148) (diff)
downloadatuin-88633b8994437180afdd66068cc2c8f02aea1db1.zip
feat(gui): automatically install and setup the cli/shell (#2139)
* feat(gui): automatically install and setup the cli/shell * add shell config and toasts
Diffstat (limited to 'ui/backend/src/update.rs')
-rw-r--r--ui/backend/src/update.rs51
1 files changed, 0 insertions, 51 deletions
diff --git a/ui/backend/src/update.rs b/ui/backend/src/update.rs
deleted file mode 100644
index d8cd2255..00000000
--- a/ui/backend/src/update.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-// While technically using a "self update" crate, we can actually use the same method
-// for managing a CLI install. Neat!
-// This should still be locked to the same version as the UI. Drift there could lead to issues.
-// In the future we can follow semver and allow for minor version drift.
-
-// If you'd like to follow the conventions of your OS, distro, etc, then I would suggest
-// following the CLI install instructions. This is intended to streamline install UX
-use eyre::{eyre, Result};
-use std::{
- ffi::{OsStr, OsString},
- path::Path,
-};
-
-pub fn install(version: &str, path: &str) -> Result<()> {
- let dir = std::path::PathBuf::from(path);
- std::fs::create_dir_all(path)?;
- let bin = dir.join("atuin");
-
- let releases = self_update::backends::github::ReleaseList::configure()
- .repo_owner("atuinsh")
- .repo_name("atuin")
- .build()?
- .fetch()?;
-
- let release = releases
- .iter()
- .find(|r| r.version == version)
- .ok_or_else(|| eyre!("No release found for version: {}", version))?;
-
- let asset = release
- .asset_for(&self_update::get_target(), None)
- .ok_or_else(|| eyre!("No asset found for target"))?;
-
- let tmp_dir = tempfile::Builder::new().prefix("atuin").tempdir()?;
- let tmp_tarball_path = tmp_dir.path().join(&asset.name);
- let tmp_tarball = std::fs::File::create(&tmp_tarball_path)?;
- println!("{:?}", tmp_tarball_path);
-
- self_update::Download::from_url(&asset.download_url).download_to(&tmp_tarball)?;
-
- let root = asset.name.replace(".tar.gz", "");
- let bin_name = std::path::PathBuf::from(format!("{}/atuin", root,));
-
- self_update::Extract::from_source(&tmp_tarball_path)
- .archive(self_update::ArchiveKind::Tar(Some(
- self_update::Compression::Gz,
- )))
- .extract_file(&bin, &bin_name)?;
-
- Ok(())
-}