Rev 3: Turn the script into an actual 'main()' function, add staleness checks. in http://bazaar.launchpad.net/~canonical-bazaar/udd/hottest100
John Arbash Meinel
john at arbash-meinel.com
Fri Jan 15 16:41:16 GMT 2010
At http://bazaar.launchpad.net/~canonical-bazaar/udd/hottest100
------------------------------------------------------------
revno: 3
revision-id: john at arbash-meinel.com-20100115164100-31onwrsiko6tmr5q
parent: mbp at sourcefrog.net-20100115072325-z308j1wvpib34ihc
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: hottest100
timestamp: Fri 2010-01-15 10:41:00 -0600
message:
Turn the script into an actual 'main()' function, add staleness checks.
-------------- next part --------------
=== modified file 'check-hottest.py'
--- a/check-hottest.py 2010-01-15 07:23:25 +0000
+++ b/check-hottest.py 2010-01-15 16:41:00 +0000
@@ -3,7 +3,8 @@
"""Check the status of imports/branches of 100 important projects"""
-import string
+import datetime
+import os
import sys
import bzrlib
@@ -15,41 +16,95 @@
)
-plugin.load_plugins()
-ui.ui_factory = bzrlib.ui.make_ui_for_terminal(sys.stdin,
- sys.stdout, sys.stderr)
-
-package_names = map(string.strip,
- file('hottest-projects.txt').readlines())
-
-ok_packages = set()
-unregistered_packages = set()
-broken_packages = set()
-
-reuse_transports = []
-for package in package_names[:10]:
- print package
+def setup_bzrlib():
+ plugin.load_plugins()
+ ui.ui_factory = bzrlib.ui.make_ui_for_terminal(sys.stdin,
+ sys.stdout, sys.stderr)
+
+
+def get_package_names(name):
+ f = open(name, 'rb')
try:
- package_branch_url = 'lp:ubuntu/%s' % (
- package)
- package_bzrdir = bzrdir.BzrDir.open(package_branch_url,
- possible_transports=reuse_transports)
- print package_bzrdir
- ok_packages.add(package)
- reuse_transports = [package_bzrdir.transport]
- except errors.BzrError, e:
- # the launchpad plugin sends
- # <class 'bzrlib.errors.InvalidURL'> Invalid url supplied to transport:
- # "lp:ubuntu/hal": hal in ubuntu has no default branch.
- print e.__class__, e
- if str(e).find('in ubuntu has no default branch') > -1:
- unregistered_packages.add(package)
- else:
- broken_packages.add(package)
- continue
-
-
-print 'TOTALS:'
-print '%5s ok' % len(ok_packages)
-print '%5s unregistered' % len(unregistered_packages)
-print '%5s otherwise broken' % len(broken_packages)
+ return [s.strip() for s in f]
+ finally:
+ f.close()
+
+
+def main(args):
+ import optparse
+ p = optparse.OptionParser('%prog [OPTIONS] HOTTEST_LIST\n'
+ '\n'
+ 'HOTTEST_LIST is a file containing packages to check\n'
+ 'one package per line\n')
+ p.add_option('--stale-days', type=int, default=14,
+ help='How many days till a package goes "stale" (default 14)')
+ p.add_option('--count', type=int, default=None,
+ help='Only process COUNT packages')
+
+ opts, args = p.parse_args(args)
+ if len(args) == 0:
+ # Use the default hottest100 list
+ args = [os.path.join(os.path.dirname(__file__),
+ 'hottest-projects.txt')
+ ]
+
+ package_names = get_package_names(args[0])
+ if opts.count is not None:
+ package_names = package_names[:opts.count]
+
+ setup_bzrlib()
+
+ ok_packages = set()
+ stale_packages = set()
+ unregistered_packages = set()
+ broken_packages = set()
+
+ long_form = 'bzr+ssh://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid'
+ short_form = '...'
+ print '%s = %s' % (short_form, long_form)
+
+ today = datetime.datetime.now()
+ reuse_transports = []
+ for package in package_names:
+ print package
+ try:
+ package_branch_url = 'lp:ubuntu/%s' % (
+ package)
+ package_bzrdir = bzrdir.BzrDir.open(package_branch_url,
+ possible_transports=reuse_transports)
+ reuse_transports = [package_bzrdir.transport]
+ package_branch = package_bzrdir.open_branch()
+ package_branch.lock_read()
+ try:
+ rev = package_branch.repository.get_revision(
+ package_branch.last_revision())
+ dt = datetime.datetime.fromtimestamp(rev.timestamp)
+ age = today - dt
+ branch_s = str(package_branch).replace(long_form, short_form)
+ print ' %s\n %d days old' % (branch_s, age.days)
+ if age.days < opts.stale_days:
+ ok_packages.add(package)
+ else:
+ stale_packages.add(package)
+ finally:
+ package_branch.unlock()
+ except errors.BzrError, e:
+ # the launchpad plugin sends
+ # <class 'bzrlib.errors.InvalidURL'> Invalid url supplied to transport:
+ # "lp:ubuntu/hal": hal in ubuntu has no default branch.
+ print ' %s' % (e,)
+ if str(e).find('in ubuntu has no default branch') > -1:
+ unregistered_packages.add(package)
+ else:
+ broken_packages.add(package)
+ continue
+
+
+ print 'TOTALS:'
+ print '%5s ok' % len(ok_packages)
+ print '%5s stale' % len(stale_packages)
+ print '%5s unregistered' % len(unregistered_packages)
+ print '%5s otherwise broken' % len(broken_packages)
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
More information about the bazaar-commits
mailing list