diff --git a/ChangeLog b/ChangeLog index 4e906a2..904b11e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,65 @@ +2023-12-28 Michael Herstine + + Assorted clean-up pre-merge: + - fix the project CI (again) + - I've decided on a policy of supporting rust versions going back + six months. At the time of this writing, that's rust 1.70.0. + - address a corner case when HOME isn not set + - update GNU files + + [#9] Correct the way quoting is done when sending commands. + This commit will cause the client to properly quote string + parameters in commands. + +2023-12-23 Michael Herstine + + [Issue #010] Repair setting a sticker for the first time. + In MPD commit 432675d4c23450c527333ed4a29d13f843e001da the error + message for "sticker get" when the sticker is not found was changed. + mpdpopm (foolishly) relied on the error message. This patch changes + the salient logic to examine only the error code, instead. + +2023-10-31 Michael Herstine + + Fix the nightly CI workflow. + The `toml` crate recently made a release that no longer builds + with Rust 1.65. This commit pins that crate along with a few + of its dependencies to preserve the ability of this project + to build on the "oldest supported" version of Rust. + +2023-09-29 Michael Herstine + + fix CI + +2023-09-16 Michael Herstine + + [CI] Fix the CI job. + A number of dependencies no longer build under rust 1.65. I + pinned 'em in order to preserve the minimum supported version. + + - toml + - toml-edit + - cargo-deb + - anstyle to 1.0.2 + +2023-08-26 Michael Herstine + + Pinned a few clap dependencies in order to preserve the ability to build with rust 1.65 + +2023-08-25 Michael Herstine + + Update pinned rust toolchain version to 1.65 to accomodate a dependency + +2023-07-22 Michael Herstine + + Update/fix the release workflow. + The `release` workflow had gotten stale & naturally didn't work + after long disuse. + +2023-07-21 Michael Herstine + + mpdpopm release 0.3.1. + 2023-07-15 Michael Herstine Update the Continuous Integration job & upgrade Clap to v4. diff --git a/README.org b/README.org index 332ba7c..10f5fd9 100644 --- a/README.org +++ b/README.org @@ -2,7 +2,7 @@ #+AUTHOR: Michael Herstine #+DESCRIPTION: mpdpopm #+EMAIL: sp1ff@pobox.com -#+DATE: <2023-07-20 Thu 07:49> +#+DATE: <2023-12-28 Thu 18:23> #+AUTODATE: t * Introduction @@ -24,7 +24,7 @@ mppopm findadd "(rating > 128)" to add all songs with a rating greater than 128 to the play queue, or #+BEGIN_SRC bash -mppopm findadd "(lastplayed <= \"2022-07-15\")" +mppopm findadd "(lastplayed <= \"2022-12-28\")" #+END_SRC to add all songs that haven't been played in the last year. @@ -60,10 +60,10 @@ Thanks to a suggestion by [[https://github.com/m040601][m040601]], you can down #+BEGIN_SRC bash cd /tmp -curl -L --output mpdpopm-0.3.1.tar.gz https://github.com/sp1ff/mpdpopm/releases/download/0.3.1/mpdpopm-0.3.1-x86_64-unknown-linux.tar.gz -tar xf mpdpopm-0.3.1.tar.gz -tree mpdpopm-0.3.1-x86_64-unknown-linux/ -mpdpopm-0.3.1-x86_64-unknown-linux/ +curl -L --output mpdpopm-0.3.2.tar.gz https://github.com/sp1ff/mpdpopm/releases/download/0.3.2/mpdpopm-0.3.2-x86_64-unknown-linux.tar.gz +tar xf mpdpopm-0.3.2.tar.gz +tree mpdpopm-0.3.2-x86_64-unknown-linux/ +mpdpopm-0.3.2-x86_64-unknown-linux/ ├── bin │ ├── mppopm │ └── mppopmd @@ -93,8 +93,8 @@ If you're running on a Debian-based Linux distribution, and you're on an x86_64 #+BEGIN_SRC bash cd /tmp -curl -L -O https://github.com/sp1ff/mpdpopm/releases/download/0.3.1/mpdpopm_0.3.1_amd64.deb -sudo dpkg -i mpdpopm_0.3.1_amd64.deb +curl -L -O https://github.com/sp1ff/mpdpopm/releases/download/0.3.2/mpdpopm_0.3.2_amd64.deb +sudo dpkg -i mpdpopm_0.3.2_amd64.deb #+END_SRC The binaries will be placed in =/usr/local/bin=, and you can proceed to [[#getting_started][Getting Started]], below. @@ -105,8 +105,8 @@ If you're running on an Arch-based Linux distribution, and you're on an x86_64 p #+BEGIN_SRC bash cd /tmp -curl -L -O https://github.com/sp1ff/mpdpopm/releases/download/0.3.1/mpdpopm_0.3.1-1-x86_64.pkg.tar.zst -sudo pacman -U mpdpopm_0.3.1-1-x86_64.pkg.tar.zst +curl -L -O https://github.com/sp1ff/mpdpopm/releases/download/0.3.2/mpdpopm_0.3.2-1-x86_64.pkg.tar.zst +sudo pacman -U mpdpopm_0.3.2-1-x86_64.pkg.tar.zst #+END_SRC The binaries will be placed in =/usr/local/bin=, and you can proceed to [[#getting_started][Getting Started]], below. @@ -117,9 +117,9 @@ If you've got the Rust toolchain as well as Autotools installed, you can build f #+BEGIN_SRC bash cd /tmp -curl -L -O https://github.com/sp1ff/mpdpopm/releases/download/0.3.1/mpdpopm-0.3.1.tar.xz -tar xf mpdpopm-0.3.1.tar.xz -cd mpdpopm-0.3.1 +curl -L -O https://github.com/sp1ff/mpdpopm/releases/download/0.3.2/mpdpopm-0.3.2.tar.xz +tar xf mpdpopm-0.3.2.tar.xz +cd mpdpopm-0.3.2 ./configure make make check @@ -158,9 +158,9 @@ This README provides a "quick-start" guide to getting mpdpopm up & running. For 1. =mppopmd= is the companion daemon process 2. =mppopm= is the associated command-line interface to the daemon -=mppopmd= will monitor =mpd= for song playback & note when songs complete; this is how it knows to increment the playcount & update the last played timestamp for each song to which you listen. =mppopmd= records this information (i.e play counts, last played and ratings) using =mpd= [[https://www.musicpd.org/doc/html/protocol.html#stickers][stickers]]. A sticker is a little bit of textual information which clients can attach to songs in the form of a name-value pair. [[https://github.com/sp1ff/mpdpopm][mpdpopm]] defines a new sticker name for each of these items & udpates the values for each song when & as requested. +=mppopmd= will monitor =mpd= for song playback & note when songs complete; this is how it knows to increment the playcount & update the last played timestamp for each song to which you listen. =mppopmd= records this information (i.e. play counts, last played and ratings) using =mpd= [[https://www.musicpd.org/doc/html/protocol.html#stickers][stickers]]. A sticker is a little bit of textual information which clients can attach to songs in the form of a name-value pair. [[https://github.com/sp1ff/mpdpopm][mpdpopm]] defines a new sticker name for each of these items & udpates the values for each song when & as requested. -Of course, other =mpd= clients will not, in general, be aware of =mppopmd= or the stickers it sets: you the user will have to bridge that gap. You could of course just fire-up =netcat= & start sending commands over the MPD protocol using =sendmessage=, but that's not particularly convenient-- that's where =mppopm= comes in. =mppopm= is the client interface; one can through it instruct =mppopmd= to set ratings, get & set the various stickers mpdpopm knows about, and even search for songs in terms of mpdpopm attributes & add them to the play queue. +Of course, other =mpd= clients will not, in general, be aware of =mppopmd= or the stickers it sets: you the user will have to bridge that gap. You could of course just fire-up =netcat= & start sending commands over the MPD protocol using =sendmessage=, but that's not particularly convenient-- that's where =mppopm= comes in. =mppopm= is the client interface; one can through it instruct =mppopmd= to set ratings, get & set the various stickers mpdpopm knows about, and even search for songs in terms of mpdpopm attributes & add them to the play queue. ** Getting Set-up @@ -212,4 +212,6 @@ This will hopefully be a start to making [[https://github.com/sp1ff/mpdpopm][mpd Windows support may be some time coming; the daemon depends on Unix signal handling, the MPD Unix socket, and the Unix daemon logic, especially =fork= & =exec=... if you'd like to run it on Windows, let me know-- if there's enough interest, and I can get some kind of Windows VM setup, I'll look at a port. +Longer-term, I see [[https://github.com/sp1ff/mpdpopm][mpdpopm]] as a "dual" to mpd-- mpd commits to never altering your files. mpdpopm will take on that task in terms of tags, at least. To address the "plumbing, not the sink" problem, I'd like to author a client that will handle player control (of course), but also visualization & tag editing-- a complete music library solution. + Suggestions, bug reports & PRs welcome! diff --git a/doc/mpdpopm.texi b/doc/mpdpopm.texi index b0fa595..fc723b0 100644 --- a/doc/mpdpopm.texi +++ b/doc/mpdpopm.texi @@ -13,7 +13,7 @@ @copying This manual corresponds to mpdpopm version @value{VERSION}. -Copyright @copyright{} 2021 Michael Herstine +Copyright @copyright{} 2021-2023 Michael Herstine @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/mpdpopm/src/bin/mppopm.rs b/mpdpopm/src/bin/mppopm.rs index fc3c97a..54ed5fa 100644 --- a/mpdpopm/src/bin/mppopm.rs +++ b/mpdpopm/src/bin/mppopm.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Michael Herstine +// Copyright (C) 2020-2023 Michael Herstine // // This file is part of mpdpopm. // diff --git a/mpdpopm/src/bin/mppopmd.rs b/mpdpopm/src/bin/mppopmd.rs index d90435e..3908eac 100644 --- a/mpdpopm/src/bin/mppopmd.rs +++ b/mpdpopm/src/bin/mppopmd.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Michael Herstine +// Copyright (C) 2020-2023 Michael Herstine // // This file is part of mpdpopm. // diff --git a/mpdpopm/src/filters_ast.rs b/mpdpopm/src/filters_ast.rs index 72a207e..a8de12e 100644 --- a/mpdpopm/src/filters_ast.rs +++ b/mpdpopm/src/filters_ast.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Michael Herstine +// Copyright (C) 2020-2023 Michael Herstine // // This file is part of mpdpopm. //