ArchiveCommandLine.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // ArchiveCommandLine.h
  2. #ifndef __ARCHIVECOMMANDLINE_H
  3. #define __ARCHIVECOMMANDLINE_H
  4. #include "Common/Wildcard.h"
  5. #include "Common/CommandLineParser.h"
  6. #include "Extract.h"
  7. #include "Update.h"
  8. struct CArchiveCommandLineException: public AString
  9. {
  10. CArchiveCommandLineException(const char *errorMessage): AString(errorMessage) {}
  11. };
  12. namespace NCommandType { enum EEnum
  13. {
  14. kAdd = 0,
  15. kUpdate,
  16. kDelete,
  17. kTest,
  18. kExtract,
  19. kFullExtract,
  20. kList,
  21. kBenchmark,
  22. kInfo
  23. };}
  24. namespace NRecursedType { enum EEnum
  25. {
  26. kRecursed,
  27. kWildCardOnlyRecursed,
  28. kNonRecursed
  29. };}
  30. struct CArchiveCommand
  31. {
  32. NCommandType::EEnum CommandType;
  33. bool IsFromExtractGroup() const;
  34. bool IsFromUpdateGroup() const;
  35. bool IsTestMode() const { return CommandType == NCommandType::kTest; }
  36. NExtract::NPathMode::EEnum GetPathMode() const;
  37. };
  38. struct CArchiveCommandLineOptions
  39. {
  40. bool HelpMode;
  41. #ifdef _WIN32
  42. bool LargePages;
  43. #endif
  44. bool IsInTerminal;
  45. bool IsStdOutTerminal;
  46. bool IsStdErrTerminal;
  47. bool StdInMode;
  48. bool StdOutMode;
  49. bool EnableHeaders;
  50. bool YesToAll;
  51. bool ShowDialog;
  52. // NWildcard::CCensor ArchiveWildcardCensor;
  53. NWildcard::CCensor WildcardCensor;
  54. CArchiveCommand Command;
  55. UString ArchiveName;
  56. bool PasswordEnabled;
  57. UString Password;
  58. bool TechMode;
  59. // Extract
  60. bool AppendName;
  61. UString OutputDir;
  62. NExtract::NOverwriteMode::EEnum OverwriteMode;
  63. UStringVector ArchivePathsSorted;
  64. UStringVector ArchivePathsFullSorted;
  65. CObjectVector<CProperty> ExtractProperties;
  66. CUpdateOptions UpdateOptions;
  67. UString ArcType;
  68. bool EnablePercents;
  69. // Benchmark
  70. UInt32 NumIterations;
  71. UInt32 NumThreads;
  72. UInt32 DictionarySize;
  73. UString Method;
  74. CArchiveCommandLineOptions(): StdInMode(false), StdOutMode(false) {};
  75. };
  76. class CArchiveCommandLineParser
  77. {
  78. NCommandLineParser::CParser parser;
  79. public:
  80. CArchiveCommandLineParser();
  81. void Parse1(const UStringVector &commandStrings, CArchiveCommandLineOptions &options);
  82. void Parse2(CArchiveCommandLineOptions &options);
  83. };
  84. #endif