/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-12-13 21:40:34 UTC
  • Revision ID: tim@ed.am-20161213214034-nd5t7ztnlrjd627i
fix add command and generic filename expansion/resolution to expend to
homedir-relative filename and absolute filename based on original filename, as
specified, rather than a fully, symlink-resolved filename.  So, e.g., if ~/bob
was a symlink to ~/fred, then ~/bob/a would resolve to the relative filename
bob/a, becuase it is inside the homedir (it would resolve to fred/a otherwise)

Show diffs side-by-side

added added

removed removed

21
21
 
22
22
import os
23
23
import the, util
24
 
from vcs.bzr import BzrVcs
 
24
from vcs.vcs import Vcs
25
25
 
26
26
 
27
27
class Repo:
31
31
                self.name = name
32
32
                self.dir = os.path.join( the.dir, self.name )
33
33
                self.full_dir = util.canonicalise_path( self.dir )
34
 
                self.vcs = BzrVcs( self.full_dir )
 
34
                self.vcs = False
35
35
 
36
36
 
37
37
        def check_dir_exists( self, should_exist = True ):
38
 
                condition = 'does not' if should_exist else 'already'
39
38
                if os.path.exists( self.full_dir ) != should_exist:
 
39
                        error = 'does not exist' if should_exist else 'already exists'
40
40
                        raise the.program.FatalError(
41
 
                                '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
 
42
64
 
43
65
        def __str__( self ):
44
66
                return "Repo( %s: %s )" % ( self.name, self.dir )