/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/command/add.py

  • Committer: Tim Marston
  • Date: 2016-02-23 19:35:21 UTC
  • Revision ID: tim@ed.am-20160223193521-2vgtxbfos50rrpku
renamed version -> VERSION

Show diffs side-by-side

added added

removed removed

53
53
                        [ "repo=", "verbose", "help" ] )
54
54
                for opt, optarg in opts:
55
55
                        if opt in [ '--repo', '-r' ]:
56
 
                                if not re.match( '^[-a-zA-z0-9.]+$', optarg ):
 
56
                                if not re.search( '^[-a-zA-z0-9.]+$', optarg ):
57
57
                                        raise the.program.FatalError(
58
58
                                                'invalid repository name: ' + optarg )
59
59
                                the.repo = optarg
60
 
                        elif opt in [ '--verbose', '-v' ]:
61
 
                                the.verbose += 1
62
60
                        elif opt == "--help":
63
61
                                self.print_help()
64
 
                
 
62
 
65
63
                # discard first argument (the command)
66
64
                args.pop( 0 )
67
65
 
89
87
                if the.repo.vcs.has_changes():
90
88
                        raise the.program.FatalError(
91
89
                                'repo has local changes: %s\n'
92
 
                                'Hint: see "%s stage-revert --help"' % 
 
90
                                'Hint: see "%s stage-revert --help"' %
93
91
                                ( the.repo.name, the.program.name ) )
94
92
 
95
93
                # check status
109
107
        def expand_home_dir_files( files ):
110
108
                """Returns a unique, sorted list of relative filenames, calculated from the list
111
109
                provided, which is made up from individual files and directories
112
 
                relative to the CWD.  Directories and are not recursed in to.  Specified
113
 
                filenames must exist in the home directory (although they may not exist
114
 
                in the repo).
 
110
                relative to the CWD.  Directories and are not recursed in to, but
 
111
                leading path components are also returned.  Specified filenames must
 
112
                exist in the home directory (although they may not exist in the repo).
 
113
 
115
114
                """
116
115
 
117
 
                ret = list()
 
116
                ret = set()
118
117
                home_dir_prefix = os.path.realpath( the.full_home_dir ) + os.sep
119
118
 
120
119
                # iterate through file list
126
125
                        # check the file is in the home directory
127
126
                        if abs_file[ : len( home_dir_prefix ) ] != home_dir_prefix:
128
127
                                raise the.program.FatalError(
129
 
                                        'not in home directory: %s' % abs_file )
 
128
                                        'not under home directory: %s' % abs_file )
130
129
 
131
130
                        # relative file
132
131
                        rel_file = abs_file[ len( home_dir_prefix ) : ]
134
133
                        # check if file exists in home directory
135
134
                        if not os.path.lexists( abs_file ):
136
135
                                raise the.program.FatalError(
137
 
                                        'not in home directory: %s' % rel_file )
138
 
 
139
 
                        # append the file or directory tree
140
 
                        ret.append( rel_file )
141
 
 
142
 
                return sorted( set ( ret ) )
 
136
                                        'not found in home directory: %s' % rel_file )
 
137
 
 
138
                        # append path parts
 
139
                        path = rel_file
 
140
                        while True:
 
141
                                path, dummy = os.path.split( path )
 
142
                                if len( path ): ret.add( path )
 
143
                                else: break
 
144
 
 
145
                        # append the file or directory
 
146
                        ret.add( rel_file )
 
147
 
 
148
                return sorted( ret )