/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 22:29:08 UTC
  • Revision ID: tim@ed.am-20140405222908-3onggkfp5akpz21t
got symlink accept lists working; fixed some walker bugs

Show diffs side-by-side

added added

removed removed

38
38
                self.src_dir = the.repo.full_dir
39
39
                self.dst_dir = the.full_home_dir
40
40
                self.walk_list = walk_list if walk_list is not None else \
41
 
                                                 self.generate_walk_list()
 
41
                                                 self.generate_walk_list( the.repo.full_dir )
42
42
 
43
43
                self.modified = list()
44
44
                self.missing = list()
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