Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3953fed
cd into the dir where lila-docker is located
Carbrex Feb 19, 2024
889e174
Trying to add lila PR checkout functionality in setup() function
Carbrex Feb 23, 2024
f61b58c
Try fixing expected `Result<(), Error>`, found `()` error
Carbrex Feb 23, 2024
96b3b88
Remove semicolon to fix another return error
Carbrex Feb 23, 2024
4a91d8b
Remove return Ok();
Carbrex Feb 23, 2024
8f7fdd6
Move remaining part to else in main.rs setup
Carbrex Feb 23, 2024
9832e72
Add environment variable printing and handle missing PR number
Carbrex Feb 23, 2024
e28d292
Refactor setup function to handle missing environment variable GITPOD…
Carbrex Feb 23, 2024
f3319b6
Get Environment variable from nested Gitpod_workspace_context
Carbrex Feb 23, 2024
3e03100
Add serde_json to dependencies
Carbrex Feb 23, 2024
cd18d57
Try fixing match error
Carbrex Feb 23, 2024
07b6e3a
Merge branch 'patch-4' into patch-3
Carbrex Feb 24, 2024
bdb4047
Add print statements to check where the functionality broke
Carbrex Feb 24, 2024
4663b01
Update workspace context print statement
Carbrex Feb 24, 2024
c01dac7
Update lila_pr_no type to String
Carbrex Feb 24, 2024
14ae4c6
Remove debug print statements in main.rs
Carbrex Feb 24, 2024
b583096
Refactor load_lila_pr_no function
Carbrex Feb 24, 2024
177f296
Add return
Carbrex Feb 24, 2024
436ebff
Merge patch-4 to patch-3
Carbrex Feb 24, 2024
99a8c78
Add gitpod_checkout_pr function to load and checkout a specific pull …
Carbrex Feb 24, 2024
7721aaf
Merge changes
Carbrex Feb 24, 2024
8e456fe
Maybe fix stack overflow?
Carbrex Feb 24, 2024
18f7cb5
Refactor loading LILA PR number in Gitpod struct
Carbrex Feb 24, 2024
1920118
Remove load_lila_pr fn
Carbrex Feb 24, 2024
268334d
Clipy fix
Carbrex Feb 24, 2024
731b34b
Fix formatting
Carbrex Feb 24, 2024
ca50e1f
Fix more formatting
Carbrex Feb 24, 2024
f4dc250
Merge branch 'patch-4' into merge-patch-3
Carbrex Feb 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion command/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ cliclack = "0.1.6"
local-ip-address = "0.5.6"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.64"
toml = "0.8.8"
toml = "0.8.8"
52 changes: 30 additions & 22 deletions command/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

use cliclack::{
confirm, input, intro,
log::{self, info, remark},
log::{self, info},
multiselect, note, outro, select, spinner,
};
use local_ip_address::local_ip;
Expand Down Expand Up @@ -134,10 +134,12 @@ impl Repository {
}
}

#[allow(dead_code)]
struct Gitpod {
domain: String,
url: String,
workspace_context: GitpodWorkspaceContext,
lila_pr_no: String,
}

#[derive(Debug, Default, Deserialize, PartialEq)]
Expand All @@ -158,17 +160,39 @@ impl Gitpod {
let workspace_context = std::env::var("GITPOD_WORKSPACE_CONTEXT")
.expect("Missing env GITPOD_WORKSPACE_CONTEXT");

let pr_no = std::env::var("GITPOD_WORKSPACE_CONTEXT")
.ok()
.and_then(|context| {
serde_json::from_str::<GitpodWorkspaceContext>(&context)
.expect("Failed to parse GITPOD_WORKSPACE_CONTEXT as JSON")
.envvars
.unwrap_or_default()
.iter()
.find(|envvar| envvar.name == "LILA_PR")
.map(|envvar| envvar.value.clone())
})
.unwrap_or_default();

Self {
domain: workspace_url.replace("https://", "8080-"),
url: workspace_url.replace("https://", "https://8080-"),
workspace_context: serde_json::from_str(&workspace_context)
.expect("Failed to parse GITPOD_WORKSPACE_CONTEXT as JSON"),
lila_pr_no: pr_no,
}
}

fn is_host() -> bool {
std::env::var("GITPOD_WORKSPACE_URL").is_ok()
}

fn has_lila_pr_no(self) -> bool {
!self.lila_pr_no.is_empty()
}

fn get_lila_pr_no(self) -> String {
self.lila_pr_no
}
}

#[derive(Default, Clone, Eq, PartialEq, Debug)]
Expand Down Expand Up @@ -292,14 +316,14 @@ fn setup(mut config: Config) -> std::io::Result<()> {
assert!(
output.status.success(),
"Failed to clone repo: {} - {output:?}",
repo.full_name(),
repo.full_name()
);

progress.stop(format!("✓ Cloned {}", repo.full_name()));
}

if Gitpod::is_host() {
gitpod_checkout_pr()?;
if Gitpod::is_host() && Gitpod::has_lila_pr_no(Gitpod::load()) {
gitpod_checkout_pr();
}

outro("Starting services...")
Expand Down Expand Up @@ -334,23 +358,8 @@ fn create_placeholder_dirs() {
});
}

fn gitpod_checkout_pr() -> std::io::Result<()> {
let gitpod = Gitpod::load();

let Some(pr_no) = gitpod
.workspace_context
.envvars
.as_ref()
.and_then(|envvars| {
envvars
.iter()
.find(|envvar| envvar.name == "LILA_PR")
.map(|envvar| envvar.value.clone())
})
else {
return remark("No lila PR specified, using default branch");
};

fn gitpod_checkout_pr() {
let pr_no = Gitpod::get_lila_pr_no(Gitpod::load());
let pr_url = format!("https://github.com/lichess-org/lila/pull/{pr_no}");

let mut progress = spinner();
Expand Down Expand Up @@ -383,7 +392,6 @@ fn gitpod_checkout_pr() -> std::io::Result<()> {
);

progress.stop(format!("✓ Checked out PR #{pr_no} - {pr_url}"));
Ok(())
}

#[allow(clippy::too_many_lines)]
Expand Down