/stdhome

To get this branch, use:
bzr branch http://bzr.ed.am/stdhome

« back to all changes in this revision

Viewing changes to lib/stdhome/repo.py

  • Committer: Tim Marston
  • Date: 2016-04-10 19:01:41 UTC
  • Revision ID: tim@ed.am-20160410190141-nxeuzimwrwouv15o
fixed-up tools

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# repo.py
2
2
#
3
 
# Copyright (C) 2013 Tim Marston <tim@edm.am>
 
3
# Copyright (C) 2013 to 2014 Tim Marston <tim@edm.am>
4
4
#
5
5
# This file is part of stdhome (hereafter referred to as "this program").
6
6
# See http://ed.am/dev/stdhome for more information.
20
20
 
21
21
 
22
22
import os
23
 
import the
 
23
import the, util
 
24
from vcs.vcs import Vcs
24
25
 
25
26
 
26
27
class Repo:
28
29
 
29
30
        def __init__( self, name ):
30
31
                self.name = name
31
 
                self.dir = '%s/%s' % ( the.dir, self.name )
32
 
                self.expanded_dir = os.path.expanduser( self.dir )
 
32
                self.dir = os.path.join( the.dir, self.name )
 
33
                self.full_dir = util.canonicalise_path( self.dir )
 
34
                self.vcs = False
33
35
 
34
36
 
35
37
        def check_dir_exists( self, should_exist = True ):
36
 
                condition = 'does not' if should_exist else 'already'
37
 
                if os.path.exists( self.expanded_dir ) != should_exist:
 
38
                if os.path.exists( self.full_dir ) != should_exist:
 
39
                        error = 'does not exist' if should_exist else 'already exists'
38
40
                        raise the.program.FatalError(
39
 
                                'repository %s exists: %s' % ( condition, self.dir ) )
 
41
                                'repository %s: %s' % ( error, self.dir ) )
 
42
 
 
43
 
 
44
        def detect_vcs( self ):
 
45
                if os.path.exists( self.full_dir ):
 
46
                        for vcs in Vcs.vcses:
 
47
                                instance = Vcs.instantiate_vcs( vcs, self.full_dir )
 
48
                                if instance.has_authority():
 
49
                                        if the.verbose >= 2: print "repo vcs: %s" % vcs
 
50
                                        self.vcs = instance
 
51
                                        break
 
52
                        if self.vcs == False:
 
53
                                raise the.program.FatalError(
 
54
                                        'unknown vcs in repository: %s' % self.dir )
 
55
 
 
56
 
 
57
        def set_vcs( self, vcs ):
 
58
                if Vcs.vcses.count( vcs ) == 1:
 
59
                        self.vcs = Vcs.instantiate_vcs( vcs, self.full_dir )
 
60
                        if the.verbose >= 2: print "repo vcs: %s" % vcs
 
61
                else:
 
62
                        raise the.program.FatalError( 'unknown vcs requested: %s' % vcs )
 
63
 
 
64
 
 
65
        def __str__( self ):
 
66
                return "Repo( %s: %s )" % ( self.name, self.dir )