use strict;
use warnings;
-use utf8;
+use utf8::all;
use App::MPD::Feeder;
-use App::MPD::Feeder::Options;
use Log::Any qw($log);
use Log::Any::Adapter Stderr => log_level => 'error';
-my $feeder = Feeder->new();
+my $feeder = App::MPD::Feeder->new();
if (@ARGV) {
- my $cmd = shift @ARGV;
+ require App::MPD::Feeder::Command;
+ bless $feeder, 'App::MPD::Feeder::Command';
- if ($cmd eq 'dump-config') {
- die "dump-config command accepts no arguments\n" if @ARGV;
-
- $feeder->opt->dump;
- exit;
- }
-
- if ( $cmd eq 'add-unwanted-artist' ) {
- die "Missing command arguments\n" unless @ARGV;
- $feeder->set_db_needs_update(0);
- for my $artist (@ARGV) {
- if ( $feeder->db_add_unwanted_artist($artist) ) {
- $log->info("Artist '$artist' added to the unwanted list\n");
- }
- else {
- $log->warn("Artist '$artist' already in the unwanted list\n");
- }
- }
- exit;
- }
-
- if ( $cmd eq 'del-unwanted-artist' ) {
- die "Missing command arguments\n" unless @ARGV;
- $feeder->set_db_needs_update(0);
- for my $artist (@ARGV) {
- if ( $feeder->db_del_unwanted_artist($artist) ) {
- $log->info("Artist '$artist' deleted from the unwanted list\n");
- }
- else {
- $log->warn("Artist '$artist' is not in the unwanted list\n");
- }
- }
- exit;
- }
-
- if ( $cmd eq 'add-unwanted-album' ) {
- die "NOT IMPLEMENTED\n";
- }
-
- if ( $cmd eq 'one-shot' ) {
- die "one-shot command accepts no arguments\n" if @ARGV;
-
- $feeder->queue_songs(undef, sub { exit });
- $feeder->mpd->loop->run;
- }
- elsif ( $cmd eq 'single' ) {
- die "single command accepts no arguments\n" if @ARGV;
-
- $feeder->queue_songs(1, sub { exit });
- $feeder->mpd->loop->run;
- }
- else {
- die "Unknown command '$cmd'";
- }
+ exit $feeder->run(@ARGV);
}
-$feeder->connect_db;
-
-for ( ;; ) {
- $feeder->queue_songs( undef, sub { $feeder->run } );
-
- $log->debug("Entering event loop. PID=$$");
-
- my $result = $feeder->mpd->loop->run;
- $log->trace( "Got loop result of " . ( $result // 'undef' ) );
-
- if ('reload' eq $result) {
- $log->notice("disconnecting");
- $feeder->stop;
-
- exec( "$0", '--config', $feeder->cfg_file, '--skip-db-update' );
- }
-}
+$feeder->run_loop;