33 lines
955 B
Gleam
33 lines
955 B
Gleam
import gleam/erlang/process.{type Name}
|
|
|
|
import musicplayer/input/input
|
|
import musicplayer/input/key.{type Key}
|
|
import musicplayer/mpv/mpv
|
|
import musicplayer/musicplayer
|
|
|
|
pub fn main() -> Nil {
|
|
let input_keys_name: Name(Key) = process.new_name("input_keys")
|
|
let input_stream_name: Name(List(String)) = process.new_name("input_stream")
|
|
|
|
// `input_inject` is created by name to allow the `input` process that
|
|
// owns `read_input` to be able to register and receive from it,
|
|
// while the any other processes can use the name reference to
|
|
// inject input
|
|
let input_inject_name: Name(Key) = process.new_name("input_inject_keys")
|
|
|
|
input.new(input_keys_name, input_stream_name, input_inject_name)
|
|
|
|
let assert Ok(mpv) = mpv.new()
|
|
|
|
let exit = process.new_subject()
|
|
let assert Ok(_) =
|
|
musicplayer.new(
|
|
mpv,
|
|
input_keys_name,
|
|
input_stream_name,
|
|
input_inject_name,
|
|
exit,
|
|
)
|
|
process.receive_forever(exit)
|
|
}
|