Add "open" crate and automate browser opening for work packages
Added the "open" crate to Cargo.toml and corresponding dependencies to Cargo.lock. Updated the code to automatically open the newly created work package in the browser and handle potential failure cases gracefully.
This commit is contained in:
parent
7c1cdb64ec
commit
9f544c66c2
3
.changes/unreleased/Added-20241117-212435.yaml
Normal file
3
.changes/unreleased/Added-20241117-212435.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
kind: Added
|
||||||
|
body: Open the newly create work package after the wp has been created
|
||||||
|
time: 2024-11-17T21:24:35.066038354+01:00
|
37
Cargo.lock
generated
37
Cargo.lock
generated
@ -111,6 +111,7 @@ dependencies = [
|
|||||||
"clap",
|
"clap",
|
||||||
"gitlab",
|
"gitlab",
|
||||||
"log",
|
"log",
|
||||||
|
"open",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
"simple-home-dir",
|
"simple-home-dir",
|
||||||
@ -738,6 +739,15 @@ version = "2.7.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146"
|
checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "is-docker"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "is-terminal"
|
name = "is-terminal"
|
||||||
version = "0.4.5"
|
version = "0.4.5"
|
||||||
@ -750,6 +760,16 @@ dependencies = [
|
|||||||
"windows-sys 0.45.0",
|
"windows-sys 0.45.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "is-wsl"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
|
||||||
|
dependencies = [
|
||||||
|
"is-docker",
|
||||||
|
"once_cell",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
version = "0.10.5"
|
version = "0.10.5"
|
||||||
@ -909,6 +929,17 @@ version = "1.17.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
|
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "open"
|
||||||
|
version = "5.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3ecd52f0b8d15c40ce4820aa251ed5de032e5d91fab27f7db2f40d42a8bdf69c"
|
||||||
|
dependencies = [
|
||||||
|
"is-wsl",
|
||||||
|
"libc",
|
||||||
|
"pathdiff",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "openssl"
|
name = "openssl"
|
||||||
version = "0.10.62"
|
version = "0.10.62"
|
||||||
@ -959,6 +990,12 @@ version = "6.5.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
|
checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pathdiff"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "percent-encoding"
|
name = "percent-encoding"
|
||||||
version = "2.2.0"
|
version = "2.2.0"
|
||||||
|
@ -15,3 +15,4 @@ url = "2.3.1"
|
|||||||
tokio = { version = "1.0.0", features = ["rt", "rt-multi-thread", "macros"] }
|
tokio = { version = "1.0.0", features = ["rt", "rt-multi-thread", "macros"] }
|
||||||
simple-home-dir = "0.2.1"
|
simple-home-dir = "0.2.1"
|
||||||
log = "0.4.17"
|
log = "0.4.17"
|
||||||
|
open = "5.3.1"
|
||||||
|
@ -32,11 +32,20 @@ impl Issue2WorkActionTrait for GiteaAction {
|
|||||||
.create_work_package(&work_package, &args.project_id)
|
.create_work_package(&work_package, &args.project_id)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
println!(
|
let url = format!(
|
||||||
"new work package created: {:?}, edit at {}/projects/{}/work_packages/{}",
|
"{}/projects/{}/work_packages/{}",
|
||||||
work_package.subject, config.openproject.base_url, args.project_id, work_package.id
|
config.openproject.base_url, args.project_id, work_package.id
|
||||||
);
|
);
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"new work package created: {:?}, edit at {}",
|
||||||
|
work_package.subject, url
|
||||||
|
);
|
||||||
|
|
||||||
|
if let Err(e) = open::that(url) {
|
||||||
|
println!("failed to open work package in browser: {}", e);
|
||||||
|
};
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,7 +56,10 @@ impl Issue2WorkActionTrait for GiteaAction {
|
|||||||
|
|
||||||
fn create_work_package_from_issue(issue: &Issue, assignee: Option<User>) -> WorkPackageWriter {
|
fn create_work_package_from_issue(issue: &Issue, assignee: Option<User>) -> WorkPackageWriter {
|
||||||
WorkPackageWriter {
|
WorkPackageWriter {
|
||||||
subject: format!("{} ({}/{})", issue.title, issue.repository.full_name, issue.number),
|
subject: format!(
|
||||||
|
"{} ({}/{})",
|
||||||
|
issue.title, issue.repository.full_name, issue.number
|
||||||
|
),
|
||||||
work_type: "TASK".into(),
|
work_type: "TASK".into(),
|
||||||
description: crate::openproject::work::DescriptionWriter {
|
description: crate::openproject::work::DescriptionWriter {
|
||||||
format: "markdown".into(),
|
format: "markdown".into(),
|
||||||
|
Loading…
Reference in New Issue
Block a user