X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FMain.java;h=953bc45a50b776a99b533fab67bbd9dc5dafa7d9;hb=e10b51a2a23135fbdf9539933d7e729354e8ddcd;hp=41206560a3bde407bf0d1f12ddc1f9081dc00d4d;hpb=81b5e730677858a7e9c9fc6f2f8f7992a4b8b1c3;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/Main.java b/src/be/nikiroo/fanfix/Main.java index 4120656..953bc45 100644 --- a/src/be/nikiroo/fanfix/Main.java +++ b/src/be/nikiroo/fanfix/Main.java @@ -33,7 +33,7 @@ import be.nikiroo.utils.serial.server.ServerObject; */ public class Main { private enum MainAction { - IMPORT, EXPORT, CONVERT, READ, READ_URL, LIST, HELP, SET_READER, START, VERSION, SERVER, STOP_SERVER, REMOTE, + IMPORT, EXPORT, CONVERT, READ, READ_URL, LIST, HELP, SET_READER, START, VERSION, SERVER, STOP_SERVER, REMOTE, SET_SOURCE, SET_TITLE, SET_AUTHOR } /** @@ -60,6 +60,9 @@ public class Main { *
  • --read-url [URL] ([chapter number]): convert on the fly and read the * story, without saving it
  • *
  • --list ([type]): list the stories present in the library
  • + *
  • --set-source [id] [new source]: change the source of the given story
  • + *
  • --set-title [id] [new title]: change the title of the given story
  • + *
  • --set-author [id] [new author]: change the author of the given story
  • *
  • --set-reader [reader type]: set the reader type to CLI, TUI or LOCAL * for this command
  • *
  • --version: get the version of the program
  • @@ -76,6 +79,8 @@ public class Main { String urlString = null; String luid = null; String sourceString = null; + String titleString = null; + String authorString = null; String chapString = null; String target = null; String key = null; @@ -150,6 +155,33 @@ public class Main { exitCode = 255; } break; + case SET_SOURCE: + if (luid == null) { + luid = args[i]; + } else if (sourceString == null) { + sourceString = args[i]; + } else { + exitCode = 255; + } + break; + case SET_TITLE: + if (luid == null) { + luid = args[i]; + } else if (sourceString == null) { + titleString = args[i]; + } else { + exitCode = 255; + } + break; + case SET_AUTHOR: + if (luid == null) { + luid = args[i]; + } else if (sourceString == null) { + authorString = args[i]; + } else { + exitCode = 255; + } + break; case READ: if (luid == null) { luid = args[i]; @@ -221,6 +253,9 @@ public class Main { int diff = progress.getProgress() - current; current += diff; + if (diff <= 0) + return; + StringBuilder builder = new StringBuilder(); for (int i = 0; i < diff; i++) { builder.append('.'); @@ -279,6 +314,30 @@ public class Main { } exitCode = list(sourceString); break; + case SET_SOURCE: + try { + Instance.getLibrary().changeSource(luid, sourceString, pg); + } catch (IOException e1) { + Instance.getTraceHandler().error(e1); + exitCode = 21; + } + break; + case SET_TITLE: + try { + Instance.getLibrary().changeTitle(luid, titleString, pg); + } catch (IOException e1) { + Instance.getTraceHandler().error(e1); + exitCode = 22; + } + break; + case SET_AUTHOR: + try { + Instance.getLibrary().changeAuthor(luid, authorString, pg); + } catch (IOException e1) { + Instance.getTraceHandler().error(e1); + exitCode = 23; + } + break; case READ: if (BasicReader.getReader() == null) { Instance.getTraceHandler() @@ -351,27 +410,19 @@ public class Main { } } - // We cannot do it when in GUI mode, because it is async... - // So if we close the temp files before it is actually used, - // we have a problem... - // TODO: close it at the correct time (for now, finalize try to do it) - if (false) { - try { - Instance.getTempFiles().close(); - } catch (IOException e) { - Instance.getTraceHandler().error( - new IOException( - "Cannot dispose of the temporary files", e)); - } + try { + Instance.getTempFiles().close(); + } catch (IOException e) { + Instance.getTraceHandler() + .error(new IOException( + "Cannot dispose of the temporary files", e)); } if (exitCode == 255) { syntax(false); } - if (exitCode != 0) { - System.exit(exitCode); - } + System.exit(exitCode); } /** @@ -459,7 +510,7 @@ public class Main { } /** - * Start the CLI reader for this {@link Story}. + * Start the current reader for this {@link Story}. * * @param story * the LUID of the {@link Story} in the {@link LocalLibrary} @@ -485,7 +536,7 @@ public class Main { if (chapString != null) { try { reader.setChapter(Integer.parseInt(chapString)); - reader.read(); + reader.read(true); } catch (NumberFormatException e) { Instance.getTraceHandler().error( new IOException("Chapter number cannot be parsed: " @@ -493,7 +544,7 @@ public class Main { return 2; } } else { - reader.read(); + reader.read(true); } } catch (IOException e) { Instance.getTraceHandler().error(e); @@ -524,6 +575,7 @@ public class Main { String target, boolean infoCover, Progress pg) { int exitCode = 0; + Instance.getTraceHandler().trace("Convert: " + urlString); String sourceName = urlString; try { URL source = BasicReader.getUrl(urlString); @@ -544,6 +596,8 @@ public class Main { BasicSupport support = BasicSupport.getSupport(source); if (support != null) { + Instance.getTraceHandler().trace( + "Support found: " + support.getClass()); Progress pgIn = new Progress(); Progress pgOut = new Progress(); if (pg != null) {