/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-03-19 20:01:06 UTC
  • Revision ID: tim@ed.am-20140319200106-ou5y1nat6y2auaue
removed square brackets from AC_INIT parameter

Show diffs side-by-side

added added

removed removed

29
29
        directory and notes any that have been modified, are missing, or which have
30
30
        changed type.  It is run, for example, but the "stdhome status" comand.
31
31
 
32
 
        Walker source:       repo
33
 
        Walker destination:  home dir
 
32
        Walker source:       home dir
 
33
        Walker destination:  repo
34
34
        Walker traversing:   repo (unless a walk list is provided)
35
35
        """
36
36
 
37
37
        def __init__( self, walk_list = None ):
38
 
                self.src_dir = the.repo.full_dir
39
 
                self.dst_dir = the.full_home_dir
 
38
                self.src_dir = the.full_home_dir
 
39
                self.dst_dir = the.repo.full_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()
45
45
                self.changed = list()
46
46
 
47
47
 
48
 
        def process( self, rel_file, src, dst ):
 
48
        def process( self, rel_file, src_file, src_type, dst_file, dst_type ):
49
49
 
50
50
                # entity is missing in home dir?
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 )
 
51
                if src_type == '_':
 
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
59
57
                        return False
60
58
 
61
59
                # entity has changed type?
62
 
                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() ) )
 
60
                elif src_type != dst_type:
 
61
                        self.changed.append( "%s (now %s)" % (
 
62
                                rel_file, self.name_of_type( src_type ) ) )
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?
82
 
                if src.type == 'f':
83
 
                        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?
92
 
                elif dst.type == 'l':
93
 
                        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
 
 
 
68
                # entity has been modified?
101
69
                # TODO: check directory permission changes
 
70
                if dst_type == 'f':
 
71
                        if not filecmp.cmp( src_file, dst_file ):
 
72
                                self.modified.append( rel_file )
 
73
                elif dst_type == 'l':
 
74
                        if os.readlink( src_file ) != os.readlink( dst_file ):
 
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