/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: 2014-01-05 11:51:35 UTC
  • Revision ID: tim@ed.am-20140105115135-6ses87ggwyjrxzfj
added global objects (the.repo, the.program), deployment object and implemented
init command

Show diffs side-by-side

added added

removed removed

1
1
# repo.py
2
2
#
3
 
# Copyright (C) 2013 to 2014 Tim Marston <tim@edm.am>
 
3
# Copyright (C) 2013 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, util
24
 
from vcs.vcs import Vcs
 
23
import the
25
24
 
26
25
 
27
26
class Repo:
29
28
 
30
29
        def __init__( self, name ):
31
30
                self.name = name
32
 
                self.dir = os.path.join( the.dir, self.name )
33
 
                self.full_dir = util.canonicalise_path( self.dir )
34
 
                self.vcs = False
 
31
                self.dir = '%s/%s' % ( the.dir, self.name )
 
32
                self.expanded_dir = os.path.expanduser( self.dir )
35
33
 
36
34
 
37
35
        def check_dir_exists( self, should_exist = True ):
38
 
                if os.path.exists( self.full_dir ) != should_exist:
39
 
                        error = 'does not exist' if should_exist else 'already exists'
 
36
                condition = 'does not' if should_exist else 'already'
 
37
                if os.path.exists( self.expanded_dir ) != should_exist:
40
38
                        raise the.program.FatalError(
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 )
 
39
                                'repository %s exists: %s' % ( condition, self.dir ) )