Esempio n. 1
0
    def show(self, number=None, verbose=False, webbrowser=False, **kwargs):
        validate_number(number, example="%s show 1" % get_prog())
        if webbrowser:
            issue_url_template = "https://github.com/%s/%s/issues/%s"
            issue_url = issue_url_template % (self.user, self.repo, number)
            try:
                browser.open(issue_url)
            except:
                print "error: opening page in web browser failed"
            else:
                sys.exit(0)

        issue = self.__get_issue(number)
        if not verbose:
            pprint_issue(issue)
        else:
            printer = Pager()
            lines = format_issue(issue, verbose=True)
            lines.insert(0, " ")
            printer.write("\n".join(lines))
            if issue.get("comments", 0) > 0:
                comments = self.__submit('comments', number)
                comments = get_key(comments, 'comments')
                lines = [] # reset
                total = len(comments)
                for i in range(total):
                    comment = comments[i]
                    lines.extend(format_comment(comment, i+1, total))
                    lines.append(" ")
                printer.write("\n".join(lines))
            printer.close()
Esempio n. 2
0
 def label(self, command, label, number=None, **kwargs):
     validate_number(number, example="%s label %s %s 1" % (get_prog(),
         command, label))
     if command not in ['add', 'remove']:
         msg = "label command should use either 'add' or 'remove'\n"\
             "example: %s label add %s %s" % (get_prog(), label, number)
         raise Exception(msg)
     label = urllib.quote(label)
     label = label.replace(".", "%2E") # this is not done by urllib.quote
     result = self.__submit('label/%s' % command, label, number)
     labels = get_key(result, 'labels')
     if labels:
         print "labels for issue #%s:" % number
         for label in labels:
             print "- %s" % label
     else:
         print "no labels found for issue #%s" % number
Esempio n. 3
0
 def comment(self, number=None, message=None, **kwargs):
     validate_number(number, example="%s comment 1" % get_prog())
     gh_issue = self.__get_issue(number)
     comment = create_comment(issue=gh_issue, text=message)
     post_data = {'comment': comment}
     result = self.__submit('comment', number, data=post_data)
     returned_comment = get_key(result, 'comment')
     if returned_comment:
         print "comment for issue #%s submitted successfully" % number
Esempio n. 4
0
def validate_number(number, example):
    msg = "number required\nexample: %s" % example.replace("%prog", get_prog())
    if not number:
        raise Exception(msg)
    else:
        try:
            int(number)
        except:
            raise Exception(msg)
Esempio n. 5
0
 def edit(self, number=None, **kwargs):
     validate_number(number, example="%s edit 1" % get_prog())
     gh_issue = self.__get_issue(number)
     output = {'title': gh_issue['title'], 'body': gh_issue['body']}
     post_data = create_edit_issue(gh_issue)
     if post_data['title'] == output['title'] and \
             post_data['body'].splitlines() == output['body'].splitlines():
         print "no changes found"
         sys.exit(1)
     result = self.__submit('edit', number, data=post_data)
     issue = get_key(result, 'issue')
     pprint_issue(issue)
Esempio n. 6
0
 def show(self, number=None, webbrowser=False, **kwargs):
     validate_number(number, example="%s show 1" % get_prog())
     if webbrowser:
         issue_url_template = "http://github.com/%s/%s/issues/%s/find"
         issue_url = issue_url_template % (self.user, self.repo, number)
         try:
             browser.open(issue_url)
         except:
             print "error: opening page in web browser failed"
         else:
             sys.exit(0)
     issue = self.__get_issue(number)
     pprint_issue(issue)
Esempio n. 7
0
 def search(self, search_term=None, state='open', verbose=False, **kwargs):
     if not search_term:
         example = "%s search experimental" % get_prog()
         msg = "error: search term required\nexample: %s" % example
         print msg
         sys.exit(1)
     search_term_quoted = urllib.quote_plus(search_term)
     search_term_quoted = search_term_quoted.replace(".", "%2E")
     result = self.__submit('search', search_term, state)
     issues = get_key(result, 'issues')
     header = "# searching for '%s' returned %s issues" % (search_term, len(issues))
     printer = Pager()
     printer.write(header)
     for issue in issues:
         lines = format_issue(issue, verbose)
         printer.write("\n".join(lines))
     printer.close()
Esempio n. 8
0
 def search(self, search_term=None, state='open', verbose=False, **kwargs):
     if not search_term:
         example = "%s search experimental" % get_prog()
         msg = "error: search term required\nexample: %s" % example
         print msg
         sys.exit(1)
     search_term_quoted = urllib.quote_plus(search_term)
     search_term_quoted = search_term_quoted.replace(".", "%2E")
     result = self.__submit('search', search_term, state)
     issues = get_key(result, 'issues')
     header = "# searching for '%s' returned %s issues" % (search_term,
         len(issues))
     printer = Pager()
     printer.write(header)
     for issue in issues:
         lines = format_issue(issue, verbose)
         printer.write("\n".join(lines))
     printer.close()
Esempio n. 9
0
 def reopen(self, number=None, **kwargs):
     validate_number(number, example="%s open 1" % get_prog())
     result = self.__submit('reopen', number)
     issue = get_key(result, 'issue')
     pprint_issue(issue)
Esempio n. 10
0
 def close(self, number=None, **kwargs):
     validate_number(number, example="%s close 1" % get_prog())
     result = self.__submit('close', number)
     issue = get_key(result, 'issue')
     pprint_issue(issue)