X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FMain.java;h=953bc45a50b776a99b533fab67bbd9dc5dafa7d9;hb=e10b51a2a23135fbdf9539933d7e729354e8ddcd;hp=53c4a8629f952075f4519131f5541363f5701f45;hpb=6dd591f08aa6130391dd47ec60db5ae046c1e505;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/Main.java b/src/be/nikiroo/fanfix/Main.java index 53c4a86..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]; @@ -282,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() @@ -354,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); } /** @@ -462,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} @@ -488,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: " @@ -496,7 +544,7 @@ public class Main { return 2; } } else { - reader.read(); + reader.read(true); } } catch (IOException e) { Instance.getTraceHandler().error(e); @@ -548,7 +596,8 @@ public class Main { BasicSupport support = BasicSupport.getSupport(source); if (support != null) { - Instance.getTraceHandler().trace("Support found: " + support.getClass()); + Instance.getTraceHandler().trace( + "Support found: " + support.getClass()); Progress pgIn = new Progress(); Progress pgOut = new Progress(); if (pg != null) {