diff --git a/CHANGELOG.md b/CHANGELOG.md index 4424fad..f57ef2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,11 +23,11 @@ Breaking changes: - `kill'`'s signal arg New features: -- Added `fromKillSignal` (#51 by @JordanMartinez) +- Added `fromKillSignal`, `fromKillSignal'` (#51, #59 by @JordanMartinez) - Added `pidExists` (#53 by @JordanMartinez) - Export `toUnsafeChildProcess` (#55 by @JordanMartinez) - Added `stdio` (#55 by @JordanMartinez) -- Added `Show` instance to `Shell` & `KillSignal` (#58 by @JordanMartinez) +- Added `Eq` and `Show` instance to `Shell` & `KillSignal` (#58, #59 by @JordanMartinez) Other improvements: - Fix regression: add `ref`/`unref` APIs that were dropped in `v10.0.0` (#50 by @JordanMartinez) diff --git a/src/Node/ChildProcess/Types.purs b/src/Node/ChildProcess/Types.purs index 300a60b..dd3a74b 100644 --- a/src/Node/ChildProcess/Types.purs +++ b/src/Node/ChildProcess/Types.purs @@ -15,6 +15,7 @@ module Node.ChildProcess.Types , intSignal , stringSignal , fromKillSignal + , fromKillSignal' , Shell , enableShell , customShell @@ -72,6 +73,17 @@ defaultStdIO = unsafeCoerce (null :: Nullable String) foreign import data KillSignal :: Type +instance Eq KillSignal where + eq a b = a # fromKillSignal' + ( \i -> b # fromKillSignal' + (\b' -> i == b') + (const false) + ) + ( \s -> b # fromKillSignal' + (const false) + (\b' -> s == b') + ) + instance Show KillSignal where show = showKillSignal @@ -84,9 +96,12 @@ stringSignal :: String -> KillSignal stringSignal = unsafeCoerce fromKillSignal :: KillSignal -> Either Int String -fromKillSignal sig = runFn3 fromKillSignalImpl Left Right sig +fromKillSignal sig = fromKillSignal' Left Right sig + +fromKillSignal' :: forall r. (Int -> r) -> (String -> r) -> KillSignal -> r +fromKillSignal' fromInt fromStr sig = runFn3 fromKillSignalImpl fromInt fromStr sig -foreign import fromKillSignalImpl :: Fn3 (forall l r. l -> Either l r) (forall l r. r -> Either l r) (KillSignal) (Either Int String) +foreign import fromKillSignalImpl :: forall r. Fn3 (Int -> r) (String -> r) (KillSignal) r foreign import data Shell :: Type