~azzar1/unity/add-show-desktop-key

1072 by matt.giuca
Renamed scripts to services.
1
#!/usr/bin/python
2
3
# IVLE - Informatics Virtual Learning Environment
4
# Copyright (C) 2007-2008 The University of Melbourne
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 2 of the License, or
9
# (at your option) any later version.
10
#
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
1099.1.48 by William Grant
ivle.webapp.filesystem.diff: Port www/apps/diff to new framework. This moves
20
# Author: David Coles, Will Grant
21
22
'''
23
A script for generating a Subversion diff. It is intended to be run via
24
trampoline by ivle.webapp.filesystem.diff.DiffView.
25
'''
26
27
import os
28
import sys
29
30
import cjson
1072 by matt.giuca
Renamed scripts to services.
31
import pysvn
32
1079 by William Grant
Merge setup-refactor branch. This completely breaks existing installations;
33
import ivle.svn
34
1072 by matt.giuca
Renamed scripts to services.
35
36
# Default revisions
37
revs = [pysvn.Revision(x) for x in [pysvn.opt_revision_kind.base,
38
                                    pysvn.opt_revision_kind.working]]
1099.1.48 by William Grant
ivle.webapp.filesystem.diff: Port www/apps/diff to new framework. This moves
39
40
# Override revisions from argv.
41
for ri in range(len(sys.argv[2:4])):
1099.1.50 by William Grant
ivle.webapp.filesystem.diff: Import BadRequest; it was used.
42
    r = ivle.svn.revision_from_string(sys.argv[2 + ri])
1072 by matt.giuca
Renamed scripts to services.
43
    if r is not None:
44
        revs[ri] = r
45
46
# Attempt to get the diff for these revisons
47
try:
48
    svnclient = pysvn.Client()
1099.1.50 by William Grant
ivle.webapp.filesystem.diff: Import BadRequest; it was used.
49
    svnclient.exception_style = 1
1072 by matt.giuca
Renamed scripts to services.
50
    diff = svnclient.diff
51
    diff_text = diff( '/tmp/svndiff',
1099.1.48 by William Grant
ivle.webapp.filesystem.diff: Port www/apps/diff to new framework. This moves
52
        os.path.join('/home', sys.argv[1]),
1072 by matt.giuca
Renamed scripts to services.
53
        revision1=revs[0],
54
        revision2=revs[1]
55
    )
1099.1.48 by William Grant
ivle.webapp.filesystem.diff: Port www/apps/diff to new framework. This moves
56
    print cjson.encode({'diff': diff_text})
1099.1.50 by William Grant
ivle.webapp.filesystem.diff: Import BadRequest; it was used.
57
except pysvn.ClientError, e:
58
    error = e[0]
59
60
    try:
61
        code = e[1][0][1]
62
        # See subversion/include/svn_error_codes.h.
63
        # 155007: WC_NOT_DIRECTORY.
64
        # 160013: FS_NOT_FOUND
65
        # 200005: UNVERSIONED_RESOURCE
66
        if code in (155007, 160013, 200005):
67
            error = 'notfound'
68
        else:
69
            error = '%s (code %d)' % (error, code) 
70
    except IndexError:
71
        pass
72
73
    print cjson.encode({'error': error})