notification icon is embedded now
[amper.git] / ampercli.d
blob65a6035e4e94215acb611c307c0498f42e836f99
1 module ampercli;
3 import std.path : absolutePath;
5 import iv.alice;
6 import iv.cmdcon;
8 import amperrpc;
11 void main (string[] args) {
12 if (args.length < 2) {
13 conwrite(
14 "usage: ampercli command [args]\n",
15 "commands:\n",
16 " add path\n",
17 " replace path\n",
18 " play\n",
19 " stop\n",
20 " pause\n",
21 " clear\n",
23 return;
25 //amperRPCall!amperScanDir("/home/www/dox/muzax/irij/flac/2006_rusalka");
26 for (usize aidx = 1; aidx < args.length; ) {
27 string cmd = args[aidx++];
28 switch (cmd) {
29 case "add":
30 if (aidx >= args.length) assert(0, "no argument for command '"~cmd~"'");
31 amperRPCall!amperScanDir(absolutePath(args[aidx++]), true);
32 break;
33 case "replace":
34 if (aidx >= args.length) assert(0, "no argument for command '"~cmd~"'");
35 amperRPCall!amperScanDir(absolutePath(args[aidx++]), false);
36 break;
37 case "play": amperRPCall!amperPlay(); break;
38 case "stop": amperRPCall!amperStop(); break;
39 case "pause": amperRPCall!amperTogglePause(); break;
40 case "clear": amperRPCall!amperClearPlaylist(); break;
41 default:
42 if (cmd.length && cmd[0] == '+') {
43 string command = cmd[1..$];
44 while (aidx < args.length) {
45 string s = args[aidx++];
46 if (s.length == 0) continue;
47 if (command.length && command[$-1] > ' ') command ~= ' ';
48 command ~= s;
50 amperRPCall!amperConsoleCommand(command);
51 return;
53 import std.file;
54 if (cmd.exists) {
55 amperRPCall!amperClearPlaylist();
56 --aidx;
57 while (aidx < args.length) amperRPCall!amperScanDir(absolutePath(args[aidx++]), true);
58 amperRPCall!amperPlay();
59 return;
61 assert(0, "invalid command: '"~cmd~"'");