File: count_loc.py

package info (click to toggle)
pygments 0.5.1-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,776 kB
  • ctags: 3,400
  • sloc: ansic: 10,354; python: 8,398; xml: 7,407; ruby: 6,789; cpp: 4,263; perl: 4,164; pascal: 2,174; java: 1,741; php: 248; cs: 225; makefile: 83
file content (48 lines) | stat: -rw-r--r-- 1,288 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
    Source line counter
    ~~~~~~~~~~~~~~~~~~~

    Count the lines of code in pocoo, colubrid and jinja.
    Requires an svn checkout.

    :copyright: 2006 by Armin Ronacher.
    :license: GNU GPL, see LICENSE for more details.
"""
from pocoo.utils.path import Path

def main(root, search):
    LOC = 0

    root = Path(root).realpath()
    offset = len(root) + 1

    print '+%s+' % ('=' * 78)
    print '| Lines of Code %s |' % (' ' * 62)
    print '+%s+' % ('=' * 78)

    for folder in search:
        folder = Path(root).joinpath(folder).realpath()
        for fn in folder.walk():
            if fn.endswith('.py') or fn.endswith('.js'):
                try:
                    fp = file(fn)
                    lines = sum(1 for l in fp.read().splitlines() if l.strip())
                except:
                    print '%-70sskipped' % fn
                else:
                    LOC += lines
                    print '| %-68s %7d |' % (fn[offset:], lines)
                fp.close()

    print '+%s+' % ('-' * 78)
    print '| Total Lines of Code: %55d |' % LOC
    print '+%s+' % ('-' * 78)

if __name__ == '__main__':
    main('../../../', [
        'pocoo/trunk',
        'colubrid/trunk',
        'jinja/trunk'
    ])