def eval(self): if not self.args.issue_project: raise UsageError( 'project must be specified when creating an issue') if not (self.args.issue_parent or self.args.issue_type): self.args.issue_type = 'bug' if self.args.issue_type and not self.args.issue_type.lower( ) in self.jira.get_issue_types().keys( ) + self.jira.get_subtask_issue_types().keys(): raise UsageError( "invalid issue type: %s (try using jira-cli " "list issue_types or jira-cli list subtask_types)" % self.args.issue_type) if self.args.issue_parent: if not self.args.issue_type: self.args.issue_type = 'sub-task' if not self.args.issue_type in self.jira.get_subtask_issue_types(): raise UsageError( "issues created with parents must be one of {%s}" % ",".join(self.jira.get_subtask_issue_types())) description = self.args.issue_description or get_text_from_editor() print_output( self.jira.format_issue( self.jira.create_issue(self.args.issue_project, self.args.issue_type, self.args.title, description, self.args.issue_priority, self.args.issue_parent)))
def eval(self): extras = {} if self.args.extra_fields: extras = self.extract_extras() if not self.args.issue_project: raise UsageError("project must be specified when creating an issue") if not (self.args.issue_parent or self.args.issue_type): self.args.issue_type = "bug" if ( self.args.issue_type and not self.args.issue_type.lower() in self.jira.get_issue_types().keys() + self.jira.get_subtask_issue_types().keys() ): raise UsageError( "invalid issue type: %s (try using jira-cli " "list issue_types or jira-cli list subtask_types)" % self.args.issue_type ) if self.args.issue_parent: if not self.args.issue_type: self.args.issue_type = "sub-task" if not self.args.issue_type in self.jira.get_subtask_issue_types(): raise UsageError( "issues created with parents must be one of {%s}" % ",".join(self.jira.get_subtask_issue_types()) ) components = {} if self.args.issue_components: valid_components = dict((k["name"], k["id"]) for k in self.jira.get_components(self.args.issue_project)) if not set(self.args.issue_components).issubset(valid_components): raise UsageError( "components for project %s should be one of {%s}" % (self.args.issue_project, ",".join(valid_components)) ) else: components = {k: valid_components[k] for k in self.args.issue_components} description = self.args.issue_description or get_text_from_editor() print_output( self.jira.format_issue( self.jira.create_issue( self.args.issue_project, self.args.issue_type, self.args.title, description, self.args.issue_priority, self.args.issue_parent, self.args.issue_assignee, self.args.issue_reporter, self.args.labels, components, **extras ) ) )
def eval(self): extras = {} if self.args.extra_fields: extras = self.extract_extras() if not self.args.issue_project: raise UsageError( 'project must be specified when creating an issue') if not (self.args.issue_parent or self.args.issue_type): self.args.issue_type = 'bug' if self.args.issue_type and not self.args.issue_type.lower() in list( self.jira.get_issue_types().keys()) + list( self.jira.get_subtask_issue_types().keys()): raise UsageError( "invalid issue type: %s (try using jira-cli " "list issue_types or jira-cli list subtask_types)" % self.args.issue_type) if self.args.issue_parent: if not self.args.issue_type: self.args.issue_type = 'sub-task' if self.args.issue_type not in self.jira.get_subtask_issue_types(): raise UsageError( "issues created with parents must be one of {%s}" % ",".join(self.jira.get_subtask_issue_types())) components = {} if self.args.issue_components: valid_components = dict( (k["name"], k["id"]) for k in self.jira.get_components(self.args.issue_project)) if not set(self.args.issue_components).issubset(valid_components): raise UsageError( "components for project %s should be one of {%s}" % (self.args.issue_project, ",".join(valid_components))) else: components = { k: valid_components[k] for k in self.args.issue_components } if self.args.issue_description is not None: description = self.args.issue_description else: description = get_text_from_editor() print_output( self.jira.format_issue( self.jira.create_issue( self.args.issue_project, self.args.issue_type, self.args.title, description, self.args.issue_priority, self.args.issue_parent, self.args.issue_assignee, self.args.issue_reporter, self.args.labels, components, **extras)))
def eval(self): if self.args.issue_comment: self.jira.add_comment(self.args.issue, get_text_from_editor()) print_output( self.jira.format_issue(self.jira.get_issue(self.args.issue), comments_only=True)) elif self.args.issue_priority: self.jira.update_issue(self.args.issue, priority=self.jira.get_priorities()[ self.args.issue_priority]["id"]) elif self.args.issue_components: components = dict((k["name"], k["id"]) for k in self.jira.get_components( self.args.issue.split("-")[0])) current_components = set( k["name"] for k in self.jira.get_issue(self.args.issue)["components"]) if not set( self.args.issue_components).issubset(current_components): new_components = current_components.union( self.args.issue_components) self.jira.update_issue( self.args.issue, components=[components[k] for k in new_components]) print_output( colorfunc( 'component(s): %s added to %s' % (",".join( self.args.issue_components), self.args.issue), 'green')) else: raise UsageWarning( "component(s):[%s] already exist in %s" % (",".join(self.args.issue_components), self.args.issue)) elif self.args.issue_transition: self.jira.transition_issue(self.args.issue, self.args.issue_transition.lower()) print_output( colorfunc( '%s transitioned to "%s"' % (self.args.issue, self.args.issue_transition), 'green')) elif self.args.issue_assignee: self.jira.update_issue(self.args.issue, assignee=self.args.issue_assignee) print_output( colorfunc( '%s assigned to %s' % (self.args.issue, self.args.issue_assignee), 'green'))
def eval(self): if self.args.issue_comment: self.jira.add_comment(self.args.issue, get_text_from_editor()) print_output(self.jira.format_issue(self.jira.get_issue(self.args.issue), comments_only=True)) elif self.args.issue_priority: self.jira.update_issue( self.args.issue, priority=self.jira.get_priorities()[self.args.issue_priority]["id"] ) elif self.args.issue_components: components = dict( (k["name"], k["id"]) for k in self.jira.get_components( self.args.issue.split("-")[0] ) ) current_components = set(k["name"] for k in self.jira.get_issue(self.args.issue)["components"]) if not set(self.args.issue_components).issubset(current_components): new_components = current_components.union(self.args.issue_components) self.jira.update_issue(self.args.issue, components=[components[k] for k in new_components] ) print_output(colorfunc( 'component(s): %s added to %s' % ( ",".join(self.args.issue_components), self.args.issue), 'green' )) else: raise UsageWarning("component(s):[%s] already exist in %s" % ( ",".join(self.args.issue_components), self.args.issue) ) elif self.args.issue_transition: self.jira.transition_issue(self.args.issue, self.args.issue_transition.lower()) print_output(colorfunc( '%s transitioned to "%s"' % (self.args.issue, self.args.issue_transition), 'green' )) elif self.args.issue_assignee: self.jira.update_issue(self.args.issue, assignee=self.args.issue_assignee) print_output(colorfunc( '%s assigned to %s' % (self.args.issue, self.args.issue_assignee), 'green' ))
def eval(self): if not self.args.issue_project: raise UsageError('project must be specified when creating an issue') if not (self.args.issue_parent or self.args.issue_type): self.args.issue_type = 'bug' if self.args.issue_type and not self.args.issue_type in self.jira.get_issue_types().keys() + self.jira.get_subtask_issue_types().keys(): raise UsageError( "invalid issue type: %s (try using jira-cli " "list issue_types or jira-cli list subtask_types)" % self.args.issue_type ) if self.args.issue_parent: if not self.args.issue_type: self.args.issue_type = 'sub-task' if not self.args.issue_type in self.jira.get_subtask_issue_types(): raise UsageError( "issues created with parents must be one of {%s}" % ",".join(self.jira.get_subtask_issue_types()) ) description = self.args.issue_description or get_text_from_editor() print_output(self.jira.format_issue( self.jira.create_issue(self.args.issue_project, self.args.issue_type, self.args.title, description, self.args.issue_priority, self.args.issue_parent) ))
def eval(self): if self.args.extra_fields: extras = self.extract_extras() self.jira.update_issue(self.args.issue, **extras) if self.args.issue_comment: self.jira.add_comment( self.args.issue, self.args.issue_comment if isinstance( self.args.issue_comment, basestring) else get_text_from_editor()) print_output( self.jira.format_issue(self.jira.get_issue(self.args.issue), comments_only=True)) elif self.args.issue_priority: self.jira.update_issue(self.args.issue, priority=self.jira.get_priorities()[ self.args.issue_priority]["id"]) elif self.args.issue_components: components = dict((k["name"], k["id"]) for k in self.jira.get_components( self.args.issue.split("-")[0])) current_components = set( k["name"] for k in self.jira.get_issue(self.args.issue)["components"]) if not set( self.args.issue_components).issubset(current_components): new_components = current_components.union( self.args.issue_components) self.jira.update_issue( self.args.issue, components=[components[k] for k in new_components]) print_output( colorfunc( 'component(s): %s added to %s' % (",".join( self.args.issue_components), self.args.issue), 'green')) else: raise UsageWarning( "component(s):[%s] already exist in %s" % (",".join(self.args.issue_components), self.args.issue)) elif self.args.issue_transition: self.jira.transition_issue(self.args.issue, self.args.issue_transition.lower(), self.args.resolution) print_output( colorfunc( '%s transitioned to "%s"' % (self.args.issue, self.args.issue_transition), 'green')) elif self.args.issue_assignee: self.jira.assign_issue(self.args.issue, self.args.issue_assignee) print_output( colorfunc( '%s assigned to %s' % (self.args.issue, self.args.issue_assignee), 'green')) elif self.args.labels: self.jira.add_labels(self.args.issue, self.args.labels, True) print_output( colorfunc( '%s labelled with %s' % (self.args.issue, ",".join(self.args.labels)), 'green')) if self.args.affects_version: self.jira.add_versions(self.args.issue, self.args.affects_version, 'affects') print_output( colorfunc( 'Added affected version(s) %s to %s' % (",".join(self.args.affects_version), self.args.issue), 'green')) if self.args.remove_affects_version: self.jira.remove_versions(self.args.issue, self.args.remove_affects_version, 'affects') print_output( colorfunc( 'Removed affected version(s) %s from %s' % (",".join( self.args.remove_affects_version), self.args.issue), 'blue')) if self.args.fix_version: self.jira.add_versions(self.args.issue, self.args.fix_version, 'fix') print_output( colorfunc( 'Added fixed version(s) %s to %s' % (",".join(self.args.fix_version), self.args.issue), 'green')) if self.args.remove_fix_version: self.jira.remove_versions(self.args.issue, self.args.remove_fix_version, 'fix') print_output( colorfunc( 'Removed fixed version(s) %s from %s' % (",".join(self.args.remove_fix_version), self.args.issue), 'blue'))
def eval(self): extras = {} if self.args.extra_fields: try: for item in self.args.extra_fields: key, value = item.split("=") if key in extras: if not isinstance(extras[key], list): v = [extras[key]] extras[key] = v extras[key].append(value) else: extras[key] = value except Exception: raise UsageWarning("Unknown extra fields %s" % (self.args.extra_fields)) self.jira.update_issue( self.args.issue, **extras ) if self.args.issue_comment: self.jira.add_comment( self.args.issue, self.args.issue_comment if isinstance(self.args.issue_comment, basestring) else get_text_from_editor() ) print_output(self.jira.format_issue(self.jira.get_issue(self.args.issue), comments_only=True)) elif self.args.issue_priority: self.jira.update_issue( self.args.issue, priority=self.jira.get_priorities()[self.args.issue_priority]["id"] ) elif self.args.issue_components: components = dict( (k["name"], k["id"]) for k in self.jira.get_components( self.args.issue.split("-")[0] ) ) current_components = set(k["name"] for k in self.jira.get_issue(self.args.issue)["components"]) if not set(self.args.issue_components).issubset(current_components): new_components = current_components.union(self.args.issue_components) self.jira.update_issue(self.args.issue, components=[components[k] for k in new_components] ) print_output(colorfunc( 'component(s): %s added to %s' % ( ",".join(self.args.issue_components), self.args.issue), 'green' )) else: raise UsageWarning("component(s):[%s] already exist in %s" % ( ",".join(self.args.issue_components), self.args.issue) ) elif self.args.issue_transition: self.jira.transition_issue(self.args.issue, self.args.issue_transition.lower()) print_output(colorfunc( '%s transitioned to "%s"' % (self.args.issue, self.args.issue_transition), 'green' )) elif self.args.issue_assignee: self.jira.assign_issue(self.args.issue, self.args.issue_assignee) print_output(colorfunc( '%s assigned to %s' % (self.args.issue, self.args.issue_assignee), 'green' )) elif self.args.labels: self.jira.add_labels(self.args.issue, self.args.labels, True) print_output(colorfunc( '%s labelled with %s' % (self.args.issue, ",".join(self.args.labels)), 'green' )) if self.args.affects_version: self.jira.add_versions(self.args.issue, self.args.affects_version,'affects') print_output(colorfunc( 'Added affected version(s) %s to %s' % (",".join(self.args.affects_version), self.args.issue), 'green' )) if self.args.remove_affects_version: self.jira.remove_versions(self.args.issue, self.args.remove_affects_version,'affects') print_output(colorfunc( 'Removed affected version(s) %s from %s' % (",".join(self.args.remove_affects_version), self.args.issue), 'blue' )) if self.args.fix_version: self.jira.add_versions(self.args.issue, self.args.fix_version,'fix') print_output(colorfunc( 'Added fixed version(s) %s to %s' % (",".join(self.args.fix_version), self.args.issue), 'green' )) if self.args.remove_fix_version: self.jira.remove_versions(self.args.issue, self.args.remove_fix_version,'fix') print_output(colorfunc( 'Removed fixed version(s) %s from %s' % (",".join(self.args.remove_fix_version), self.args.issue), 'blue' ))
def eval(self): if self.args.extra_fields: extras = self.extract_extras() self.jira.update_issue(self.args.issue, **extras) if self.args.issue_comment: self.jira.add_comment( self.args.issue, self.args.issue_comment if isinstance(self.args.issue_comment, basestring) else get_text_from_editor(), ) print_output(self.jira.format_issue(self.jira.get_issue(self.args.issue), comments_only=True)) elif self.args.issue_priority: self.jira.update_issue(self.args.issue, priority=self.jira.get_priorities()[self.args.issue_priority]["id"]) elif self.args.issue_components: components = dict((k["name"], k["id"]) for k in self.jira.get_components(self.args.issue.split("-")[0])) current_components = set(k["name"] for k in self.jira.get_issue(self.args.issue)["components"]) if not set(self.args.issue_components).issubset(current_components): new_components = current_components.union(self.args.issue_components) self.jira.update_issue(self.args.issue, components=[components[k] for k in new_components]) print_output( colorfunc( "component(s): %s added to %s" % (",".join(self.args.issue_components), self.args.issue), "green", ) ) else: raise UsageWarning( "component(s):[%s] already exist in %s" % (",".join(self.args.issue_components), self.args.issue) ) elif self.args.issue_transition: self.jira.transition_issue(self.args.issue, self.args.issue_transition.lower(), self.args.resolution) print_output(colorfunc('%s transitioned to "%s"' % (self.args.issue, self.args.issue_transition), "green")) elif self.args.issue_assignee: self.jira.assign_issue(self.args.issue, self.args.issue_assignee) print_output(colorfunc("%s assigned to %s" % (self.args.issue, self.args.issue_assignee), "green")) elif self.args.labels: self.jira.add_labels(self.args.issue, self.args.labels, True) print_output(colorfunc("%s labelled with %s" % (self.args.issue, ",".join(self.args.labels)), "green")) if self.args.affects_version: self.jira.add_versions(self.args.issue, self.args.affects_version, "affects") print_output( colorfunc( "Added affected version(s) %s to %s" % (",".join(self.args.affects_version), self.args.issue), "green", ) ) if self.args.remove_affects_version: self.jira.remove_versions(self.args.issue, self.args.remove_affects_version, "affects") print_output( colorfunc( "Removed affected version(s) %s from %s" % (",".join(self.args.remove_affects_version), self.args.issue), "blue", ) ) if self.args.fix_version: self.jira.add_versions(self.args.issue, self.args.fix_version, "fix") print_output( colorfunc( "Added fixed version(s) %s to %s" % (",".join(self.args.fix_version), self.args.issue), "green" ) ) if self.args.remove_fix_version: self.jira.remove_versions(self.args.issue, self.args.remove_fix_version, "fix") print_output( colorfunc( "Removed fixed version(s) %s from %s" % (",".join(self.args.remove_fix_version), self.args.issue), "blue", ) )
def eval(self): extras = {} if self.args.extra_fields: try: for item in self.args.extra_fields: key, value = item.split("=") if key in extras: if not isinstance(extras[key], list): v = [extras[key]] extras[key] = v extras[key].append(value) else: extras[key] = value except Exception: raise UsageWarning("Unknown extra fields %s" % (self.args.extra_fields)) self.jira.update_issue( self.args.issue, **extras ) if self.args.issue_comment: self.jira.add_comment( self.args.issue, self.args.issue_comment if isinstance(self.args.issue_comment, basestring) else get_text_from_editor() ) print_output(self.jira.format_issue(self.jira.get_issue(self.args.issue), comments_only=True)) elif self.args.issue_priority: self.jira.update_issue( self.args.issue, priority=self.jira.get_priorities()[self.args.issue_priority]["id"] ) elif self.args.issue_components: components = dict( (k["name"], k["id"]) for k in self.jira.get_components( self.args.issue.split("-")[0] ) ) current_components = set(k["name"] for k in self.jira.get_issue(self.args.issue)["components"]) if not set(self.args.issue_components).issubset(current_components): new_components = current_components.union(self.args.issue_components) self.jira.update_issue(self.args.issue, components=[components[k] for k in new_components] ) print_output(colorfunc( 'component(s): %s added to %s' % ( ",".join(self.args.issue_components), self.args.issue), 'green' )) else: raise UsageWarning("component(s):[%s] already exist in %s" % ( ",".join(self.args.issue_components), self.args.issue) ) elif self.args.issue_transition: self.jira.transition_issue(self.args.issue, self.args.issue_transition.lower()) print_output(colorfunc( '%s transitioned to "%s"' % (self.args.issue, self.args.issue_transition), 'green' )) elif self.args.issue_assignee: self.jira.assign_issue(self.args.issue, self.args.issue_assignee) print_output(colorfunc( '%s assigned to %s' % (self.args.issue, self.args.issue_assignee), 'green' ))