diff --git a/src/config.rs b/src/config.rs index 1cd7b0d4..42940621 100644 --- a/src/config.rs +++ b/src/config.rs @@ -88,6 +88,7 @@ pub enum Step { Gcloud, Gem, GitRepos, + Go, Haxelib, GnomeShellExtensions, HomeManager, diff --git a/src/main.rs b/src/main.rs index 8cb21568..aa30c624 100644 --- a/src/main.rs +++ b/src/main.rs @@ -291,6 +291,7 @@ fn run() -> Result<()> { runner.execute(Step::Choosenim, "choosenim", || generic::run_choosenim(&ctx))?; runner.execute(Step::Cargo, "cargo", || generic::run_cargo_update(&ctx))?; runner.execute(Step::Flutter, "Flutter", || generic::run_flutter_upgrade(run_type))?; + runner.execute(Step::Go, "Go", || generic::run_go(run_type))?; runner.execute(Step::Emacs, "Emacs", || emacs.upgrade(&ctx))?; runner.execute(Step::Opam, "opam", || generic::run_opam_update(run_type))?; runner.execute(Step::Vcpkg, "vcpkg", || generic::run_vcpkg_update(run_type))?; diff --git a/src/steps/generic.rs b/src/steps/generic.rs index a68b07fa..20aa4a26 100644 --- a/src/steps/generic.rs +++ b/src/steps/generic.rs @@ -63,6 +63,19 @@ pub fn run_flutter_upgrade(run_type: RunType) -> Result<()> { run_type.execute(&flutter).arg("upgrade").check_run() } +pub fn run_go(run_type: RunType) -> Result<()> { + let go = utils::require("go")?; + let gopath = run_type.execute(&go).args(&["env", "GOPATH"]).check_output()?; + + let go_global_update = utils::require("go-global-update") + .unwrap_or_else(|_| PathBuf::from(gopath).join("bin/go-global-update")) + .require()?; + + print_separator("Go"); + + run_type.execute(&go_global_update).check_run() +} + pub fn run_gem(base_dirs: &BaseDirs, run_type: RunType) -> Result<()> { let gem = utils::require("gem")?; base_dirs.home_dir().join(".gem").require()?;