/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:03:32 UTC
  • Revision ID: tim@ed.am-20140319200332-6jpt67qon2ugmg2n
changed wording of status command output

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
 
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 dst_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 dst_type != src_type:
 
61
                        self.changed.append( "%s (%s => %s)" % ( rel_file,
 
62
                                self.name_of_type( src_type ), self.name_of_type( dst_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 src_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