@@ -124,57 +124,48 @@ void doJoin(const String names[MaxChannels], const String &output, const bool mo
124124
125125int main (int argc, const char *args[])
126126{
127- initializeConsoleLogger ();
128127 try
129128 {
129+ initializeConsoleLogger ();
130+
130131 Holder<Ini> cmd = newIni ();
131132 cmd->parseCmd (argc, args);
133+ cmd->addHelp (Stringizer () + " examples:" );
134+ cmd->addHelp (Stringizer () + args[0 ] + " -j -1 r.png -2 g.png -o rg.png" );
135+ cmd->addHelp (Stringizer () + args[0 ] + " -s -i rg.png -1 r.png -2 g.png" );
136+ cmd->addHelp (Stringizer () + " predefined 'black' and 'white' images can be used for joining" );
137+ cmd->addHelp (" " );
132138 const bool split = cmd->cmdBool (' s' , " split" , false );
133139 const bool join = cmd->cmdBool (' j' , " join" , false );
134- const bool help = cmd->cmdBool (' ?' , " help" , false );
135140
136141 String names[MaxChannels] = {};
142+ for (uint32 i = 0 ; i < MaxChannels; i++)
143+ names[i] = cmd->cmdString (0 , Stringizer () + (i + 1 ), names[i]);
137144
138145 if (split && !join)
139146 {
140- for (uint32 i = 0 ; i < MaxChannels; i++)
141- names[i] = cmd->cmdString (0 , Stringizer () + (i + 1 ), names[i]);
142- String input = cmd->cmdString (' i' , " input" );
143-
144- if (!help)
145- {
146- cmd->checkUnusedWithHelp ();
147- doSplit (names, input);
148- return 0 ;
149- }
147+ const String input = cmd->cmdString (' i' , " input" , " " );
148+ cmd->checkCmd ();
149+ if (input.empty ())
150+ CAGE_THROW_ERROR (Exception, " input must be specified" );
151+ doSplit (names, input);
152+ return 0 ;
150153 }
151154
152155 if (join && !split)
153156 {
154- for (uint32 i = 0 ; i < MaxChannels; i++)
155- names[i] = cmd->cmdString (0 , Stringizer () + (i + 1 ), names[i]);
156- const String output = cmd->cmdString (' o' , " output" );
157+ const String output = cmd->cmdString (' o' , " output" , " " );
157158 const bool mono = cmd->cmdBool (' m' , " mono" , false );
158-
159- if (!help)
160- {
161- cmd->checkUnusedWithHelp ();
162- doJoin (names, output, mono);
163- return 0 ;
164- }
165- }
166-
167- if (help)
168- {
169- cmd->logHelp ();
170- CAGE_LOG (SeverityEnum::Info, " help" , Stringizer () + " examples:" );
171- CAGE_LOG (SeverityEnum::Info, " help" , Stringizer () + args[0 ] + " -j -1 r.png -2 g.png -o rg.png" );
172- CAGE_LOG (SeverityEnum::Info, " help" , Stringizer () + args[0 ] + " -s -i rg.png -1 r.png -2 g.png" );
173- CAGE_LOG (SeverityEnum::Info, " help" , Stringizer () + " predefined 'black' and 'white' images can be used for joining" );
159+ cmd->checkCmd ();
160+ if (output.empty ())
161+ CAGE_THROW_ERROR (Exception, " output must be specified" );
162+ doJoin (names, output, mono);
174163 return 0 ;
175164 }
176165
177- CAGE_THROW_ERROR (Exception, " exactly one of --split (-s) or --join (-j) has to be specified" );
166+ if (cmd->requestsHelp ())
167+ cmd->printHelp ();
168+ CAGE_THROW_ERROR (Exception, " exactly one of --split (-s) or --join (-j) must be specified" );
178169 }
179170 catch (...)
180171 {
0 commit comments