@@ -129,9 +129,9 @@ <h1>Source code for mache.permissions</h1><div class="highlight"><pre>
129129< span class ="sd "> """</ span >
130130
131131 < span class ="k "> if</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> base_paths</ span > < span class ="p "> ,</ span > < span class ="nb "> str</ span > < span class ="p "> ):</ span >
132- < span class ="n "> directories </ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="n "> base_paths</ span > < span class ="p "> ]</ span >
132+ < span class ="n "> paths </ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="n "> Path </ span > < span class =" p " > ( </ span > < span class =" n " > base_paths</ span > < span class ="p "> ) ]</ span >
133133 < span class ="k "> else</ span > < span class ="p "> :</ span >
134- < span class ="n "> directories </ span > < span class ="o "> =</ span > < span class ="n "> base_paths</ span >
134+ < span class ="n "> paths </ span > < span class ="o "> =</ span > < span class ="p " > [ </ span > < span class =" n "> Path </ span > < span class =" p " > ( </ span > < span class =" n " > path </ span > < span class =" p " > ) </ span > < span class =" k " > for </ span > < span class =" n " > path </ span > < span class =" ow " > in </ span > < span class =" n " > base_paths</ span > < span class =" p " > ] </ span >
135135
136136 < span class ="n "> new_uid</ span > < span class ="o "> =</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> getuid</ span > < span class ="p "> ()</ span >
137137 < span class ="n "> new_gid</ span > < span class ="o "> =</ span > < span class ="n "> grp</ span > < span class ="o "> .</ span > < span class ="n "> getgrnam</ span > < span class ="p "> (</ span > < span class ="n "> group</ span > < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="n "> gr_gid</ span >
@@ -154,33 +154,25 @@ <h1>Source code for mache.permissions</h1><div class="highlight"><pre>
154154
155155 < span class ="n "> mask</ span > < span class ="o "> =</ span > < span class ="n "> stat</ span > < span class ="o "> .</ span > < span class ="n "> S_IRWXU</ span > < span class ="o "> |</ span > < span class ="n "> stat</ span > < span class ="o "> .</ span > < span class ="n "> S_IRWXG</ span > < span class ="o "> |</ span > < span class ="n "> stat</ span > < span class ="o "> .</ span > < span class ="n "> S_IRWXO</ span >
156156
157- < span class ="c1 "> # first the base directories that don't seem to be included in</ span >
158- < span class ="c1 "> # os.walk()</ span >
159- < span class ="k "> for</ span > < span class ="n "> directory</ span > < span class ="ow "> in</ span > < span class ="n "> directories</ span > < span class ="p "> :</ span >
160- < span class ="k "> try</ span > < span class ="p "> :</ span >
161- < span class ="n "> dir_stat</ span > < span class ="o "> =</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> stat</ span > < span class ="p "> (</ span > < span class ="n "> directory</ span > < span class ="p "> )</ span >
162- < span class ="k "> except</ span > < span class ="ne "> OSError</ span > < span class ="p "> :</ span >
163- < span class ="k "> continue</ span >
164-
165- < span class ="n "> perm</ span > < span class ="o "> =</ span > < span class ="n "> dir_stat</ span > < span class ="o "> .</ span > < span class ="n "> st_mode</ span > < span class ="o "> &</ span > < span class ="n "> mask</ span >
166-
167- < span class ="k "> if</ span > < span class ="p "> (</ span >
168- < span class ="n "> perm</ span > < span class ="o "> ==</ span > < span class ="n "> exec_perm</ span >
169- < span class ="ow "> and</ span > < span class ="n "> dir_stat</ span > < span class ="o "> .</ span > < span class ="n "> st_uid</ span > < span class ="o "> ==</ span > < span class ="n "> new_uid</ span >
170- < span class ="ow "> and</ span > < span class ="n "> dir_stat</ span > < span class ="o "> .</ span > < span class ="n "> st_gid</ span > < span class ="o "> ==</ span > < span class ="n "> new_gid</ span >
171- < span class ="p "> ):</ span >
172- < span class ="k "> pass</ span >
157+ < span class ="k "> for</ span > < span class ="n "> path</ span > < span class ="ow "> in</ span > < span class ="n "> paths</ span > < span class ="p "> :</ span >
158+ < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s1 "> 'Updating file permissions for: </ span > < span class ="si "> {</ span > < span class ="n "> path</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span > < span class ="p "> )</ span >
173159
174- < span class ="k "> try</ span > < span class ="p "> :</ span >
175- < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> chown</ span > < span class ="p "> (</ span > < span class ="n "> directory</ span > < span class ="p "> ,</ span > < span class ="n "> new_uid</ span > < span class ="p "> ,</ span > < span class ="n "> new_gid</ span > < span class ="p "> )</ span >
176- < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> chmod</ span > < span class ="p "> (</ span > < span class ="n "> directory</ span > < span class ="p "> ,</ span > < span class ="n "> exec_perm</ span > < span class ="p "> )</ span >
177- < span class ="k "> except</ span > < span class ="ne "> OSError</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
178- < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s1 "> '</ span > < span class ="si "> {</ span > < span class ="n "> e</ span > < span class ="si "> }</ span > < span class ="s1 "> – skipping </ span > < span class ="si "> {</ span > < span class ="n "> directory</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span > < span class ="p "> )</ span >
160+ < span class ="c1 "> # start by updating the top level path (file or directory)</ span >
161+ < span class ="n "> _update</ span > < span class ="p "> (</ span >
162+ < span class ="n "> path</ span > < span class ="p "> ,</ span >
163+ < span class ="n "> uid</ span > < span class ="o "> =</ span > < span class ="n "> new_uid</ span > < span class ="p "> ,</ span >
164+ < span class ="n "> gid</ span > < span class ="o "> =</ span > < span class ="n "> new_gid</ span > < span class ="p "> ,</ span >
165+ < span class ="n "> read_write_perm</ span > < span class ="o "> =</ span > < span class ="n "> read_write_perm</ span > < span class ="p "> ,</ span >
166+ < span class ="n "> exec_perm</ span > < span class ="o "> =</ span > < span class ="n "> exec_perm</ span > < span class ="p "> ,</ span >
167+ < span class ="n "> mask</ span > < span class ="o "> =</ span > < span class ="n "> mask</ span > < span class ="p "> ,</ span >
168+ < span class ="p "> )</ span >
179169
180- < span class ="n "> paths_iter</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="n "> p</ span > < span class ="k "> for</ span > < span class ="n "> p</ span > < span class ="ow "> in</ span > < span class ="n "> Path</ span > < span class ="p "> (</ span > < span class ="n "> directory</ span > < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="n "> rglob</ span > < span class ="p "> (</ span > < span class ="s1 "> '*'</ span > < span class ="p "> ))</ span >
181- < span class ="n "> n_files</ span > < span class ="o "> =</ span > < span class ="nb "> sum</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="k "> for</ span > < span class ="n "> _</ span > < span class ="ow "> in</ span > < span class ="n "> Path</ span > < span class ="p "> (</ span > < span class ="n "> directory</ span > < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="n "> rglob</ span > < span class ="p "> (</ span > < span class ="s1 "> '*'</ span > < span class ="p "> ))</ span >
170+ < span class ="c1 "> # iterate over the path recursively, only if it's a direcotry</ span >
171+ < span class ="k "> if</ span > < span class ="n "> path</ span > < span class ="o "> .</ span > < span class ="n "> is_file</ span > < span class ="p "> ():</ span >
172+ < span class ="k "> continue</ span >
182173
183- < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s1 "> 'Updating file permissions for: </ span > < span class ="si "> {</ span > < span class ="n "> directory</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span > < span class ="p "> )</ span >
174+ < span class ="n "> paths_iter</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="n "> p</ span > < span class ="k "> for</ span > < span class ="n "> p</ span > < span class ="ow "> in</ span > < span class ="n "> Path</ span > < span class ="p "> (</ span > < span class ="n "> path</ span > < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="n "> rglob</ span > < span class ="p "> (</ span > < span class ="s1 "> '*'</ span > < span class ="p "> ))</ span >
175+ < span class ="n "> n_files</ span > < span class ="o "> =</ span > < span class ="nb "> sum</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="k "> for</ span > < span class ="n "> _</ span > < span class ="ow "> in</ span > < span class ="n "> Path</ span > < span class ="p "> (</ span > < span class ="n "> path</ span > < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="n "> rglob</ span > < span class ="p "> (</ span > < span class ="s1 "> '*'</ span > < span class ="p "> ))</ span >
184176
185177 < span class ="k "> with</ span > < span class ="p "> (</ span >
186178 < span class ="n "> ThreadPoolExecutor</ span > < span class ="p "> (</ span > < span class ="n "> max_workers</ span > < span class ="o "> =</ span > < span class ="n "> workers</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> pool</ span > < span class ="p "> ,</ span >
0 commit comments