#!/usr/bin/perl

#      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2010-2012
#
#  This file is part of RoarAudio PlayList Daemon,
#  a playlist management daemon for RoarAudio.
#  See README for details.
#
#  This file is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 3
#  as published by the Free Software Foundation.
#
#  RoarAudio is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this software; see the file COPYING.  If not, write to
#  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

use strict;
use Audio::RPLD;

my $server;
my $queue;

my ($cmd, $arg);

my $ret;

while ($_ = shift(@ARGV)) {
 if ( $_ =~ /^--/ ) {
  if ( $_ eq '--server' ) {
   $server = shift(@ARGV);
  } elsif ( $_ eq '--queue' ) {
   $queue = shift(@ARGV);
  } elsif ( $_ eq '--help' ) {
   usage();
   exit(0);
  } else {
   print STDERR "Invalid option: $_\n";
   usage();
   exit(1);
  }
 } elsif ( !defined($cmd) ) {
  $cmd = lc($_);
 } elsif ( !defined($arg) ) {
  $arg = $_;
 } else {
  print STDERR "Invalid extra parameter: $_\n";
  usage();
  exit(1);
 }
}

if ( !defined($cmd) ) {
 print STDERR "Error: No command given.\n";
 usage();
 exit(1);
}

my $rpld = Audio::RPLD->new();

if ( defined($server) ) {
 $rpld->connect($server);
} else {
 $rpld->connect_default();
}
$rpld->is_connected() or die;

if ( defined($queue) ) {
 $rpld->setqueue($queue) or die;
}

# initial commands:
if ( $cmd eq 'pause' ) {
 $ret = $rpld->pause();
} elsif ( $cmd eq 'unpause' ) {
 $ret = $rpld->unpause();
} elsif ( $cmd eq 'togglepause' ) {
 $ret = $rpld->togglepause();
} elsif ( $cmd eq 'volume' ) {
 $ret = $rpld->setvolume($arg);

# playback:
} elsif ( $cmd eq 'play' ) {
 $ret = $rpld->play();
} elsif ( $cmd eq 'stop' ) {
 $ret = $rpld->stop();
} elsif ( $cmd eq 'next' ) {
 $ret = $rpld->next();
} elsif ( $cmd eq 'prev' ) {
 $ret = $rpld->prev();

# store:
} elsif ( $cmd eq 'store' ) {
 $ret = $rpld->store();

# playlists:
} elsif ( $cmd eq 'addplaylist' ) {
 $ret = $rpld->addplaylist($arg);
} elsif ( $cmd eq 'delplaylist' ) {
 $ret = $rpld->delplaylist($arg);

# other:
} else {
 die 'Unknown command';
}

$rpld->disconnect();

exit(0);

sub usage {
 print "Usage: $0 [--server SERVER] COMMAND [arg]\n";
 print "Or:    $0 --help\n";
 print "\n";
 print <<'__EOF__';
Options:
    --help              - Show this help.
    --server SERVER     - Set server address.
    --queue  QUEUE      - Set default queue for this process.

Commands:
 pause                  - Pause playback
 unpause                - Unpause playback
 togglepause            - If playback is paused unpause, if not pause.
 volume VOL             - Set volume to VOL
 play                   - Start playback
 stop                   - Stop playback
 next                   - Play next track
 prev                   - Play previous track
 store                  - Save current state to store
 addplaylist PLAYLIST   - Add a new playlist
 delplaylist PLAYLIST   - Delete a playlist
__EOF__
}

#ll
