| author | Dmitriy Morozov <morozov@cs.duke.edu> |
| Thu, 27 Dec 2007 13:14:58 -0500 | |
| changeset 1 | 0bbf290d6f07 |
| parent 0 | c1b34481e50a |
| child 2 | 9e804a85c82c |
| permissions | -rw-r--r-- |
| 0 | 1 |
#!/usr/bin/env python |
2 |
||
3 |
from mercurial import hg |
|
4 |
from mercurial.i18n import _ |
|
|
1
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
5 |
import os, time, random |
| 0 | 6 |
|
|
1
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
7 |
def list(ui, repo, **opts): |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
8 |
"""List issues associated with the project""" |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
9 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
10 |
def add(ui, repo): |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
11 |
"""Adds a new issue""" |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
12 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
13 |
# First, make sure issues have a directory |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
14 |
issues_path = os.path.join(repo.root, '.issues') |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
15 |
if not os.path.exists(issues_path): os.mkdir(issues_path) |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
16 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
17 |
user = ui.username() |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
18 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
19 |
default_issue_text = "From: %s\nDate: %s\n" % (user, |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
20 |
time.strftime('%a, %d %b %Y %H:%M:%S %Z'))
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
21 |
default_issue_text += "Status: new\nSubject: brief description\n\n" |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
22 |
default_issue_text += "Detailed description." |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
23 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
24 |
issue = ui.edit(default_issue_text, user) |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
25 |
if issue.strip() == '': |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
26 |
ui.warn('Empty issue, ignoring\n')
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
27 |
return |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
28 |
if issue.strip() == default_issue_text: |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
29 |
ui.warn('Unchanged issue text, ignoring\n')
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
30 |
return |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
31 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
32 |
# Pick random filename |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
33 |
issue_fn = issues_path |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
34 |
while os.path.exists(issue_fn): |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
35 |
issue_fn = os.path.join(issues_path, "%x" % random.randint(2**32, 2**64-1)) |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
36 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
37 |
# FIXME: replace with creating a mailbox |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
38 |
f = file(issue_fn, "w") |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
39 |
f.write(issue) |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
40 |
f.close() |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
41 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
42 |
repo.add([issue_fn[(len(repo.root)+1):]]) # +1 for the trailing / |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
43 |
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
44 |
def show(ui, repo, id): |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
45 |
"""Shows issue ID""" |
| 0 | 46 |
|
47 |
cmdtable = {
|
|
|
1
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
48 |
'issues-list': (list, |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
49 |
[('s', 'status', None, 'restrict status')],
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
50 |
_('hg issues-list')),
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
51 |
'issues-add': (add, |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
52 |
[], |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
53 |
_('hg issues-add')),
|
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
54 |
'issues-show': (show, |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
55 |
[], |
|
0bbf290d6f07
Commit artemis before cleaning repository
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
0
diff
changeset
|
56 |
_('hg issues-show ID'))
|
| 0 | 57 |
} |