Skip to content

Commit 3b55fe6

Browse files
authored
Add rmdir', rm, rm' (#67)
1 parent 7dfc7ca commit 3b55fe6

File tree

5 files changed

+58
-6
lines changed

5 files changed

+58
-6
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ Breaking changes:
88

99
New features:
1010

11+
- Update rmdir' to take options arg
12+
- Added rm and rm' version with and without options arg
13+
1114
Bugfixes:
1215

1316
Other improvements:

src/Node/FS/Async.js

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export {
1010
realpath as realpathImpl,
1111
unlink as unlinkImpl,
1212
rmdir as rmdirImpl,
13+
rm as rmImpl,
1314
mkdir as mkdirImpl,
1415
readdir as readdirImpl,
1516
utimes as utimesImpl,

src/Node/FS/Async.purs

+28-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ module Node.FS.Async
1212
, realpath'
1313
, unlink
1414
, rmdir
15+
, rmdir'
16+
, rm
17+
, rm'
1518
, mkdir
1619
, mkdir'
1720
, readdir
@@ -75,7 +78,8 @@ foreign import symlinkImpl :: Fn4 FilePath FilePath String (JSCallback Unit) Uni
7578
foreign import readlinkImpl :: Fn2 FilePath (JSCallback FilePath) Unit
7679
foreign import realpathImpl :: forall cache. Fn3 FilePath { | cache } (JSCallback FilePath) Unit
7780
foreign import unlinkImpl :: Fn2 FilePath (JSCallback Unit) Unit
78-
foreign import rmdirImpl :: Fn2 FilePath (JSCallback Unit) Unit
81+
foreign import rmdirImpl :: Fn3 FilePath { maxRetries :: Int, retryDelay :: Int } (JSCallback Unit) Unit
82+
foreign import rmImpl :: Fn3 FilePath { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int } (JSCallback Unit) Unit
7983
foreign import mkdirImpl :: Fn3 FilePath { recursive :: Boolean, mode :: String } (JSCallback Unit) Unit
8084
foreign import readdirImpl :: Fn2 FilePath (JSCallback (Array FilePath)) Unit
8185
foreign import utimesImpl :: Fn4 FilePath Int Int (JSCallback Unit) Unit
@@ -189,9 +193,30 @@ unlink file cb = mkEffect $ \_ -> runFn2
189193
rmdir :: FilePath
190194
-> Callback Unit
191195
-> Effect Unit
196+
rmdir path cb = rmdir' path { maxRetries: 0, retryDelay: 100 } cb
197+
198+
-- | Deletes a directory with options.
199+
rmdir' :: FilePath
200+
-> { maxRetries :: Int, retryDelay :: Int }
201+
-> Callback Unit
202+
-> Effect Unit
203+
rmdir' path opts cb = mkEffect $ \_ -> runFn3
204+
rmdirImpl path opts (handleCallback cb)
205+
206+
-- | Deletes a file or directory.
207+
rm :: FilePath
208+
-> Callback Unit
209+
-> Effect Unit
210+
rm path = rm' path { force: false, maxRetries: 100, recursive: false, retryDelay: 1000 }
211+
212+
-- | Deletes a file or directory with options.
213+
rm' :: FilePath
214+
-> { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int }
215+
-> Callback Unit
216+
-> Effect Unit
217+
rm' path opts cb = mkEffect $ \_ -> runFn3
218+
rmImpl path opts (handleCallback cb)
192219

193-
rmdir file cb = mkEffect $ \_ -> runFn2
194-
rmdirImpl file (handleCallback cb)
195220

196221
-- | Makes a new directory.
197222
mkdir :: FilePath

src/Node/FS/Sync.js

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export {
1010
realpathSync as realpathSyncImpl,
1111
unlinkSync as unlinkSyncImpl,
1212
rmdirSync as rmdirSyncImpl,
13+
rmSync as rmSyncImpl,
1314
mkdirSync as mkdirSyncImpl,
1415
readdirSync as readdirSyncImpl,
1516
utimesSync as utimesSyncImpl,

src/Node/FS/Sync.purs

+25-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ module Node.FS.Sync
1111
, realpath'
1212
, unlink
1313
, rmdir
14+
, rmdir'
15+
, rm
16+
, rm'
1417
, mkdir
1518
, mkdir'
1619
, readdir
@@ -62,7 +65,8 @@ foreign import symlinkSyncImpl :: Fn3 FilePath FilePath String Unit
6265
foreign import readlinkSyncImpl :: Fn1 FilePath FilePath
6366
foreign import realpathSyncImpl :: forall cache. Fn2 FilePath { | cache } FilePath
6467
foreign import unlinkSyncImpl :: Fn1 FilePath Unit
65-
foreign import rmdirSyncImpl :: Fn1 FilePath Unit
68+
foreign import rmdirSyncImpl :: Fn2 FilePath { maxRetries :: Int, retryDelay :: Int } Unit
69+
foreign import rmSyncImpl :: Fn2 FilePath { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int } Unit
6670
foreign import mkdirSyncImpl :: Fn2 FilePath { recursive :: Boolean, mode :: String } Unit
6771
foreign import readdirSyncImpl :: Fn1 FilePath (Array FilePath)
6872
foreign import utimesSyncImpl :: Fn3 FilePath Int Int Unit
@@ -166,9 +170,27 @@ unlink file = mkEffect $ \_ -> runFn1
166170
-- | Deletes a directory.
167171
rmdir :: FilePath
168172
-> Effect Unit
173+
rmdir path = rmdir' path { maxRetries: 0, retryDelay: 100 }
174+
175+
-- | Deletes a directory with options.
176+
rmdir' :: FilePath
177+
-> { maxRetries :: Int, retryDelay :: Int }
178+
-> Effect Unit
179+
rmdir' path opts = mkEffect $ \_ -> runFn2
180+
rmdirSyncImpl path opts
181+
182+
-- | Deletes a file or directory.
183+
rm :: FilePath
184+
-> Effect Unit
185+
rm path = rm' path { force: false, maxRetries: 100, recursive: false, retryDelay: 1000 }
186+
187+
-- | Deletes a file or directory with options.
188+
rm' :: FilePath
189+
-> { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int }
190+
-> Effect Unit
191+
rm' path opts = mkEffect $ \_ -> runFn2
192+
rmSyncImpl path opts
169193

170-
rmdir file = mkEffect $ \_ -> runFn1
171-
rmdirSyncImpl file
172194

173195
-- | Makes a new directory.
174196
mkdir :: FilePath

0 commit comments

Comments
 (0)