[SabreTools, Build] Convert extension split to use lists externally; overhaul help

This commit is contained in:
Matt Nadareski
2017-02-01 00:06:09 -08:00
parent fbb5ccf7d0
commit e419d5bcd3
4 changed files with 350 additions and 348 deletions

View File

@@ -148,353 +148,361 @@ namespace SabreTools.Helper.Data
case "SabreTools": case "SabreTools":
helptext.Add(Resources.Resources.SabreTools_Name + " - " + Resources.Resources.SabreTools_Desc); helptext.Add(Resources.Resources.SabreTools_Name + " - " + Resources.Resources.SabreTools_Desc);
helptext.Add(barrier); helptext.Add(barrier);
helptext.Add(Resources.Resources.Usage + ": " + Resources.Resources.SabreTools_Name + " [option] [filename|dirname] ..."); helptext.Add(Resources.Resources.Usage + ": " + Resources.Resources.SabreTools_Name + " [option] [flags] [filename|dirname] ...");
helptext.Add(""); helptext.Add("");
helptext.Add("Options:");
helptext.Add(" -?, -h, --help Show this help");
helptext.Add(" --script Enable script mode (no clear screen)");
// DATFromDir // Determine which help to show
if (subset == null || subset == "d" || subset == "dfd" || subset == "d2d") switch (subset)
{ {
helptext.Add(""); case null:
helptext.Add(" -d, --dfd, --d2d Create a DAT from an input directory"); helptext.Add("Options:");
helptext.Add(" -nm, --noMD5 Don't include MD5 in output"); helptext.Add(" -?, -h, --help Show this help");
helptext.Add(" -ns, --noSHA1 Don't include SHA1 in output"); helptext.Add(" --script Enable script mode (no clear screen)");
helptext.Add(" -b, --bare Don't include date in file name"); helptext.Add(" -d, --dfd, --d2d Create a DAT from an input directory");
helptext.Add(" -fp=, --forcepack= Set force packing"); helptext.Add(" -es, --ext-split Split a DAT by two file extensions");
helptext.Add(" Supported values are:"); helptext.Add(" -ex, --extract Extract and remove copier headers");
helptext.Add(" None, Zip, Unzip"); helptext.Add(" -hs, --hash-split Split a DAT or folder by best-available hashes");
helptext.Add(" -f, --files Treat archives as files"); helptext.Add(" -ls, --lvl-split Split a SuperDAT or folder by internal path");
helptext.Add(" -oa, --output-all Output in all formats"); helptext.Add(" -re, --restore Restore header to file based on SHA-1");
helptext.Add(" -oam, --output-am Output in AttractMode format"); helptext.Add(" -ss, --sort Sort input files by a set of DATs");
helptext.Add(" -oc, --output-cmp Output in CMP format"); helptext.Add(" -ssd, --sort-depot Sort input files by a set of DATs");
helptext.Add(" -ocsv, --output-csv Output in CSV format"); helptext.Add(" -st, --stats Get statistics on all input DATs");
helptext.Add(" -od, --output-dc Output in DOSCenter format"); helptext.Add(" -ts, --type-split Split a DAT or folder by file types (rom/disk)");
helptext.Add(" -om, --output-miss Output in Missfile format"); helptext.Add(" -ud, --update Update a DAT file");
helptext.Add(" -omd5, --output-md5 Output in MD5 format"); helptext.Add(" -ve, --verify Verify a folder against DATs");
helptext.Add(" -ool, --output-ol Output in OfflineList format"); helptext.Add(" -ved, --verify-depot Verify a folder against DATs");
helptext.Add(" -or, --output-rc Output in RomCenter format"); helptext.Add("");
helptext.Add(" -os, --output-sd Output in SabreDAT format"); helptext.Add("For information on available flags, put the option name after help");
helptext.Add(" -osfv, --ouput-sfv Output in SFV format"); break;
helptext.Add(" -osha1, --output-sha1 Output in SHA-1 format");
helptext.Add(" -osl, --output-sl Output in Softwarelist format");
helptext.Add(" -otsv, --output-tsv Output in TSV format");
helptext.Add(" -ox, --output-xml Output in Logiqx XML format [default]");
helptext.Add(" -gzf, --gz-files Allow reading of GZIP files as archives");
helptext.Add(" -ro, --romba Read files from a Romba input");
helptext.Add(" -f=, --filename= Set the external name of the DAT");
helptext.Add(" -n=, --name= Set the internal name of the DAT");
helptext.Add(" -de=, --desc= Set the description of the DAT");
helptext.Add(" -c=, --cat= Set the category of the DAT");
helptext.Add(" -v=, --version= Set the version of the DAT");
helptext.Add(" -au=, --author= Set the author of the DAT");
helptext.Add(" -sd, --superdat Enable SuperDAT creation");
helptext.Add(" -xof, --exclude-of Exclude romof, cloneof, sampleof tags");
helptext.Add(" -ab, --add-blank Output blank files for folders");
helptext.Add(" -ad, --add-date Output dates for each file parsed");
helptext.Add(" -cf, --copy-files Copy files to the temp directory before parsing");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
}
//DATFromDir
case "d":
case "d2d":
case "dfd":
helptext.Add("Available Flags:");
helptext.Add(" -nm, --noMD5 Don't include MD5 in output");
helptext.Add(" -ns, --noSHA1 Don't include SHA1 in output");
helptext.Add(" -b, --bare Don't include date in file name");
helptext.Add(" -fp=, --forcepack= Set force packing");
helptext.Add(" Supported values are:");
helptext.Add(" None, Zip, Unzip");
helptext.Add(" -f, --files Treat archives as files");
helptext.Add(" -oa, --output-all Output in all formats");
helptext.Add(" -oam, --output-am Output in AttractMode format");
helptext.Add(" -oc, --output-cmp Output in CMP format");
helptext.Add(" -ocsv, --output-csv Output in CSV format");
helptext.Add(" -od, --output-dc Output in DOSCenter format");
helptext.Add(" -om, --output-miss Output in Missfile format");
helptext.Add(" -omd5, --output-md5 Output in MD5 format");
helptext.Add(" -ool, --output-ol Output in OfflineList format");
helptext.Add(" -or, --output-rc Output in RomCenter format");
helptext.Add(" -os, --output-sd Output in SabreDAT format");
helptext.Add(" -osfv, --ouput-sfv Output in SFV format");
helptext.Add(" -osha1, --output-sha1 Output in SHA-1 format");
helptext.Add(" -osl, --output-sl Output in Softwarelist format");
helptext.Add(" -otsv, --output-tsv Output in TSV format");
helptext.Add(" -ox, --output-xml Output in Logiqx XML format [default]");
helptext.Add(" -gzf, --gz-files Allow reading of GZIP files as archives");
helptext.Add(" -ro, --romba Read files from a Romba input");
helptext.Add(" -f=, --filename= Set the external name of the DAT");
helptext.Add(" -n=, --name= Set the internal name of the DAT");
helptext.Add(" -de=, --desc= Set the description of the DAT");
helptext.Add(" -c=, --cat= Set the category of the DAT");
helptext.Add(" -v=, --version= Set the version of the DAT");
helptext.Add(" -au=, --author= Set the author of the DAT");
helptext.Add(" -sd, --superdat Enable SuperDAT creation");
helptext.Add(" -xof, --exclude-of Exclude romof, cloneof, sampleof tags");
helptext.Add(" -ab, --add-blank Output blank files for folders");
helptext.Add(" -ad, --add-date Output dates for each file parsed");
helptext.Add(" -cf, --copy-files Copy files to the temp directory before parsing");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
break;
// Extension Split // Extension Split
if (subset == null || subset == "es" || subset == "ext-split") case "es":
{ case "ext-split":
helptext.Add(""); helptext.Add("Available Flags:");
helptext.Add(" -es, --ext-split Split a DAT by two file extensions"); helptext.Add(" -exta= First extension (multiple allowed)");
helptext.Add(" -exta= First set of extensions (comma-separated)"); helptext.Add(" -extb= Second extension (multiple allowed)");
helptext.Add(" -extb= Second set of extensions (comma-separated)"); helptext.Add(" -out= Output directory");
helptext.Add(" -out= Output directory"); break;
}
// Extract and Remove Headers // Extract and Remove Headers
if (subset == null || subset == "ex" || subset == "extract") case "ex":
{ case "extract":
helptext.Add(""); helptext.Add("Available Flags:");
helptext.Add(" -ex, --extract Extract and remove copier headers"); helptext.Add(" -out= Output directory");
helptext.Add(" -out= Output directory"); break;
}
// Hash Split // Hash Split
if (subset == null || subset == "hs" || subset == "hash-split") case "hs":
{ case "hash-split":
helptext.Add(""); helptext.Add("Available Flags:");
helptext.Add(" -hs, --hash-split Split a DAT or folder by best-available hashes"); helptext.Add(" -out= Output directory");
helptext.Add(" -out= Output directory"); break;
}
// Level/SuperDAT Split // Level/SuperDAT Split
if (subset == null || subset == "ls" || subset == "lvl-split") case "ls":
{ case "lvl-split":
helptext.Add(""); helptext.Add("Available Flags:");
helptext.Add(" -ls, --lvl-split Split a SuperDAT or folder by internal path"); helptext.Add(" -out= Output directory");
helptext.Add(" -out= Output directory"); helptext.Add(" -s, --short Use short output names");
helptext.Add(" -s, --short Use short output names"); helptext.Add(" -ba, --base Use source DAT as base name for outputs");
helptext.Add(" -ba, --base Use source DAT as base name for outputs"); break;
}
// Restore Headers // Restore Headers
if (subset == null || subset == "re" || subset == "restore") case "re":
{ case "restore":
helptext.Add(""); helptext.Add("Available Flags:");
helptext.Add(" -re, --restore Restore header to file based on SHA-1"); helptext.Add(" -out= Output directory");
helptext.Add(" -out= Output directory"); break;
}
// Sort // Sort
if (subset == null || subset == "ss" || subset == "sort") case "ss":
{ case "sort":
helptext.Add(""); helptext.Add("Available Flags:");
helptext.Add(" -ss, --sort Sort input files by a set of DATs"); helptext.Add(" -dat= Input DAT to rebuild against");
helptext.Add(" -dat= Input DAT to rebuild against"); helptext.Add(" -out= Output directory");
helptext.Add(" -out= Output directory"); helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -t=, --temp= Set the temporary directory to use"); helptext.Add(" -del, --delete Delete fully rebuilt input files");
helptext.Add(" -del, --delete Delete fully rebuilt input files"); helptext.Add(" -in, --inverse Rebuild only files not in DAT");
helptext.Add(" -in, --inverse Rebuild only files not in DAT"); helptext.Add(" -qs, --quick Enable quick scanning of archives");
helptext.Add(" -qs, --quick Enable quick scanning of archives"); helptext.Add(" -ad, --add-date Add original dates from DAT, if possible");
helptext.Add(" -ad, --add-date Add original dates from DAT, if possible"); //helptext.Add(" -t7z Enable Torrent7z output");
//helptext.Add(" -t7z Enable Torrent7z output"); helptext.Add(" -tar Enable TAR output");
helptext.Add(" -tar Enable TAR output"); helptext.Add(" -tgz Enable TorrentGZ output");
helptext.Add(" -tgz Enable TorrentGZ output"); helptext.Add(" -r, --romba Enable Romba depot dir output");
helptext.Add(" -r, --romba Enable Romba depot dir output"); //helptext.Add(" -tlrz Enable TorrentLRZ output");
//helptext.Add(" -tlrz Enable TorrentLRZ output"); //helptext.Add(" -trar Enable TorrentRAR output");
//helptext.Add(" -trar Enable TorrentRAR output"); //helptext.Add(" -txz Enable TorrentXZ output");
//helptext.Add(" -txz Enable TorrentXZ output"); helptext.Add(" -tzip Enable TorrentZip output");
helptext.Add(" -tzip Enable TorrentZip output"); helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all"); helptext.Add(" -7z={1} Set scanning level for 7z archives");
helptext.Add(" -7z={1} Set scanning level for 7z archives"); helptext.Add(" -gz={2} Set scanning level for GZip archives");
helptext.Add(" -gz={2} Set scanning level for GZip archives"); helptext.Add(" -rar={2} Set scanning level for RAR archives");
helptext.Add(" -rar={2} Set scanning level for RAR archives"); helptext.Add(" -zip={1} Set scanning level for ZIP archives");
helptext.Add(" -zip={1} Set scanning level for ZIP archives"); helptext.Add(" -ud, --update-dat Output updated DAT to output directory");
helptext.Add(" -ud, --update-dat Output updated DAT to output directory"); helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
}
// Sort Depot helptext.Add("");
if (subset == null || subset == "ssd" || subset == "sort-depot") helptext.Add("Archive scanning levels:");
{
helptext.Add("");
helptext.Add(" -ssd, --sort-depot Sort input files by a set of DATs");
helptext.Add(" -dat= Input DAT to rebuild against");
helptext.Add(" -out= Output directory");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -del, --delete Delete fully rebuilt input files");
helptext.Add(" -in, --inverse Rebuild only files not in DAT");
helptext.Add(" -ad, --add-date Add original dates from DAT, if possible");
//helptext.Add(" -t7z Enable Torrent7z output");
helptext.Add(" -tar Enable TAR output");
helptext.Add(" -tgz Enable TorrentGZ output");
helptext.Add(" -r, --romba Enable Romba depot dir output");
//helptext.Add(" -tlrz Enable TorrentLRZ output");
//helptext.Add(" -trar Enable TorrentRAR output");
//helptext.Add(" -txz Enable TorrentXZ output");
helptext.Add(" -tzip Enable TorrentZip output");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
helptext.Add(" -ud, --update-dat Output updated DAT to output directory");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
}
// Stats
if (subset == null || subset == "st" || subset == "stats")
{
helptext.Add("");
helptext.Add(" -st, --stats Get statistics on all input DATs");
helptext.Add(" -bc, --baddump-col Add baddump stats to output");
helptext.Add(" -csv, --csv Output in Comma-Separated Value format");
helptext.Add(" -f=, --filename= Set the filename for the output");
helptext.Add(" -out= Output directory");
helptext.Add(" -html, --html Output in HTML format");
helptext.Add(" -nc, --nodump-col Add nodump stats to output");
helptext.Add(" -si, --single Show individual statistics");
helptext.Add(" -tsv, --tsv Output in Tab-Separated Value format");
}
// Type Split
if (subset == null || subset == "ts" || subset == "type-split")
{
helptext.Add("");
helptext.Add(" -ts, --type-split Split a DAT or folder by file types (rom/disk)");
helptext.Add(" -out= Output directory");
}
// Update
if (subset == null || subset == "ud" || subset == "update")
{
helptext.Add("");
helptext.Add(" -ud, --update Update a DAT file");
helptext.Add(" -oa, --output-all Output in all formats");
helptext.Add(" -oam, --output-am Output in AttractMode format");
helptext.Add(" -oc, --output-cmp Output in CMP format");
helptext.Add(" -ocsv, --output-csv Output in CSV format");
helptext.Add(" -pre=, --prefix= Set prefix for all lines");
helptext.Add(" -post=, --postfix= Set postfix for all lines");
helptext.Add(" -q, --quotes Put double-quotes around each item");
helptext.Add(" -od, --output-dc Output in DOSCenter format");
helptext.Add(" -om, --output-miss Output in Missfile format");
helptext.Add(" -r, --roms Output roms to miss instead of sets");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -pre=, --prefix= Set prefix for all lines");
helptext.Add(" -post=, --postfix= Set postfix for all lines");
helptext.Add(" -q, --quotes Put double-quotes around each item");
helptext.Add(" -ae=, --add-ext= Add an extension to each item");
helptext.Add(" -rep=, --rep-ext= Replace all extensions with specified");
helptext.Add(" -rme, --rem-ext Remove all extensions from each item");
helptext.Add(" -ro, --romba Output in Romba format (requires SHA-1)");
helptext.Add(" -tsv, --tsv Output in Tab-Separated Value format");
helptext.Add(" -csv, --csv Output in Comma-Separated Value format");
helptext.Add(" -omd5, --output-md5 Output in MD5 format");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -ool, --output-ol Output in OfflineList format");
helptext.Add(" -or, --output-rc Output in RomCenter format");
helptext.Add(" -os, --output-sd Output in SabreDAT format");
helptext.Add(" -osfv, --ouput-sfv Output in SFV format");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -osha1, --output-sha1 Output in SHA-1 format");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -osl, --output-sl Output in Softwarelist format");
helptext.Add(" -otsv, --output-tsv Output in TSV format");
helptext.Add(" -pre=, --prefix= Set prefix for all lines");
helptext.Add(" -post=, --postfix= Set postfix for all lines");
helptext.Add(" -q, --quotes Put double-quotes around each item");
helptext.Add(" -ox, --output-xml Output in Logiqx XML format");
helptext.Add(" -f=, --filename= Set a new filename");
helptext.Add(" -n=, --name= Set a new internal name");
helptext.Add(" -de=, --desc= Set a new description");
helptext.Add(" -r=, --root= Set a new rootdir");
helptext.Add(" -ca=, --category= Set a new category");
helptext.Add(" -v=, --version= Set a new version");
helptext.Add(" -da=, --date= Set a new date");
helptext.Add(" -au=, --author= Set a new author");
helptext.Add(" -em=, --email= Set a new email");
helptext.Add(" -hp=, --homepage= Set a new homepage");
helptext.Add(" -u=, --url= Set a new URL");
helptext.Add(" -co=, --comment= Set a new comment");
helptext.Add(" -h=, --header= Set a new header skipper");
helptext.Add(" -sd=, --superdat Set SuperDAT type");
helptext.Add(" -fm=, --forcemerge= Set force merging");
helptext.Add(" Supported values are:");
helptext.Add(" None, Split, Full");
helptext.Add(" -fn=, --forcend= Set force nodump");
helptext.Add(" Supported values are:");
helptext.Add(" None, Obsolete, Required, Ignore");
helptext.Add(" -fp=, --forcepack= Set force packing");
helptext.Add(" Supported values are:");
helptext.Add(" None, Zip, Unzip");
helptext.Add(" -xof, --exclude-of Exclude romof, cloneof, sampleof tags");
helptext.Add(" -clean Clean game names according to WoD standards");
helptext.Add(" -sl, --softlist Use Software List name instead of description");
helptext.Add(" -dm, --dat-merged Create merged sets");
helptext.Add(" -ds, --dat-split Create split sets");
helptext.Add(" -dnm, --dat-nonmerged Create non-merged sets");
helptext.Add(" -df, --dat-fullnonmerged Create fully non-merged sets");
helptext.Add(" -trim Trim file names to fit NTFS length");
helptext.Add(" -rd=, --root-dir= Set the root directory for calc");
helptext.Add(" -si, --single All game names replaced by '!'");
helptext.Add(" -dd, --dedup Enable deduping in the created DAT");
helptext.Add(" -m, --merge Merge the input DATs");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -di, --diff Create diffdats from inputs (all outputs)");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -c, --cascade Enable cascaded diffing");
helptext.Add(" -ip, --inplace Enable inplace, cascaded diff");
helptext.Add(" -sf, --skip Skip output of first DAT");
helptext.Add(" -rc, --rev-cascade Enable reverse cascaded diffing");
helptext.Add(" -ip, --inplace Enable inplace, cascaded diff");
helptext.Add(" -sf, --skip Skip output of first DAT");
helptext.Add(" -did, --diff-du Create diffdat containing just duplicates");
helptext.Add(" [Can be used with other -diX flags]");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -dii, --diff-in Create diffdats for individual DATs");
helptext.Add(" [Can be used with other -diX flags]");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -din, --diff-nd Create diffdat containing no duplicates");
helptext.Add(" [Can be used with other -diX flags]");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -gn=, --game-name= Filter by game name");
helptext.Add(" -ngn=, --not-game= Filter by not game name");
helptext.Add(" -rn=, --rom-name= Filter by rom name");
helptext.Add(" -nrn=, --not-rom= Filter by not rom name");
helptext.Add(" -rt=, --rom-type= Filter by rom type");
helptext.Add(" -nrt=, --not-type= Filter by not rom type");
helptext.Add(" -sgt=, --greater= Filter by size >=");
helptext.Add(" -slt=, --less= Filter by size <=");
helptext.Add(" -seq=, --equal= Filter by size ==");
helptext.Add(" -crc=, --crc= Filter by CRC hash");
helptext.Add(" -ncrc=, --not-crc= Filter by not CRC hash");
helptext.Add(" -md5=, --md5= Filter by MD5 hash");
helptext.Add(" -nmd5=, --not-md5= Filter by not MD5 hash");
helptext.Add(" -sha1=, --sha1= Filter by SHA-1 hash");
helptext.Add(" -nsha1=, --not-sha1= Filter by not SHA-1 hash");
helptext.Add(" -is=, --status= Include only items with a given status");
helptext.Add(" Supported values are:");
helptext.Add(" None, Good, BadDump, Nodump, Verified");
helptext.Add(" -nis=, --not-status= Exclude items with a given status");
helptext.Add(" Supported values are:");
helptext.Add(" None, Good, BadDump, Nodump, Verified");
helptext.Add(" -gt=, --game-type= Include only games with a given type");
helptext.Add(" Supported values are:");
helptext.Add(" None, Bios, Device, Mechanical");
helptext.Add(" -ngt=, --not-gtype= Exclude only games with a given type");
helptext.Add(" Supported values are:");
helptext.Add(" None, Bios, Device, Mechanical");
helptext.Add(" -run, --runnable Include only items that are marked runnable");
helptext.Add(" -nrun, --not-run Include only items that are marked unrunnable");
helptext.Add(" -out= Output directory (overridden by --inplace)");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
}
// Verify
if (subset == null || subset == "ve" || subset == "verify")
{
helptext.Add("");
helptext.Add(" -ve, --verify Verify a folder against DATs");
helptext.Add(" -dat= Input DAT to verify against");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -ho, --hash-only Check files by hash only");
helptext.Add(" -qs, --quick Enable quick scanning of archives");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
}
// Verify Depot
if (subset == null || subset == "ved" || subset == "verify-depot")
{
helptext.Add("");
helptext.Add(" -ved, --verify-depot Verify a folder against DATs");
helptext.Add(" -dat= Input DAT to verify against");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
}
// Additional notes
if (subset == null || subset == "ss" || subset == "sort")
{
helptext.Add("");
helptext.Add("Archive scanning levels:");
helptext.Add(" 0 Hash archive and contents"); helptext.Add(" 0 Hash archive and contents");
helptext.Add(" 1 Only hash contents"); helptext.Add(" 1 Only hash contents");
helptext.Add(" 2 Only hash archive"); helptext.Add(" 2 Only hash archive");
} break;
if (subset == null || subset == "ud" || subset == "update") // Sort Depot
{ case "ssd":
helptext.Add(""); case "sort-depot":
helptext.Add("Filter parameters game name, rom name, CRC, MD5, SHA-1 can"); helptext.Add("Available Flags:");
helptext.Add(" -dat= Input DAT to rebuild against");
helptext.Add(" -out= Output directory");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -del, --delete Delete fully rebuilt input files");
helptext.Add(" -in, --inverse Rebuild only files not in DAT");
helptext.Add(" -ad, --add-date Add original dates from DAT, if possible");
//helptext.Add(" -t7z Enable Torrent7z output");
helptext.Add(" -tar Enable TAR output");
helptext.Add(" -tgz Enable TorrentGZ output");
helptext.Add(" -r, --romba Enable Romba depot dir output");
//helptext.Add(" -tlrz Enable TorrentLRZ output");
//helptext.Add(" -trar Enable TorrentRAR output");
//helptext.Add(" -txz Enable TorrentXZ output");
helptext.Add(" -tzip Enable TorrentZip output");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
helptext.Add(" -ud, --update-dat Output updated DAT to output directory");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
break;
// Stats
case "st":
case "stats":
helptext.Add("Available Flags:");
helptext.Add(" -bc, --baddump-col Add baddump stats to output");
helptext.Add(" -csv, --csv Output in Comma-Separated Value format");
helptext.Add(" -f=, --filename= Set the filename for the output");
helptext.Add(" -out= Output directory");
helptext.Add(" -html, --html Output in HTML format");
helptext.Add(" -nc, --nodump-col Add nodump stats to output");
helptext.Add(" -si, --single Show individual statistics");
helptext.Add(" -tsv, --tsv Output in Tab-Separated Value format");
break;
// Type Split
case "ts":
case "type-split":
helptext.Add("Available Flags:");
helptext.Add(" -out= Output directory");
break;
// Update
case "ud":
case "update":
helptext.Add("Available Flags:");
helptext.Add(" -oa, --output-all Output in all formats");
helptext.Add(" -oam, --output-am Output in AttractMode format");
helptext.Add(" -oc, --output-cmp Output in CMP format");
helptext.Add(" -ocsv, --output-csv Output in CSV format");
helptext.Add(" -pre=, --prefix= Set prefix for all lines");
helptext.Add(" -post=, --postfix= Set postfix for all lines");
helptext.Add(" -q, --quotes Put double-quotes around each item");
helptext.Add(" -od, --output-dc Output in DOSCenter format");
helptext.Add(" -om, --output-miss Output in Missfile format");
helptext.Add(" -r, --roms Output roms to miss instead of sets");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -pre=, --prefix= Set prefix for all lines");
helptext.Add(" -post=, --postfix= Set postfix for all lines");
helptext.Add(" -q, --quotes Put double-quotes around each item");
helptext.Add(" -ae=, --add-ext= Add an extension to each item");
helptext.Add(" -rep=, --rep-ext= Replace all extensions with specified");
helptext.Add(" -rme, --rem-ext Remove all extensions from each item");
helptext.Add(" -ro, --romba Output in Romba format (requires SHA-1)");
helptext.Add(" -tsv, --tsv Output in Tab-Separated Value format");
helptext.Add(" -csv, --csv Output in Comma-Separated Value format");
helptext.Add(" -omd5, --output-md5 Output in MD5 format");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -ool, --output-ol Output in OfflineList format");
helptext.Add(" -or, --output-rc Output in RomCenter format");
helptext.Add(" -os, --output-sd Output in SabreDAT format");
helptext.Add(" -osfv, --ouput-sfv Output in SFV format");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -osha1, --output-sha1 Output in SHA-1 format");
helptext.Add(" -gp, --game-prefix Add game name as a prefix");
helptext.Add(" -osl, --output-sl Output in Softwarelist format");
helptext.Add(" -otsv, --output-tsv Output in TSV format");
helptext.Add(" -pre=, --prefix= Set prefix for all lines");
helptext.Add(" -post=, --postfix= Set postfix for all lines");
helptext.Add(" -q, --quotes Put double-quotes around each item");
helptext.Add(" -ox, --output-xml Output in Logiqx XML format");
helptext.Add(" -f=, --filename= Set a new filename");
helptext.Add(" -n=, --name= Set a new internal name");
helptext.Add(" -de=, --desc= Set a new description");
helptext.Add(" -r=, --root= Set a new rootdir");
helptext.Add(" -ca=, --category= Set a new category");
helptext.Add(" -v=, --version= Set a new version");
helptext.Add(" -da=, --date= Set a new date");
helptext.Add(" -au=, --author= Set a new author");
helptext.Add(" -em=, --email= Set a new email");
helptext.Add(" -hp=, --homepage= Set a new homepage");
helptext.Add(" -u=, --url= Set a new URL");
helptext.Add(" -co=, --comment= Set a new comment");
helptext.Add(" -h=, --header= Set a new header skipper");
helptext.Add(" -sd=, --superdat Set SuperDAT type");
helptext.Add(" -fm=, --forcemerge= Set force merging");
helptext.Add(" Supported values are:");
helptext.Add(" None, Split, Full");
helptext.Add(" -fn=, --forcend= Set force nodump");
helptext.Add(" Supported values are:");
helptext.Add(" None, Obsolete, Required, Ignore");
helptext.Add(" -fp=, --forcepack= Set force packing");
helptext.Add(" Supported values are:");
helptext.Add(" None, Zip, Unzip");
helptext.Add(" -xof, --exclude-of Exclude romof, cloneof, sampleof tags");
helptext.Add(" -clean Clean game names according to WoD standards");
helptext.Add(" -sl, --softlist Use Software List name instead of description");
helptext.Add(" -dm, --dat-merged Create merged sets");
helptext.Add(" -ds, --dat-split Create split sets");
helptext.Add(" -dnm, --dat-nonmerged Create non-merged sets");
helptext.Add(" -df, --dat-fullnonmerged Create fully non-merged sets");
helptext.Add(" -trim Trim file names to fit NTFS length");
helptext.Add(" -rd=, --root-dir= Set the root directory for calc");
helptext.Add(" -si, --single All game names replaced by '!'");
helptext.Add(" -dd, --dedup Enable deduping in the created DAT");
helptext.Add(" -m, --merge Merge the input DATs");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -di, --diff Create diffdats from inputs (all outputs)");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -c, --cascade Enable cascaded diffing");
helptext.Add(" -ip, --inplace Enable inplace, cascaded diff");
helptext.Add(" -sf, --skip Skip output of first DAT");
helptext.Add(" -rc, --rev-cascade Enable reverse cascaded diffing");
helptext.Add(" -ip, --inplace Enable inplace, cascaded diff");
helptext.Add(" -sf, --skip Skip output of first DAT");
helptext.Add(" -did, --diff-du Create diffdat containing just duplicates");
helptext.Add(" [Can be used with other -diX flags]");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -dii, --diff-in Create diffdats for individual DATs");
helptext.Add(" [Can be used with other -diX flags]");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -din, --diff-nd Create diffdat containing no duplicates");
helptext.Add(" [Can be used with other -diX flags]");
helptext.Add(" -b, --bare Don't include date in automatic name");
helptext.Add(" -gn=, --game-name= Filter by game name");
helptext.Add(" -ngn=, --not-game= Filter by not game name");
helptext.Add(" -rn=, --rom-name= Filter by rom name");
helptext.Add(" -nrn=, --not-rom= Filter by not rom name");
helptext.Add(" -rt=, --rom-type= Filter by rom type");
helptext.Add(" -nrt=, --not-type= Filter by not rom type");
helptext.Add(" -sgt=, --greater= Filter by size >=");
helptext.Add(" -slt=, --less= Filter by size <=");
helptext.Add(" -seq=, --equal= Filter by size ==");
helptext.Add(" -crc=, --crc= Filter by CRC hash");
helptext.Add(" -ncrc=, --not-crc= Filter by not CRC hash");
helptext.Add(" -md5=, --md5= Filter by MD5 hash");
helptext.Add(" -nmd5=, --not-md5= Filter by not MD5 hash");
helptext.Add(" -sha1=, --sha1= Filter by SHA-1 hash");
helptext.Add(" -nsha1=, --not-sha1= Filter by not SHA-1 hash");
helptext.Add(" -is=, --status= Include only items with a given status");
helptext.Add(" Supported values are:");
helptext.Add(" None, Good, BadDump, Nodump, Verified");
helptext.Add(" -nis=, --not-status= Exclude items with a given status");
helptext.Add(" Supported values are:");
helptext.Add(" None, Good, BadDump, Nodump, Verified");
helptext.Add(" -gt=, --game-type= Include only games with a given type");
helptext.Add(" Supported values are:");
helptext.Add(" None, Bios, Device, Mechanical");
helptext.Add(" -ngt=, --not-gtype= Exclude only games with a given type");
helptext.Add(" Supported values are:");
helptext.Add(" None, Bios, Device, Mechanical");
helptext.Add(" -run, --runnable Include only items that are marked runnable");
helptext.Add(" -nrun, --not-run Include only items that are marked unrunnable");
helptext.Add(" -out= Output directory (overridden by --inplace)");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
helptext.Add("");
helptext.Add("Filter parameters game name, rom name, CRC, MD5, SHA-1 can");
helptext.Add("do partial matches using asterisks as follows (case insensitive):"); helptext.Add("do partial matches using asterisks as follows (case insensitive):");
helptext.Add(" *00 means ends with '00'"); helptext.Add(" *00 means ends with '00'");
helptext.Add(" 00* means starts with '00'"); helptext.Add(" 00* means starts with '00'");
helptext.Add(" *00* means contains '00'"); helptext.Add(" *00* means contains '00'");
helptext.Add(" 00 means exactly equals '00'"); helptext.Add(" 00 means exactly equals '00'");
helptext.Add(""); helptext.Add("");
helptext.Add("Filter parameters for size can use postfixes for inputs:"); helptext.Add("Filter parameters for size can use postfixes for inputs:");
helptext.Add(" e.g. 8kb => 8000 or 8kib => 8192"); helptext.Add(" e.g. 8kb => 8000 or 8kib => 8192");
helptext.Add(""); helptext.Add("");
helptext.Add("Most of the filter parameters allow for multiple inputs:"); helptext.Add("Most of the filter parameters allow for multiple inputs:");
helptext.Add(" e.g. --game-name=foo --game-name=bar"); helptext.Add(" e.g. --game-name=foo --game-name=bar");
break;
// Verify
case "ve":
case "verify":
helptext.Add("Available Flags:");
helptext.Add(" -dat= Input DAT to verify against");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -ho, --hash-only Check files by hash only");
helptext.Add(" -qs, --quick Enable quick scanning of archives");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
break;
// Verify Depot
case "ved":
case "verify-depot":
helptext.Add("Available Flags:");
helptext.Add(" -dat= Input DAT to verify against");
helptext.Add(" -t=, --temp= Set the temporary directory to use");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
break;
// Default
default:
helptext.Add("Available Flags:");
helptext.Add(" No flags found for " + subset);
break;
} }
break; break;

