From 6b5122115ef45e9e234ed53441e59543c194c95f Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Wed, 23 Mar 2022 12:16:33 -0500 Subject: [PATCH 1/3] Merge mkdirRecursive into mkdir --- src/Node/FS/Async.purs | 28 +++++----------------------- src/Node/FS/Sync.purs | 25 +++++-------------------- test/Test.purs | 2 +- 3 files changed, 11 insertions(+), 44 deletions(-) diff --git a/src/Node/FS/Async.purs b/src/Node/FS/Async.purs index d4ff0ff..26a3ce9 100644 --- a/src/Node/FS/Async.purs +++ b/src/Node/FS/Async.purs @@ -13,7 +13,6 @@ module Node.FS.Async , unlink , rmdir , mkdir - , mkdirRecursive , mkdir' , readdir , utimes @@ -199,36 +198,19 @@ rmdir file cb = mkEffect $ \_ -> runFn2 -- | Makes a new directory. mkdir :: FilePath + -> Boolean -> Callback Unit -> Effect Unit - -mkdir path = mkdir' path (mkPerms all all all) - --- | Makes a new directory and any directories that don't exist --- | in the path. Similar to `mkdir -p`. -mkdirRecursive :: FilePath - -> Callback Unit - -> Effect Unit - -mkdirRecursive path = mkdirRecursive' path (mkPerms all all all) - --- | Makes a new directory (and any directories that don't exist --- | in the path) with the specified permissions. -mkdirRecursive' - :: FilePath - -> Perms - -> Callback Unit - -> Effect Unit -mkdirRecursive' file perms cb = mkEffect $ \_ -> runFn3 - mkdirImpl file { recursive: true, mode: permsToString perms } (handleCallback cb) +mkdir path recursive = mkdir' path recursive (mkPerms all all all) -- | Makes a new directory with the specified permissions. mkdir' :: FilePath + -> Boolean -> Perms -> Callback Unit -> Effect Unit -mkdir' file perms cb = mkEffect $ \_ -> runFn3 - mkdirImpl file { recursive: false, mode: permsToString perms } (handleCallback cb) +mkdir' file recursive perms cb = mkEffect $ \_ -> runFn3 + mkdirImpl file { recursive, mode: permsToString perms } (handleCallback cb) -- | Reads the contents of a directory. readdir :: FilePath diff --git a/src/Node/FS/Sync.purs b/src/Node/FS/Sync.purs index 9c9e40a..e6914f0 100644 --- a/src/Node/FS/Sync.purs +++ b/src/Node/FS/Sync.purs @@ -13,8 +13,6 @@ module Node.FS.Sync , rmdir , mkdir , mkdir' - , mkdirRecursive - , mkdirRecursive' , readdir , utimes , readFile @@ -172,33 +170,20 @@ rmdir :: FilePath rmdir file = mkEffect $ \_ -> runFn1 rmdirSyncImpl file --- | Makes a new directory. -mkdirRecursive - :: FilePath - -> Effect Unit -mkdirRecursive = flip mkdirRecursive' $ mkPerms all all all - --- | Makes a new directory with the specified permissions. -mkdirRecursive' - :: FilePath - -> Perms - -> Effect Unit -mkdirRecursive' file perms = mkEffect $ \_ -> runFn2 - mkdirSyncImpl file { recursive: true, mode: permsToString perms } - -- | Makes a new directory. mkdir :: FilePath + -> Boolean -> Effect Unit - -mkdir = flip mkdir' $ mkPerms all all all +mkdir path recursive = mkdir' path recursive $ mkPerms all all all -- | Makes a new directory with the specified permissions. mkdir' :: FilePath + -> Boolean -> Perms -> Effect Unit -mkdir' file perms = mkEffect $ \_ -> runFn2 - mkdirSyncImpl file { recursive: false, mode: permsToString perms } +mkdir' file recursive perms = mkEffect $ \_ -> runFn2 + mkdirSyncImpl file { recursive, mode: permsToString perms } -- | Reads the contents of a directory. readdir :: FilePath diff --git a/test/Test.purs b/test/Test.purs index a075a48..9ef8f03 100644 --- a/test/Test.purs +++ b/test/Test.purs @@ -47,7 +47,7 @@ main = do -- If an error is thrown, it's probably EEXIST, so ignore it. Should -- really check this instead. - catchException' (const (pure unit)) (S.mkdir "tmp") + catchException' (const (pure unit)) (S.mkdir "tmp" false) S.writeTextFile ASCII (fp ["tmp", "Test.js"]) "console.log('hello world')" S.rename (fp ["tmp", "Test.js"]) (fp ["tmp", "Test1.js"]) From 7a822bd068dcf74656ddf8e889a5727228fb73d3 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Wed, 23 Mar 2022 12:18:40 -0500 Subject: [PATCH 2/3] Add changelog entry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1699208..b0fb986 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,9 @@ Notable changes to this project are documented in this file. The format is based ## [Unreleased] Breaking changes: +- Update `mkdir` to take `Boolean` arg for `recursive` option (#53, #55, #58 by @JordanMartinez) New features: -- Add bindings to `mkdir(path, { recursive: true })` via `mkdirRecursive` (#53, #55 by @JordanMartinez) - Update project and deps to PureScript v0.15.0 (#59 by @JordanMartinez, @thomashoneyman, @sigma-andex) Bugfixes: From d436ab0733aff9fde82ce65bf277298435b7552a Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 25 Mar 2022 14:41:00 -0500 Subject: [PATCH 3/3] Use option record for mkdir --- src/Node/FS/Async.purs | 15 +++++++-------- src/Node/FS/Sync.purs | 14 ++++++-------- test/Test.purs | 2 +- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/Node/FS/Async.purs b/src/Node/FS/Async.purs index 26a3ce9..025ec3f 100644 --- a/src/Node/FS/Async.purs +++ b/src/Node/FS/Async.purs @@ -198,18 +198,17 @@ rmdir file cb = mkEffect $ \_ -> runFn2 -- | Makes a new directory. mkdir :: FilePath - -> Boolean -> Callback Unit -> Effect Unit -mkdir path recursive = mkdir' path recursive (mkPerms all all all) +mkdir path = mkdir' path { recursive: false, mode: mkPerms all all all } -- | Makes a new directory with the specified permissions. -mkdir' :: FilePath - -> Boolean - -> Perms - -> Callback Unit - -> Effect Unit -mkdir' file recursive perms cb = mkEffect $ \_ -> runFn3 +mkdir' + :: FilePath + -> { recursive :: Boolean, mode :: Perms } + -> Callback Unit + -> Effect Unit +mkdir' file { recursive, mode: perms } cb = mkEffect $ \_ -> runFn3 mkdirImpl file { recursive, mode: permsToString perms } (handleCallback cb) -- | Reads the contents of a directory. diff --git a/src/Node/FS/Sync.purs b/src/Node/FS/Sync.purs index e6914f0..66f186a 100644 --- a/src/Node/FS/Sync.purs +++ b/src/Node/FS/Sync.purs @@ -172,17 +172,15 @@ rmdir file = mkEffect $ \_ -> runFn1 -- | Makes a new directory. mkdir :: FilePath - -> Boolean -> Effect Unit -mkdir path recursive = mkdir' path recursive $ mkPerms all all all +mkdir path = mkdir' path { recursive: false, mode: mkPerms all all all } -- | Makes a new directory with the specified permissions. -mkdir' :: FilePath - -> Boolean - -> Perms - -> Effect Unit - -mkdir' file recursive perms = mkEffect $ \_ -> runFn2 +mkdir' + :: FilePath + -> { recursive :: Boolean, mode :: Perms } + -> Effect Unit +mkdir' file { recursive, mode: perms } = mkEffect $ \_ -> runFn2 mkdirSyncImpl file { recursive, mode: permsToString perms } -- | Reads the contents of a directory. diff --git a/test/Test.purs b/test/Test.purs index 9ef8f03..a075a48 100644 --- a/test/Test.purs +++ b/test/Test.purs @@ -47,7 +47,7 @@ main = do -- If an error is thrown, it's probably EEXIST, so ignore it. Should -- really check this instead. - catchException' (const (pure unit)) (S.mkdir "tmp" false) + catchException' (const (pure unit)) (S.mkdir "tmp") S.writeTextFile ASCII (fp ["tmp", "Test.js"]) "console.log('hello world')" S.rename (fp ["tmp", "Test.js"]) (fp ["tmp", "Test1.js"])