/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/walker/status.py

  • Committer: Tim Marston
  • Date: 2014-04-05 19:21:27 UTC
  • Revision ID: tim@ed.am-20140405192127-yvt08c7qnnp2nr8i
fixed some bugs in Bzr.revert()

Show diffs side-by-side

added added

removed removed

20
20
 
21
21
 
22
22
import filecmp, os
23
 
from .walker import Walker
 
23
from walker import Walker
24
24
import stdhome.the as the
25
25
 
26
26
 
49
49
 
50
50
                # entity is missing in home dir?
51
51
                if dst.type == '_':
52
 
                        if the.verbose >= 2: print("  _|%s %s" % ( dst.type, rel_file ))
53
 
                        if not the.config.ignores.matches( rel_file ):
54
 
                                self.missing.append( rel_file )
 
52
                        self.missing.append( rel_file )
55
53
 
56
54
                        # if a directory is missing in the home dir, we only really want to
57
55
                        # hear about that and not all the files it contains (which are also
60
58
 
61
59
                # entity has changed type?
62
60
                elif dst.get_type_name() != src.get_type_name():
63
 
 
64
 
                        # is it a directory that has changed to a symlnik to a directory and
65
 
                        # is an acceptable substitution?
66
 
                        if src.type == 'd' and dst.link_type == 'd' and \
67
 
                                        the.config.symlinks.matches( rel_file ):
68
 
                                if the.verbose >= 2: print("  d@d " + rel_file)
69
 
                                return True
70
 
 
71
 
                        if the.verbose >= 2:
72
 
                                print("  %s|%s %s" % ( dst.type, src.type, rel_file ))
73
 
                        if not the.config.ignores.matches( rel_file ):
74
 
                                self.changed.append( "%s (%s => %s)" % (
75
 
                                        rel_file, src.get_type_name(), dst.get_type_name() ) )
 
61
                        self.changed.append( "%s (%s => %s)" % (
 
62
                                rel_file, src.get_type_name(), dst.get_type_name() ) )
76
63
 
77
64
                        # if an entity has changed to/from a directory, we don't care about
78
65
                        # anything that directory does/did contain
79
66
                        return False
80
67
 
81
 
                # entity is a file that has been modified?
 
68
                # entity has been modified?
 
69
                # TODO: check directory permission changes
82
70
                if src.type == 'f':
83
71
                        if not filecmp.cmp( src.file, dst.file ):
84
 
                                if the.verbose >= 2: print("  f|f " + rel_file)
85
 
                                if not the.config.ignores.matches( rel_file ):
86
 
                                        self.modified.append( rel_file )
87
 
                        else:
88
 
                                if the.verbose >= 2: print("  f=f " + rel_file)
89
 
                        return False
90
 
 
91
 
                # entity is a symlink that has been modified?
 
72
                                self.modified.append( rel_file )
92
73
                elif dst.type == 'l':
93
74
                        if os.readlink( src.file ) != os.readlink( dst.file ):
94
 
                                if the.verbose >= 2: print("  l|l " + rel_file)
95
 
                                if not the.config.ignores.matches( rel_file ):
96
 
                                        self.modified.append( rel_file )
97
 
                        else:
98
 
                                if the.verbose >= 2: print("  l=l " + rel_file)
99
 
                        return False
100
 
 
101
 
                # TODO: check directory permission changes
 
75
                                self.modified.append( rel_file )
102
76
 
103
77
                # nothing to see here
104
 
                if the.verbose >= 2:
105
 
                        print("  %s=%s %s" % ( dst.type, src.type, rel_file ))
106
78
                return True