From 0da913ec7c5d07129457e90bd0a5f274f87ba15b Mon Sep 17 00:00:00 2001 From: Lucas Schwiderski Date: Wed, 28 Aug 2024 11:20:07 +0200 Subject: [PATCH] feat(gitea): Improve error message on invalid config --- images/gitea/src/cmd/package.rs | 7 +++++-- images/gitea/src/cmd/pr.rs | 7 +++++-- images/gitea/src/cmd/status.rs | 5 ++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/images/gitea/src/cmd/package.rs b/images/gitea/src/cmd/package.rs index d82d765..314fbff 100644 --- a/images/gitea/src/cmd/package.rs +++ b/images/gitea/src/cmd/package.rs @@ -5,7 +5,7 @@ use std::path::Path; use cli_table::format::Justify; use cli_table::{Cell, Style, Table}; use color_eyre::eyre::{self, Context}; -use color_eyre::{Help, Report, Result}; +use color_eyre::{Help, Report, Result, SectionExt as _}; use globwalk::{DirEntry, GlobWalkerBuilder}; use reqwest::StatusCode; use serde::{Deserialize, Serialize}; @@ -275,7 +275,10 @@ pub(crate) fn run(action: &Action) -> Result<()> { eyre::bail!("No data received on stdin"); } - serde_json::from_str(&buf).wrap_err("Failed to parse stdin")? + serde_json::from_str(&buf) + .wrap_err("Failed to parse config") + .with_suggestion(|| "Double-check the `source` and `params` sections in your pipeline") + .with_section(|| buf.header("JSON"))? }; match action { diff --git a/images/gitea/src/cmd/pr.rs b/images/gitea/src/cmd/pr.rs index a20f39a..99dc439 100644 --- a/images/gitea/src/cmd/pr.rs +++ b/images/gitea/src/cmd/pr.rs @@ -5,7 +5,7 @@ use std::path::Path; use cli_table::format::Justify; use cli_table::{print_stderr, Cell, Style, Table}; use color_eyre::eyre::{self, Context}; -use color_eyre::Result; +use color_eyre::{Result, Section as _, SectionExt as _}; use reqwest::blocking::Response; use serde::{Deserialize, Serialize}; use serde_json::json; @@ -160,7 +160,10 @@ pub(crate) fn run(action: &Action) -> Result<()> { eyre::bail!("No data received on stdin"); } - serde_json::from_str(&buf).wrap_err("Failed to parse stdin")? + serde_json::from_str(&buf) + .wrap_err("Failed to parse config") + .with_suggestion(|| "Double-check the `source` and `params` sections in your pipeline") + .with_section(|| buf.header("JSON"))? }; match action { diff --git a/images/gitea/src/cmd/status.rs b/images/gitea/src/cmd/status.rs index 5533bae..8c68f09 100644 --- a/images/gitea/src/cmd/status.rs +++ b/images/gitea/src/cmd/status.rs @@ -144,7 +144,10 @@ pub(crate) fn run(action: &Action) -> Result<()> { } serde_json::from_str(&buf) - .wrap_err("Failed to parse stdin") + .wrap_err("Failed to parse config") + .with_suggestion(|| { + "Double-check the `source` and `params` sections in your pipeline" + }) .with_section(|| buf.header("JSON"))? };