File indexing completed on 2024-05-05 05:50:40

0001 /*
0002     SPDX-FileCopyrightText: 2016 Ragnar Thomsen <rthomsen6@gmail.com>
0003 
0004     SPDX-License-Identifier: BSD-2-Clause
0005 */
0006 #ifndef CLIPROPERTIES_H
0007 #define CLIPROPERTIES_H
0008 
0009 #include "archiveinterface.h"
0010 #include "kerfuffle_export.h"
0011 
0012 namespace Kerfuffle
0013 {
0014 class KERFUFFLE_EXPORT CliProperties : public QObject
0015 {
0016     Q_OBJECT
0017 
0018     Q_PROPERTY(QString addProgram MEMBER m_addProgram)
0019     Q_PROPERTY(QString deleteProgram MEMBER m_deleteProgram)
0020     Q_PROPERTY(QString extractProgram MEMBER m_extractProgram)
0021     Q_PROPERTY(QString listProgram MEMBER m_listProgram)
0022     Q_PROPERTY(QString moveProgram MEMBER m_moveProgram)
0023     Q_PROPERTY(QString testProgram MEMBER m_testProgram)
0024 
0025     Q_PROPERTY(QStringList addSwitch MEMBER m_addSwitch)
0026     Q_PROPERTY(QStringList commentSwitch MEMBER m_commentSwitch)
0027     Q_PROPERTY(QString deleteSwitch MEMBER m_deleteSwitch)
0028     Q_PROPERTY(QStringList extractSwitch MEMBER m_extractSwitch)
0029     Q_PROPERTY(QStringList extractSwitchNoPreserve MEMBER m_extractSwitchNoPreserve)
0030     Q_PROPERTY(QStringList listSwitch MEMBER m_listSwitch)
0031     Q_PROPERTY(QString moveSwitch MEMBER m_moveSwitch)
0032     Q_PROPERTY(QStringList testSwitch MEMBER m_testSwitch)
0033 
0034     Q_PROPERTY(QStringList passwordSwitch MEMBER m_passwordSwitch)
0035     Q_PROPERTY(QStringList passwordSwitchHeaderEnc MEMBER m_passwordSwitchHeaderEnc)
0036     Q_PROPERTY(QString compressionLevelSwitch MEMBER m_compressionLevelSwitch)
0037     Q_PROPERTY(QHash<QString, QVariant> compressionMethodSwitch MEMBER m_compressionMethodSwitch)
0038     Q_PROPERTY(QHash<QString, QVariant> encryptionMethodSwitch MEMBER m_encryptionMethodSwitch)
0039     Q_PROPERTY(QString multiVolumeSwitch MEMBER m_multiVolumeSwitch)
0040 
0041     Q_PROPERTY(QStringList testPassedPatterns MEMBER m_testPassedPatterns)
0042     Q_PROPERTY(QStringList fileExistsFileNameRegExp MEMBER m_fileExistsFileNameRegExp)
0043 
0044     Q_PROPERTY(QStringList fileExistsInput MEMBER m_fileExistsInput)
0045     Q_PROPERTY(QStringList multiVolumeSuffix MEMBER m_multiVolumeSuffix)
0046 
0047     Q_PROPERTY(bool captureProgress MEMBER m_captureProgress)
0048 
0049 public:
0050     explicit CliProperties(QObject *parent, const KPluginMetaData &metaData, const QMimeType &archiveType);
0051 
0052     QStringList addArgs(const QString &archive,
0053                         const QStringList &files,
0054                         const QString &password,
0055                         bool headerEncryption,
0056                         int compressionLevel,
0057                         const QString &compressionMethod,
0058                         const QString &encryptionMethod,
0059                         ulong volumeSize);
0060     QStringList commentArgs(const QString &archive, const QString &commentfile);
0061     QStringList deleteArgs(const QString &archive, const QVector<Archive::Entry *> &files, const QString &password);
0062     QStringList extractArgs(const QString &archive, const QStringList &files, bool preservePaths, const QString &password);
0063     QStringList listArgs(const QString &archive, const QString &password);
0064     QStringList moveArgs(const QString &archive, const QVector<Archive::Entry *> &entries, Archive::Entry *destination, const QString &password);
0065     QStringList testArgs(const QString &archive, const QString &password);
0066 
0067     bool isTestPassedMsg(const QString &line);
0068 
0069 private:
0070     QStringList substituteCommentSwitch(const QString &commentfile) const;
0071     QStringList substitutePasswordSwitch(const QString &password, bool headerEnc = false) const;
0072     QString substituteCompressionLevelSwitch(int level) const;
0073     QString substituteCompressionMethodSwitch(const QString &method) const;
0074     QString substituteEncryptionMethodSwitch(const QString &method) const;
0075     QString substituteMultiVolumeSwitch(ulong volumeSize) const;
0076 
0077     QString m_addProgram;
0078     QString m_deleteProgram;
0079     QString m_extractProgram;
0080     QString m_listProgram;
0081     QString m_moveProgram;
0082     QString m_testProgram;
0083 
0084     QStringList m_addSwitch;
0085     QStringList m_commentSwitch;
0086     QString m_deleteSwitch;
0087     QStringList m_extractSwitch;
0088     QStringList m_extractSwitchNoPreserve;
0089     QStringList m_listSwitch;
0090     QString m_moveSwitch;
0091     QStringList m_testSwitch;
0092 
0093     QStringList m_passwordSwitch;
0094     QStringList m_passwordSwitchHeaderEnc;
0095     QString m_compressionLevelSwitch;
0096     QHash<QString, QVariant> m_compressionMethodSwitch;
0097     QHash<QString, QVariant> m_encryptionMethodSwitch;
0098     QString m_multiVolumeSwitch;
0099 
0100     QStringList m_testPassedPatterns;
0101     QStringList m_fileExistsFileNameRegExp;
0102 
0103     QStringList m_fileExistsInput;
0104     QStringList m_multiVolumeSuffix;
0105 
0106     bool m_captureProgress = false;
0107 
0108     QMimeType m_mimeType;
0109     KPluginMetaData m_metaData;
0110 };
0111 }
0112 
0113 #endif /* CLIPROPERTIES_H */