commit 2e17001bd33eacd7c277222c1f9c81fc81f98fed Author: Emery Hemingway Date: Mon Mar 21 10:40:02 2022 -0500 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ee9fd6e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +synmpc diff --git a/README.md b/README.md new file mode 100644 index 0000000..7852e54 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# synmpc + +Enques songs to MPD from Syndicate assertions. Uses the same `` assertions as [xdg_open_ng](https://git.syndicate-lang.org/ehmry/xdg_open_ng). diff --git a/config.pr b/config.pr new file mode 100644 index 0000000..0aa19d8 --- /dev/null +++ b/config.pr @@ -0,0 +1,12 @@ +let ?root_ds = dataspace + + +> + + + +? ?cap> [ $cap [ ] ] diff --git a/src/synmpc.nim b/src/synmpc.nim new file mode 100644 index 0000000..d71799e --- /dev/null +++ b/src/synmpc.nim @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: ☭ 2022 Emery Hemingway +# SPDX-License-Identifier: Unlicense + +import std/asyncdispatch +import preserves +import syndicate +import mpdclient + +type + XdgOpen {.preservesRecord: "xdg-open".} = object + uris: seq[string] + ListenOn {.preservesRecord: "listen-on".} = ref object + dataspace: Preserve[Ref] + +bootDataspace("main") do (root: Ref; turn: var Turn): + connectStdio(root, turn) + let mpd = newMPDClient() + + onPublish(turn, root, ?ListenOn) do (a: Assertion): + stderr.writeLine "got listen-on ", a + let ds = unembed a + onMessage(turn, ds, ?XdgOpen) do (uris: seq[string]): + for uri in uris: mpd.add uri + +runForever() diff --git a/synmpc.nimble b/synmpc.nimble new file mode 100644 index 0000000..8553e6a --- /dev/null +++ b/synmpc.nimble @@ -0,0 +1,13 @@ +# Package + +version = "0.1.0" +author = "Emery Hemingway" +description = "Syndicate MPD client" +license = "Unlicense" +srcDir = "src" +bin = @["synmpc"] + + +# Dependencies + +requires "nim >= 1.6.4", "syndicate >= 1.2.1", "mpdclient"