possibility to split long text lines
[meviz.git] / src / main / java / eu / svjatoslav / meviz / Main.java
1 /*
2  * Meviz - Various tools collection to work with multimedia.
3  * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
4  * 
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of version 2 of the GNU General Public License
7  * as published by the Free Software Foundation.
8  */
9
10 package eu.svjatoslav.meviz;
11
12 import java.util.ArrayList;
13
14 import eu.svjatoslav.meviz.encoder.Encoder;
15
16 public class Main {
17
18         public static ArrayList<Module> modules;
19
20         public static String[] getRemainingOptions(final String[] options) {
21                 final String[] remainingOptions = new String[options.length - 1];
22
23                 for (int i = 1; i < options.length; i++)
24                         remainingOptions[i - 1] = options[i];
25
26                 return remainingOptions;
27         };
28
29         public static void initModules() {
30                 modules = new ArrayList<Module>();
31
32                 modules.add(new Encoder());
33                 modules.add(new eu.svjatoslav.meviz.htmlindexer.Main());
34                 modules.add(new eu.svjatoslav.meviz.renamer.Main());
35                 modules.add(new eu.svjatoslav.meviz.grabmemcard.Main());
36                 modules.add(new eu.svjatoslav.meviz.texttruncate.Main());
37                 modules.add(new eu.svjatoslav.meviz.textsplitter.Main());
38                 modules.add(new eu.svjatoslav.meviz.bomremove.Main());
39         }
40
41         public static void main(final String[] args) throws Exception {
42
43                 initModules();
44
45                 if (args.length < 1)
46                         showHelp();
47                 else if (args[0].equals("help")) {
48                         if (args.length != 2)
49                                 showHelp();
50                         else {
51
52                                 for (final Module module : modules)
53                                         if (args[1].equals(module.getModuleCommand())) {
54                                                 module.showCommandlineHelp();
55                                                 return;
56                                         }
57
58                                 System.out.println("Error: unrecognized module by name:"
59                                                 + args[1] + "\n");
60                                 showHelp();
61
62                         }
63                 } else {
64
65                         for (final Module module : modules)
66                                 if (args[0].equals(module.getModuleCommand())) {
67                                         module.run(getRemainingOptions(args));
68                                         return;
69                                 }
70
71                         System.out.println("Error: unrecognized commandline option:"
72                                         + args[0] + "\n");
73                         showHelp();
74                 }
75
76         }
77
78         public static void showHelp() {
79                 final StringBuffer buffer = new StringBuffer();
80
81                 buffer.append("Commandline options: \n"
82                                 + "help\n    show this help screen \n\n");
83
84                 buffer.append("help <module>\n    show module specific help screen\n\n");
85
86                 buffer.append("Available modules:\n\n");
87
88                 for (final Module module : modules) {
89                         buffer.append(module.getModuleCommand() + "\n");
90                         buffer.append("    " + module.getDescription() + "\n\n");
91                 }
92
93                 System.out.println(buffer.toString());
94         }
95 }