Skip to content

Commit

Permalink
added RTX_USE_VERSION_HOST (#1138)
Browse files Browse the repository at this point in the history
can be used to bypass it
  • Loading branch information
jdx authored Dec 11, 2023
1 parent efe4be5 commit 42ba8b9
Show file tree
Hide file tree
Showing 11 changed files with 36 additions and 26 deletions.
2 changes: 2 additions & 0 deletions src/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ pub static RTX_ALL_COMPILE: Lazy<bool> = Lazy::new(|| match var_option_bool("RTX
#[allow(unused)]
pub static GITHUB_API_TOKEN: Lazy<Option<String>> = Lazy::new(|| var("GITHUB_API_TOKEN").ok());

pub static RTX_USE_VERSIONS_HOST: Lazy<bool> = Lazy::new(|| !var_is_false("RTX_USE_VERSIONS_HOST"));

// python
pub static RTX_PYENV_REPO: Lazy<String> = Lazy::new(|| {
var("RTX_PYENV_REPO").unwrap_or_else(|_| "https://github.com/pyenv/pyenv.git".into())
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/core/bun.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ impl BunPlugin {

fn fetch_remote_versions(&self) -> Result<Vec<String>> {
match self.core.fetch_remote_versions_from_rtx() {
Ok(versions) => return Ok(versions),
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
let releases: Vec<GithubRelease> =
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/core/deno.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ impl DenoPlugin {

fn fetch_remote_versions(&self) -> Result<Vec<String>> {
match self.core.fetch_remote_versions_from_rtx() {
Ok(versions) => return Ok(versions),
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
let releases: Vec<GithubRelease> =
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/core/go.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ impl GoPlugin {

fn fetch_remote_versions(&self) -> Result<Vec<String>> {
match self.core.fetch_remote_versions_from_rtx() {
Ok(versions) => return Ok(versions),
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
CorePlugin::run_fetch_task_with_timeout(move || {
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/core/java.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ impl JavaPlugin {

fn fetch_remote_versions(&self) -> Result<Vec<String>> {
match self.core.fetch_remote_versions_from_rtx() {
Ok(versions) => return Ok(versions),
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
let versions = self
Expand Down
10 changes: 7 additions & 3 deletions src/plugins/core/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use std::path::PathBuf;
use std::sync::Arc;

use color_eyre::eyre::Result;
use itertools::Itertools;
use once_cell::sync::Lazy;

pub use python::PythonPlugin;
Expand Down Expand Up @@ -93,13 +94,16 @@ impl CorePlugin {
run_with_timeout(f, *env::RTX_FETCH_REMOTE_VERSIONS_TIMEOUT)
}

pub fn fetch_remote_versions_from_rtx(&self) -> Result<Vec<String>> {
pub fn fetch_remote_versions_from_rtx(&self) -> Result<Option<Vec<String>>> {
if !*env::RTX_USE_VERSIONS_HOST {
return Ok(None);
}
let versions = HTTP
.get_text(format!("http://rtx-versions.jdx.dev/{}", &self.name))?
.lines()
.map(|v| v.trim().to_string())
.filter(|v| !v.is_empty())
.collect();
Ok(versions)
.collect_vec();
Ok(Some(versions))
}
}
24 changes: 7 additions & 17 deletions src/plugins/core/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ impl NodePlugin {
let node_url_overridden = env::var("RTX_NODE_MIRROR_URL")
.or(env::var("NODE_BUILD_MIRROR_URL"))
.is_ok();
if node_url_overridden {
self.fetch_remote_versions_from_node(&RTX_NODE_MIRROR_URL)
} else {
self.fetch_remote_versions_from_rtx().or_else(|e| {
warn!("failed to fetch remote versions from rtx: {}", e);
self.fetch_remote_versions_from_node(&RTX_NODE_MIRROR_URL)
})
if !node_url_overridden {
match self.core.fetch_remote_versions_from_rtx() {
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
}
self.fetch_remote_versions_from_node(&RTX_NODE_MIRROR_URL)
}
fn fetch_remote_versions_from_node(&self, base: &Url) -> Result<Vec<String>> {
let versions = self
Expand All @@ -60,16 +60,6 @@ impl NodePlugin {
.collect();
Ok(versions)
}
fn fetch_remote_versions_from_rtx(&self) -> Result<Vec<String>> {
let versions = self
.http
.get_text("http://rtx-versions.jdx.dev/node")?
.lines()
.map(|v| v.trim().to_string())
.filter(|v| !v.is_empty())
.collect();
Ok(versions)
}

fn install_precompiled(&self, ctx: &InstallContext, opts: &BuildOpts) -> Result<()> {
match self.fetch_tarball(
Expand Down
5 changes: 5 additions & 0 deletions src/plugins/core/node_build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ impl NodeBuildPlugin {
}

fn fetch_remote_versions(&self) -> Result<Vec<String>> {
match self.core.fetch_remote_versions_from_rtx() {
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
self.install_or_update_node_build()?;
let node_build_bin = self.node_build_bin();
CorePlugin::run_fetch_task_with_timeout(move || {
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/core/python.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ impl PythonPlugin {

fn fetch_remote_versions(&self) -> Result<Vec<String>> {
match self.core.fetch_remote_versions_from_rtx() {
Ok(versions) => return Ok(versions),
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
self.install_or_update_python_build()?;
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/core/ruby.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ impl RubyPlugin {

fn fetch_remote_versions(&self) -> Result<Vec<String>> {
match self.core.fetch_remote_versions_from_rtx() {
Ok(versions) => return Ok(versions),
Ok(Some(versions)) => return Ok(versions),
Ok(None) => {}
Err(e) => warn!("failed to fetch remote versions: {}", e),
}
self.update_build_tool()?;
Expand Down
3 changes: 3 additions & 0 deletions src/plugins/external_plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@ impl ExternalPlugin {
}

fn fetch_versions(&self) -> Result<Option<Vec<String>>> {
if !*env::RTX_USE_VERSIONS_HOST {
return Ok(None);
}
// ensure that we're using a default shorthand plugin
let git = Git::new(self.plugin_path.to_path_buf());
if git.get_remote_url()
Expand Down

0 comments on commit 42ba8b9

Please sign in to comment.