(
gsettings: &GlobalSettings,
session: &mut ClientSession,
opts: JobTaskIdsOpts,
)
| 153 | } |
| 154 | |
| 155 | pub async fn output_job_task_ids( |
| 156 | gsettings: &GlobalSettings, |
| 157 | session: &mut ClientSession, |
| 158 | opts: JobTaskIdsOpts, |
| 159 | ) -> anyhow::Result<()> { |
| 160 | let message = FromClientMessage::JobDetail(JobDetailRequest { |
| 161 | job_id_selector: opts.selector, |
| 162 | task_selector: Some(TaskSelector { |
| 163 | id_selector: TaskIdSelector::All, |
| 164 | status_selector: if opts.filter.is_empty() { |
| 165 | TaskStatusSelector::All |
| 166 | } else { |
| 167 | TaskStatusSelector::Specific(opts.filter) |
| 168 | }, |
| 169 | }), |
| 170 | }); |
| 171 | let response = |
| 172 | rpc_call!(session.connection(), message, ToClientMessage::JobDetailResponse(r) => r) |
| 173 | .await?; |
| 174 | let mut job_task_ids: Vec<_> = response |
| 175 | .details |
| 176 | .iter() |
| 177 | .map(|(job_id, detail)| { |
| 178 | Ok(( |
| 179 | *job_id, |
| 180 | IntArray::from_sorted_ids( |
| 181 | detail |
| 182 | .as_ref() |
| 183 | .ok_or_else(|| HqError::GenericError("Job Id not found".to_string()))? |
| 184 | .tasks |
| 185 | .iter() |
| 186 | .map(|(task_id, _)| task_id.as_num()), |
| 187 | ), |
| 188 | )) |
| 189 | }) |
| 190 | .collect::<crate::Result<Vec<(JobId, IntArray)>>>()?; |
| 191 | job_task_ids.sort_unstable_by_key(|x| x.0); |
| 192 | gsettings.printer().print_task_ids(job_task_ids); |
| 193 | Ok(()) |
| 194 | } |
| 195 | |
| 196 | pub async fn output_job_task_explain( |
| 197 | gsettings: &GlobalSettings, |
no test coverage detected