Skip to content

Commit bebbb17

Browse files
committed
optimize issue parameters
1 parent 82d5848 commit bebbb17

File tree

3 files changed

+34
-39
lines changed

3 files changed

+34
-39
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
### 1.2.2
2+
- Warn instead of error when issue number file write fails.
3+
- Optimize issue operation customization.
4+
15
### 1.2.1
26
- Enable Github issue state `check` step trigger customization.
37
- Convert Concourse model struct types to Octocrab models.

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM rust:slim-bookworm as build
1+
FROM rust:slim-bookworm AS build
22
WORKDIR /build
33
COPY . .
44
RUN cargo build --release

src/github_issue.rs

Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -158,17 +158,17 @@ impl<'issue> Issue<'issue> {
158158
// createissuebuilder milestone type is impl Into<Option<u64>> so we can build it immediately
159159
let mut issue = issues.create(title).milestone(self.milestone);
160160
// ... with optional parameters
161-
if self.body.is_some() {
162-
issue = issue.body(self.body.unwrap());
161+
if let Some(body) = self.body {
162+
issue = issue.body(body);
163163
}
164-
if self.labels.is_some() {
165-
issue = issue.labels(self.labels.clone());
164+
if let Some(labels) = &self.labels {
165+
issue = issue.labels(labels.clone());
166166
}
167-
if self.assignees.is_some() {
168-
issue = issue.assignees(self.assignees.clone());
167+
if let Some(assignees) = &self.assignees {
168+
issue = issue.assignees(assignees.clone());
169169
}
170-
if self.milestone.is_some() {
171-
issue = issue.milestone(self.milestone);
170+
if let Some(milestone) = self.milestone {
171+
issue = issue.milestone(milestone);
172172
}
173173

174174
log::debug!("creating issue");
@@ -230,23 +230,20 @@ impl<'issue> Issue<'issue> {
230230
&self,
231231
issues: octocrab::issues::IssueHandler<'octo>,
232232
) -> Result<octocrab::models::issues::Issue, &str> {
233-
// declare labels and assignees at higher scope so values are not dropped before borrow is used later in function
234-
let labels: Vec<String>;
235-
236233
// build the issue pages
237234
let mut issue_page = issues.list();
238235
// ... with optional parameters
239-
if self.state.is_some() {
236+
if let Some(state) = self.state {
240237
// convert str state to params state
241-
let params_state = str_to_params_state(self.state.unwrap())?;
238+
let params_state = str_to_params_state(state)?;
242239
issue_page = issue_page.state(params_state);
243240
}
244-
if self.milestone.is_some() {
245-
issue_page = issue_page.milestone(self.milestone.unwrap());
241+
if let Some(milestone) = self.milestone {
242+
issue_page = issue_page.milestone(milestone);
246243
}
247-
if self.assignees.is_some() {
244+
if let Some(assignees) = &self.assignees {
248245
// assert only one assignee in assignees
249-
let num_assignees = self.assignees.as_ref().unwrap().len();
246+
let num_assignees = assignees.len();
250247
if num_assignees != 1 {
251248
log::error!("list action attempted with other than one assignee: {num_assignees}");
252249
log::error!(
@@ -255,12 +252,11 @@ impl<'issue> Issue<'issue> {
255252
return Err("multiple assignees and list action");
256253
}
257254
// assign value of only assignee and use for assignee filter
258-
let assignee = &self.assignees.as_ref().unwrap()[0][..];
255+
let assignee = &assignees[0][..];
259256
issue_page = issue_page.assignee(assignee);
260257
}
261-
if self.labels.is_some() {
262-
labels = self.labels.clone().unwrap();
263-
issue_page = issue_page.labels(&labels[..]);
258+
if let Some(labels) = &self.labels {
259+
issue_page = issue_page.labels(labels);
264260
}
265261

266262
log::debug!("listing issues");
@@ -300,33 +296,28 @@ impl<'issue> Issue<'issue> {
300296
match self.number {
301297
// issue number specified
302298
Some(number) => {
303-
// declare labels and assignees at higher scope so values are not dropped before borrow is used later in function
304-
let (labels, assignees): (Vec<String>, Vec<String>);
305-
306299
// build the issue
307300
let mut issue = issues.update(number);
308301
// ... with optional parameters
309-
if self.title.is_some() {
310-
issue = issue.title(self.title.as_ref().unwrap());
302+
if let Some(title) = self.title {
303+
issue = issue.title(title);
311304
}
312-
if self.body.is_some() {
313-
issue = issue.body(self.body.as_ref().unwrap());
305+
if let Some(body) = self.body {
306+
issue = issue.body(body);
314307
}
315-
if self.labels.is_some() {
316-
labels = self.labels.clone().unwrap();
317-
issue = issue.labels(&labels[..]);
308+
if let Some(labels) = &self.labels {
309+
issue = issue.labels(labels);
318310
}
319-
if self.assignees.is_some() {
320-
assignees = self.assignees.clone().unwrap();
321-
issue = issue.assignees(&assignees[..]);
311+
if let Some(assignees) = &self.assignees {
312+
issue = issue.assignees(assignees);
322313
}
323-
if self.state.is_some() {
314+
if let Some(state) = self.state {
324315
// convert str state to issue_state
325-
let issue_state = str_to_issue_state(self.state.unwrap())?;
316+
let issue_state = str_to_issue_state(state)?;
326317
issue = issue.state(issue_state);
327318
}
328-
if self.milestone.is_some() {
329-
issue = issue.milestone(self.milestone.unwrap());
319+
if let Some(milestone) = self.milestone {
320+
issue = issue.milestone(milestone);
330321
}
331322

332323
log::debug!("updating issue");

0 commit comments

Comments
 (0)