ad014bfe33e44880fc3af8182ffec3209225a5e8
[meviz.git] / src / main / java / eu / svjatoslav / meviz / Main.java
1 /*
2  * Meviz - Various tools collection to work with multimedia.
3  * Copyright (C) 2012 -- 2017, 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 eu.svjatoslav.meviz.encoder.Encoder;
13
14 import java.util.ArrayList;
15
16 class Main {
17
18     private static ArrayList<Module> modules;
19
20     private static String[] getRemainingOptions(final String[] options) {
21         final String[] remainingOptions = new String[options.length - 1];
22
23         System.arraycopy(options, 1, remainingOptions, 0, options.length - 1);
24
25         return remainingOptions;
26     }
27
28     private static void initModules() {
29         modules = new ArrayList<>();
30
31         modules.add(new Encoder());
32         modules.add(new eu.svjatoslav.meviz.htmlindexer.Main());
33         modules.add(new eu.svjatoslav.meviz.renamer.Main());
34         modules.add(new eu.svjatoslav.meviz.grabmemcard.Main());
35         modules.add(new eu.svjatoslav.meviz.texttruncate.Main());
36         modules.add(new eu.svjatoslav.meviz.textsplitter.Main());
37         modules.add(new eu.svjatoslav.meviz.bomremove.Main());
38         modules.add(new eu.svjatoslav.meviz.replace.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     private static void showHelp() {
79         final StringBuilder buffer = new StringBuilder();
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 }