recursive replace
[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                 modules.add(new eu.svjatoslav.meviz.replace.Main());
40         }
41
42         public static void main(final String[] args) throws Exception {
43
44                 initModules();
45
46                 if (args.length < 1)
47                         showHelp();
48                 else if (args[0].equals("help")) {
49                         if (args.length != 2)
50                                 showHelp();
51                         else {
52
53                                 for (final Module module : modules)
54                                         if (args[1].equals(module.getModuleCommand())) {
55                                                 module.showCommandlineHelp();
56                                                 return;
57                                         }
58
59                                 System.out.println("Error: unrecognized module by name:"
60                                                 + args[1] + "\n");
61                                 showHelp();
62
63                         }
64                 } else {
65
66                         for (final Module module : modules)
67                                 if (args[0].equals(module.getModuleCommand())) {
68                                         module.run(getRemainingOptions(args));
69                                         return;
70                                 }
71
72                         System.out.println("Error: unrecognized commandline option:"
73                                         + args[0] + "\n");
74                         showHelp();
75                 }
76
77         }
78
79         public static void showHelp() {
80                 final StringBuffer buffer = new StringBuffer();
81
82                 buffer.append("Commandline options: \n"
83                                 + "help\n    show this help screen \n\n");
84
85                 buffer.append("help <module>\n    show module specific help screen\n\n");
86
87                 buffer.append("Available modules:\n\n");
88
89                 for (final Module module : modules) {
90                         buffer.append(module.getModuleCommand() + "\n");
91                         buffer.append("    " + module.getDescription() + "\n\n");
92                 }
93
94                 System.out.println(buffer.toString());
95         }
96 }