Skip to content

Add rmdir', rm, rm' #67

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ Breaking changes:

New features:

- Update rmdir' to take options arg
- Added rm and rm' version with and without options arg

Bugfixes:

Other improvements:
Expand Down
1 change: 1 addition & 0 deletions src/Node/FS/Async.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export {
realpath as realpathImpl,
unlink as unlinkImpl,
rmdir as rmdirImpl,
rm as rmImpl,
mkdir as mkdirImpl,
readdir as readdirImpl,
utimes as utimesImpl,
Expand Down
31 changes: 28 additions & 3 deletions src/Node/FS/Async.purs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ module Node.FS.Async
, realpath'
, unlink
, rmdir
, rmdir'
, rm
, rm'
, mkdir
, mkdir'
, readdir
Expand Down Expand Up @@ -75,7 +78,8 @@ foreign import symlinkImpl :: Fn4 FilePath FilePath String (JSCallback Unit) Uni
foreign import readlinkImpl :: Fn2 FilePath (JSCallback FilePath) Unit
foreign import realpathImpl :: forall cache. Fn3 FilePath { | cache } (JSCallback FilePath) Unit
foreign import unlinkImpl :: Fn2 FilePath (JSCallback Unit) Unit
foreign import rmdirImpl :: Fn2 FilePath (JSCallback Unit) Unit
foreign import rmdirImpl :: Fn3 FilePath { maxRetries :: Int, retryDelay :: Int } (JSCallback Unit) Unit
foreign import rmImpl :: Fn3 FilePath { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int } (JSCallback Unit) Unit
foreign import mkdirImpl :: Fn3 FilePath { recursive :: Boolean, mode :: String } (JSCallback Unit) Unit
foreign import readdirImpl :: Fn2 FilePath (JSCallback (Array FilePath)) Unit
foreign import utimesImpl :: Fn4 FilePath Int Int (JSCallback Unit) Unit
Expand Down Expand Up @@ -189,9 +193,30 @@ unlink file cb = mkEffect $ \_ -> runFn2
rmdir :: FilePath
-> Callback Unit
-> Effect Unit
rmdir path cb = rmdir' path { maxRetries: 0, retryDelay: 100 } cb

-- | Deletes a directory with options.
rmdir' :: FilePath
-> { maxRetries :: Int, retryDelay :: Int }
-> Callback Unit
-> Effect Unit
rmdir' path opts cb = mkEffect $ \_ -> runFn3
rmdirImpl path opts (handleCallback cb)

-- | Deletes a file or directory.
rm :: FilePath
-> Callback Unit
-> Effect Unit
rm path = rm' path { force: false, maxRetries: 100, recursive: false, retryDelay: 1000 }

-- | Deletes a file or directory with options.
rm' :: FilePath
-> { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int }
-> Callback Unit
-> Effect Unit
rm' path opts cb = mkEffect $ \_ -> runFn3
rmImpl path opts (handleCallback cb)

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

-- | Makes a new directory.
mkdir :: FilePath
Expand Down
1 change: 1 addition & 0 deletions src/Node/FS/Sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export {
realpathSync as realpathSyncImpl,
unlinkSync as unlinkSyncImpl,
rmdirSync as rmdirSyncImpl,
rmSync as rmSyncImpl,
mkdirSync as mkdirSyncImpl,
readdirSync as readdirSyncImpl,
utimesSync as utimesSyncImpl,
Expand Down
28 changes: 25 additions & 3 deletions src/Node/FS/Sync.purs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ module Node.FS.Sync
, realpath'
, unlink
, rmdir
, rmdir'
, rm
, rm'
, mkdir
, mkdir'
, readdir
Expand Down Expand Up @@ -62,7 +65,8 @@ foreign import symlinkSyncImpl :: Fn3 FilePath FilePath String Unit
foreign import readlinkSyncImpl :: Fn1 FilePath FilePath
foreign import realpathSyncImpl :: forall cache. Fn2 FilePath { | cache } FilePath
foreign import unlinkSyncImpl :: Fn1 FilePath Unit
foreign import rmdirSyncImpl :: Fn1 FilePath Unit
foreign import rmdirSyncImpl :: Fn2 FilePath { maxRetries :: Int, retryDelay :: Int } Unit
foreign import rmSyncImpl :: Fn2 FilePath { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int } Unit
foreign import mkdirSyncImpl :: Fn2 FilePath { recursive :: Boolean, mode :: String } Unit
foreign import readdirSyncImpl :: Fn1 FilePath (Array FilePath)
foreign import utimesSyncImpl :: Fn3 FilePath Int Int Unit
Expand Down Expand Up @@ -166,9 +170,27 @@ unlink file = mkEffect $ \_ -> runFn1
-- | Deletes a directory.
rmdir :: FilePath
-> Effect Unit
rmdir path = rmdir' path { maxRetries: 0, retryDelay: 100 }

-- | Deletes a directory with options.
rmdir' :: FilePath
-> { maxRetries :: Int, retryDelay :: Int }
-> Effect Unit
rmdir' path opts = mkEffect $ \_ -> runFn2
rmdirSyncImpl path opts

-- | Deletes a file or directory.
rm :: FilePath
-> Effect Unit
rm path = rm' path { force: false, maxRetries: 100, recursive: false, retryDelay: 1000 }

-- | Deletes a file or directory with options.
rm' :: FilePath
-> { force :: Boolean, maxRetries :: Int, recursive :: Boolean, retryDelay :: Int }
-> Effect Unit
rm' path opts = mkEffect $ \_ -> runFn2
rmSyncImpl path opts

rmdir file = mkEffect $ \_ -> runFn1
rmdirSyncImpl file

-- | Makes a new directory.
mkdir :: FilePath
Expand Down