@@ -250,27 +250,47 @@ int main(int argc, char** argv)
250250 init_asset_handlers ();
251251 if (argc < 2 )
252252 {
253- std::cerr << " Usage: " << argv[0 ] << " [-m] <modname> (-m: produce .ffm; default: .ff)" << std::endl;
253+ std::cerr << " Usage: " << argv[0 ] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw )" << std::endl;
254254 return 1 ;
255255 }
256256
257257 bool make_ffm = false ;
258+ bool keep_raw = false ;
258259 std::string name;
259260
260- if (argc == 2 )
261+ for ( int i = 1 ; i < argc; ++i )
261262 {
262- fs::path argpath (argv[1 ]);
263- name = argpath.stem ().string ();
264- }
265- else if (argc >= 3 && std::string (argv[1 ]) == " -m" )
266- {
267- make_ffm = true ;
268- fs::path argpath (argv[2 ]);
269- name = argpath.stem ().string ();
263+ std::string a (argv[i]);
264+ if (a == " -m" )
265+ {
266+ make_ffm = true ;
267+ }
268+ else if (a == " -k" )
269+ {
270+ keep_raw = true ;
271+ }
272+ else if (!a.empty () && a[0 ] == ' -' )
273+ {
274+ std::cerr << " Unknown option: " << a << std::endl;
275+ std::cerr << " Usage: " << argv[0 ] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw)" << std::endl;
276+ return 1 ;
277+ }
278+ else
279+ {
280+ if (name.empty ())
281+ name = fs::path (a).stem ().string ();
282+ else
283+ {
284+ std::cerr << " Unexpected argument: " << a << std::endl;
285+ std::cerr << " Usage: " << argv[0 ] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw)" << std::endl;
286+ return 1 ;
287+ }
288+ }
270289 }
271- else
290+
291+ if (name.empty ())
272292 {
273- std::cerr << " Usage: " << argv[0 ] << " [-m] <modname> (-m: produce .ffm; default: .ff)" << std::endl;
293+ std::cerr << " Usage: " << argv[0 ] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw )" << std::endl;
274294 return 1 ;
275295 }
276296
@@ -306,5 +326,18 @@ int main(int argc, char** argv)
306326 return 1 ;
307327 }
308328 std::cout << " Successfully wrote: " << ff_out << std::endl;
329+
330+ if (!keep_raw)
331+ {
332+ std::error_code ec;
333+ if (fs::remove (ffraw, ec))
334+ {
335+ std::cout << " Removed temporary file: " << ffraw << std::endl;
336+ }
337+ else if (ec)
338+ {
339+ std::cerr << " Warning: failed to remove temporary file " << ffraw << " : " << ec.message () << std::endl;
340+ }
341+ }
309342 return 0 ;
310343}
0 commit comments