[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":
helptext.Add(Resources.Resources.SabreTools_Name + " - " + Resources.Resources.SabreTools_Desc);
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("Options:");
helptext.Add(" -?, -h, --help Show this help");
helptext.Add(" --script Enable script mode (no clear screen)");
// DATFromDir
if (subset == null || subset == "d" || subset == "dfd" || subset == "d2d")
// Determine which help to show
switch (subset)
{
helptext.Add("");
helptext.Add(" -d, --dfd, --d2d Create a DAT from an input directory");
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)");
}
case null:
helptext.Add("Options:");
helptext.Add(" -?, -h, --help Show this help");
helptext.Add(" --script Enable script mode (no clear screen)");
helptext.Add(" -d, --dfd, --d2d Create a DAT from an input directory");
helptext.Add(" -es, --ext-split Split a DAT by two file extensions");
helptext.Add(" -ex, --extract Extract and remove copier headers");
helptext.Add(" -hs, --hash-split Split a DAT or folder by best-available hashes");
helptext.Add(" -ls, --lvl-split Split a SuperDAT or folder by internal path");
helptext.Add(" -re, --restore Restore header to file based on SHA-1");
helptext.Add(" -ss, --sort Sort input files by a set of DATs");
helptext.Add(" -ssd, --sort-depot Sort input files by a set of DATs");
helptext.Add(" -st, --stats Get statistics on all input DATs");
helptext.Add(" -ts, --type-split Split a DAT or folder by file types (rom/disk)");
helptext.Add(" -ud, --update Update a DAT file");
helptext.Add(" -ve, --verify Verify a folder against DATs");
helptext.Add(" -ved, --verify-depot Verify a folder against DATs");
helptext.Add("");
helptext.Add("For information on available flags, put the option name after help");
break;
// Extension Split
if (subset == null || subset == "es" || subset == "ext-split")
{
helptext.Add("");
helptext.Add(" -es, --ext-split Split a DAT by two file extensions");
helptext.Add(" -exta= First set of extensions (comma-separated)");
helptext.Add(" -extb= Second set of extensions (comma-separated)");
helptext.Add(" -out= Output directory");
}
//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;
// Extract and Remove Headers
if (subset == null || subset == "ex" || subset == "extract")
{
helptext.Add("");
helptext.Add(" -ex, --extract Extract and remove copier headers");
helptext.Add(" -out= Output directory");
}
// Extension Split
case "es":
case "ext-split":
helptext.Add("Available Flags:");
helptext.Add(" -exta= First extension (multiple allowed)");
helptext.Add(" -extb= Second extension (multiple allowed)");
helptext.Add(" -out= Output directory");
break;
// Hash Split
if (subset == null || subset == "hs" || subset == "hash-split")
{
helptext.Add("");
helptext.Add(" -hs, --hash-split Split a DAT or folder by best-available hashes");
helptext.Add(" -out= Output directory");
}
// Extract and Remove Headers
case "ex":
case "extract":
helptext.Add("Available Flags:");
helptext.Add(" -out= Output directory");
break;
// Level/SuperDAT Split
if (subset == null || subset == "ls" || subset == "lvl-split")
{
helptext.Add("");
helptext.Add(" -ls, --lvl-split Split a SuperDAT or folder by internal path");
helptext.Add(" -out= Output directory");
helptext.Add(" -s, --short Use short output names");
helptext.Add(" -ba, --base Use source DAT as base name for outputs");
}
// Hash Split
case "hs":
case "hash-split":
helptext.Add("Available Flags:");
helptext.Add(" -out= Output directory");
break;
// Restore Headers
if (subset == null || subset == "re" || subset == "restore")
{
helptext.Add("");
helptext.Add(" -re, --restore Restore header to file based on SHA-1");
helptext.Add(" -out= Output directory");
}
// Level/SuperDAT Split
case "ls":
case "lvl-split":
helptext.Add("Available Flags:");
helptext.Add(" -out= Output directory");
helptext.Add(" -s, --short Use short output names");
helptext.Add(" -ba, --base Use source DAT as base name for outputs");
break;
// Sort
if (subset == null || subset == "ss" || subset == "sort")
{
helptext.Add("");
helptext.Add(" -ss, --sort 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(" -qs, --quick Enable quick scanning of archives");
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(" -7z={1} Set scanning level for 7z archives");
helptext.Add(" -gz={2} Set scanning level for GZip archives");
helptext.Add(" -rar={2} Set scanning level for RAR archives");
helptext.Add(" -zip={1} Set scanning level for ZIP archives");
helptext.Add(" -ud, --update-dat Output updated DAT to output directory");
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
}
// Restore Headers
case "re":
case "restore":
helptext.Add("Available Flags:");
helptext.Add(" -out= Output directory");
break;
// Sort Depot
if (subset == null || subset == "ssd" || subset == "sort-depot")
{
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)");
}
// Sort
case "ss":
case "sort":
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(" -qs, --quick Enable quick scanning of archives");
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(" -7z={1} Set scanning level for 7z archives");
helptext.Add(" -gz={2} Set scanning level for GZip archives");
helptext.Add(" -rar={2} Set scanning level for RAR archives");
helptext.Add(" -zip={1} Set scanning level for ZIP archives");
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("");
helptext.Add("Archive scanning levels:");
helptext.Add(" 0 Hash archive and contents");
helptext.Add(" 1 Only hash contents");
helptext.Add(" 2 Only hash archive");
}
break;
if (subset == null || subset == "ud" || subset == "update")
{
helptext.Add("");
helptext.Add("Filter parameters game name, rom name, CRC, MD5, SHA-1 can");
// Sort Depot
case "ssd":
case "sort-depot":
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(" *00 means ends with '00'");
helptext.Add(" 00* means starts with '00'");
helptext.Add(" *00* means contains '00'");
helptext.Add(" 00 means exactly equals '00'");
helptext.Add(" *00 means ends with '00'");
helptext.Add(" 00* means starts with '00'");
helptext.Add(" *00* means contains '00'");
helptext.Add(" 00 means exactly equals '00'");
helptext.Add("");
helptext.Add("Filter parameters for size can use postfixes for inputs:");
helptext.Add(" e.g. 8kb => 8000 or 8kib => 8192");
helptext.Add("");
helptext.Add("Filter parameters for size can use postfixes for inputs:");
helptext.Add(" e.g. 8kb => 8000 or 8kib => 8192");
helptext.Add("");
helptext.Add("Most of the filter parameters allow for multiple inputs:");
helptext.Add(" e.g. --game-name=foo --game-name=bar");
helptext.Add("");
helptext.Add("Most of the filter parameters allow for multiple inputs:");
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;

View File

@@ -290,13 +290,13 @@ Options:
to be split. Files with any extensions not listed in the input lists will be included
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
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
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
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="extb">Second extension to split on</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
foreach (string input in inputs)
{
@@ -178,7 +174,7 @@ namespace SabreTools
{
DatFile datFile = new DatFile();
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))
{
@@ -186,7 +182,7 @@ namespace SabreTools
{
DatFile datFile = new DatFile();
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

View File

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