1
- module . exports = chownr
2
- chownr . sync = chownrSync
1
+ 'use strict'
2
+ const fs = require ( 'fs' )
3
+ const path = require ( 'path' )
3
4
4
- var fs = require ( "fs" )
5
- , path = require ( "path" )
6
-
7
- function chownr ( p , uid , gid , cb ) {
8
- fs . readdir ( p , function ( er , children ) {
5
+ const chownr = ( p , uid , gid , cb ) => {
6
+ fs . readdir ( p , ( er , children ) => {
9
7
// any error other than ENOTDIR means it's not readable, or
10
8
// doesn't exist. give up.
11
- if ( er && er . code !== " ENOTDIR" ) return cb ( er )
9
+ if ( er && er . code !== ' ENOTDIR' ) return cb ( er )
12
10
if ( er || ! children . length ) return fs . chown ( p , uid , gid , cb )
13
11
14
- var len = children . length
15
- , errState = null
16
- children . forEach ( function ( child ) {
17
- var pathChild = path . resolve ( p , child ) ;
18
- fs . lstat ( pathChild , function ( er , stats ) {
12
+ let len = children . length
13
+ let errState = null
14
+ const then = er => {
15
+ if ( errState ) return
16
+ if ( er ) return cb ( errState = er )
17
+ if ( -- len === 0 ) return fs . chown ( p , uid , gid , cb )
18
+ }
19
+
20
+ children . forEach ( child => {
21
+ const pathChild = path . resolve ( p , child )
22
+ fs . lstat ( pathChild , ( er , stats ) => {
19
23
if ( er )
20
24
return cb ( er )
21
25
if ( ! stats . isSymbolicLink ( ) )
@@ -24,29 +28,28 @@ function chownr (p, uid, gid, cb) {
24
28
then ( )
25
29
} )
26
30
} )
27
- function then ( er ) {
28
- if ( errState ) return
29
- if ( er ) return cb ( errState = er )
30
- if ( -- len === 0 ) return fs . chown ( p , uid , gid , cb )
31
- }
32
31
} )
33
32
}
34
33
35
- function chownrSync ( p , uid , gid ) {
36
- var children
34
+ const chownrSync = ( p , uid , gid ) => {
35
+ let children
37
36
try {
38
37
children = fs . readdirSync ( p )
39
38
} catch ( er ) {
40
- if ( er && er . code === " ENOTDIR" ) return fs . chownSync ( p , uid , gid )
39
+ if ( er && er . code === ' ENOTDIR' ) return fs . chownSync ( p , uid , gid )
41
40
throw er
42
41
}
43
42
if ( ! children . length ) return fs . chownSync ( p , uid , gid )
44
43
45
- children . forEach ( function ( child ) {
46
- var pathChild = path . resolve ( p , child )
47
- var stats = fs . lstatSync ( pathChild )
44
+ children . forEach ( child => {
45
+ const pathChild = path . resolve ( p , child )
46
+ const stats = fs . lstatSync ( pathChild )
48
47
if ( ! stats . isSymbolicLink ( ) )
49
48
chownrSync ( pathChild , uid , gid )
50
49
} )
50
+
51
51
return fs . chownSync ( p , uid , gid )
52
52
}
53
+
54
+ module . exports = chownr
55
+ chownr . sync = chownrSync
0 commit comments