1201b10a5af848da4c2ee6051dfda9b28e4edf8f
[meviz.git] / src / main / java / eu / svjatoslav / meviz / Main.java
1 /*
2  * Meviz - Various tools collection to work with multimedia.
3  * Copyright (C) 2012 -- 2019, 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 3 of the GNU Lesser General Public License
7  * or later 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.bomremove.Main());
35         modules.add(new eu.svjatoslav.meviz.replace.Main());
36     }
37
38     public static void main(final String[] args) throws Exception {
39
40         initModules();
41
42         if (args.length < 1)
43             showHelp();
44         else if (args[0].equals("help")) {
45             if (args.length != 2)
46                 showHelp();
47             else {
48
49                 for (final Module module : modules)
50                     if (args[1].equals(module.getModuleCommand())) {
51                         module.showCommandlineHelp();
52                         return;
53                     }
54
55                 System.out.println("Error: unrecognized module by name:"
56                         + args[1] + "\n");
57                 showHelp();
58
59             }
60         } else {
61
62             for (final Module module : modules)
63                 if (args[0].equals(module.getModuleCommand())) {
64                     module.run(getRemainingOptions(args));
65                     return;
66                 }
67
68             System.out.println("Error: unrecognized commandline option:"
69                     + args[0] + "\n");
70             showHelp();
71         }
72
73     }
74
75     private static void showHelp() {
76         final StringBuilder buffer = new StringBuilder();
77
78         buffer.append("Commandline options: \n"
79                 + "help\n    show this help screen \n\n");
80
81         buffer.append("help <module>\n    show module specific help screen\n\n");
82
83         buffer.append("Available modules:\n\n");
84
85         for (final Module module : modules) {
86             buffer.append(module.getModuleCommand() + "\n");
87             buffer.append("    " + module.getDescription() + "\n\n");
88         }
89
90         System.out.println(buffer.toString());
91     }
92 }