Fix name of imported cbz, fix library check
[nikiroo-utils.git] / src / be / nikiroo / fanfix / Main.java
index 6a8a4a5af7542dccb07e8ffd5ba97dccd1abb05a..813a9b40320758e42a4244778b5c86971cc95137 100644 (file)
@@ -4,9 +4,11 @@ import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.List;
 
 import be.nikiroo.fanfix.bundles.StringId;
 import be.nikiroo.fanfix.data.Chapter;
+import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.fanfix.data.Story;
 import be.nikiroo.fanfix.library.BasicLibrary;
 import be.nikiroo.fanfix.library.CacheLibrary;
@@ -62,9 +64,10 @@ public class Main {
         * <li>--set-reader [reader type]: set the reader type to CLI, TUI or LOCAL
         * for this command</li>
         * <li>--version: get the version of the program</li>
-        * <li>--server [port]: start a server on this port</li>
-        * <li>--stop-server [port]: stop the running server on this port if any</li>
-        * <li>--remote [host] [port]: use a the given remote library</li>
+        * <li>--server [key] [port]: start a server on this port</li>
+        * <li>--stop-server [key] [port]: stop the running server on this port if
+        * any</li>
+        * <li>--remote [key] [host] [port]: use a the given remote library</li>
         * </ul>
         * 
         * @param args
@@ -76,6 +79,7 @@ public class Main {
                String sourceString = null;
                String chapString = null;
                String target = null;
+               String key = null;
                MainAction action = MainAction.START;
                Boolean plusInfo = null;
                String host = null;
@@ -179,20 +183,24 @@ public class Main {
                                break;
                        case SERVER:
                        case STOP_SERVER:
-                               if (port == null) {
+                               if (key == null) {
+                                       key = args[i];
+                               } else if (port == null) {
                                        port = Integer.parseInt(args[i]);
                                } else {
                                        exitCode = 255;
                                }
                                break;
                        case REMOTE:
-                               if (host == null) {
+                               if (key == null) {
+                                       key = args[i];
+                               } else if (host == null) {
                                        host = args[i];
                                } else if (port == null) {
                                        port = Integer.parseInt(args[i]);
 
                                        File remoteCacheDir = Instance.getRemoteDir(host);
-                                       BasicLibrary lib = new RemoteLibrary(host, port);
+                                       BasicLibrary lib = new RemoteLibrary(key, host, port);
                                        lib = new CacheLibrary(remoteCacheDir, lib);
 
                                        BasicReader.setDefaultLibrary(lib);
@@ -319,7 +327,7 @@ public class Main {
                                        break;
                                }
                                try {
-                                       Server server = new RemoteLibraryServer(port);
+                                       Server server = new RemoteLibraryServer(key, port);
                                        server.start();
                                        System.out.println("Remote server started on: " + port);
                                } catch (IOException e) {
@@ -333,12 +341,13 @@ public class Main {
                                }
 
                                try {
+                                       final String fkey = key;
                                        new ConnectActionClient(host, port, true) {
                                                @Override
                                                public void action(Version serverVersion)
                                                                throws Exception {
                                                        try {
-                                                               send(new Object[] { "EXIT" });
+                                                               send(new Object[] { fkey, "EXIT" });
                                                        } catch (Exception e) {
                                                                Instance.syserr(e);
                                                        }
@@ -432,7 +441,18 @@ public class Main {
         * @return the exit return code (0 = success)
         */
        private static int list(String source) {
-               BasicReader.getReader().browse(source);
+               List<MetaData> stories;
+               stories = BasicReader.getReader().getLibrary().getListBySource(source);
+
+               for (MetaData story : stories) {
+                       String author = "";
+                       if (story.getAuthor() != null && !story.getAuthor().isEmpty()) {
+                               author = " (" + story.getAuthor() + ")";
+                       }
+
+                       System.out.println(story.getLuid() + ": " + story.getTitle()
+                                       + author);
+               }
                return 0;
        }