View File

@@ -290,13 +290,13 @@ Options:
to be split. Files with any extensions not listed in the input lists will be included to be split. Files with any extensions not listed in the input lists will be included
in both outputted DAT files. in both outputted DAT files.
-exta= First set of extensions (comma-separated) -exta= First extension (multiple allowed)
Set the extensions to be used to populate the first DAT. If more than one Set the extensions to be used to populate the first DAT. If more than one
extension is defined, they must be separated by commas. extension is defined, they must be placed in separate flags.
-extb= Second set of extensions (comma-separated) -extb= Second extension (multiple allowed)
Set the extensions to be used to populate the second DAT. If more than one Set the extensions to be used to populate the second DAT. If more than one
extension is defined, they must be separated by commas. extension is defined, they must be placed in separate flags.
-out= Set the name of the output directory -out= Set the name of the output directory
This sets an output folder to be used when the files are created. If a path This sets an output folder to be used when the files are created. If a path

View File

@@ -165,12 +165,8 @@ namespace SabreTools
/// <param name="exta">First extension to split on</param> /// <param name="exta">First extension to split on</param>
/// <param name="extb">Second extension to split on</param> /// <param name="extb">Second extension to split on</param>
/// <param name="outDir">Output directory for the split files</param> /// <param name="outDir">Output directory for the split files</param>
private static void InitExtSplit(List<string> inputs, string exta, string extb, string outDir) private static void InitExtSplit(List<string> inputs, List<string> exta, List<string> extb, string outDir)
{ {
// Convert comma-separated strings to list
List<string> extaList = exta.Split(',').ToList();
List<string> extbList = extb.Split(',').ToList();
// Loop over the input files // Loop over the input files
foreach (string input in inputs) foreach (string input in inputs)
{ {
@@ -178,7 +174,7 @@ namespace SabreTools
{ {
DatFile datFile = new DatFile(); DatFile datFile = new DatFile();
datFile.Parse(Path.GetFullPath(input), 0, 0, _logger, softlist: true); datFile.Parse(Path.GetFullPath(input), 0, 0, _logger, softlist: true);
datFile.SplitByExt(outDir, Path.GetDirectoryName(input), extaList, extbList, _logger); datFile.SplitByExt(outDir, Path.GetDirectoryName(input), exta, extb, _logger);
} }
else if (Directory.Exists(input)) else if (Directory.Exists(input))
{ {
@@ -186,7 +182,7 @@ namespace SabreTools
{ {
DatFile datFile = new DatFile(); DatFile datFile = new DatFile();
datFile.Parse(Path.GetFullPath(file), 0, 0, _logger, softlist: true); datFile.Parse(Path.GetFullPath(file), 0, 0, _logger, softlist: true);
datFile.SplitByExt(outDir, (input.EndsWith(Path.DirectorySeparatorChar.ToString()) ? input : input + Path.DirectorySeparatorChar), extaList, extbList, _logger); datFile.SplitByExt(outDir, (input.EndsWith(Path.DirectorySeparatorChar.ToString()) ? input : input + Path.DirectorySeparatorChar), exta, extb, _logger);
} }
} }
else else

View File

@@ -124,8 +124,6 @@ namespace SabreTools
date = null, date = null,
description = null, description = null,
email = null, email = null,
exta = null,
extb = null,
filename = null, filename = null,
forcemerge = "", forcemerge = "",
forcend = "", forcend = "",
@@ -144,8 +142,8 @@ namespace SabreTools
version = null; version = null;
List<string> crc = new List<string>(); List<string> crc = new List<string>();
List<string> datfiles = new List<string>(); List<string> datfiles = new List<string>();
//List<string> exta = new List<string>(); List<string> exta = new List<string>();
//List<string> extb = new List<string>(); List<string> extb = new List<string>();
List<string> gamename = new List<string>(); List<string> gamename = new List<string>();
List<string> gametype = new List<string>(); List<string> gametype = new List<string>();
List<string> inputs = new List<string>(); List<string> inputs = new List<string>();
@@ -563,11 +561,11 @@ namespace SabreTools
break; break;
case "-exta": case "-exta":
case "--exta": case "--exta":
exta = args[++i]; exta.Add(args[++i]);
break; break;
case "-extb": case "-extb":
case "--extb": case "--extb":
extb = args[++i]; extb.Add(args[++i]);
break; break;
case "-fi": case "-fi":
case "--filename": case "--filename":
@@ -796,11 +794,11 @@ namespace SabreTools
break; break;
case "-exta": case "-exta":
case "--exta": case "--exta":
exta = split[1]; exta.Add(split[1]);
break; break;
case "-extb": case "-extb":
case "--extb": case "--extb":
extb = split[1]; extb.Add(split[1]);
break; break;
case "-f": case "-f":
case "--filename": case "--filename":