50class Pass :
public QObject {
87 ~Pass()
override =
default;
112 virtual void Show(QString file) = 0;
124 virtual void Insert(QString file, QString value,
bool force) = 0;
130 virtual void Remove(QString file,
bool isDir) = 0;
137 virtual void Move(
const QString srcDir,
const QString dest,
138 const bool force =
false) = 0;
145 virtual void Copy(
const QString srcDir,
const QString dest,
146 const bool force =
false) = 0;
152 virtual void Init(QString path,
const QList<UserInfo> &users) = 0;
158 virtual void Grep(QString pattern,
bool caseInsensitive =
false) = 0;
181 auto listKeys(QStringList keystrings,
bool secret =
false) -> QList<UserInfo>;
188 auto listKeys(
const QString &keystring =
"",
bool secret =
false)
223 const QString &separator =
" ",
224 int *count =
nullptr) -> QStringList;
236 bool readStdout =
true,
bool readStderr =
true);
256 void setEnvVar(
const QString &key,
const QString &value);
268 const QStringList &args, QString input,
269 bool readStdout =
true,
bool readStderr =
true);
279 virtual void finished(
int id,
int exitCode,
const QString &out,
283 void handleProcessError(
PROCESS pid,
int exitCode,
const QString &out,
285 void handleGrepError(
int exitCode,
const QString &err);
286 auto formatInsertError(
const QString &friendly,
const QString &err)
288 void emitProcessFinishedSignal(
PROCESS pid,
const QString &out,
311 void critical(
const QString &title,
const QString &message);
415QString gpgErrorMessage(
const QString &err);
423QList<QPair<QString, QStringList>> parseGrepOutput(
const QString &rawOut);
Runs non-interactive external commands in FIFO order using a single QProcess.
void init()
Initialize the Pass instance.
void startingExecuteWrapper()
Emitted before executing a command.
virtual void executeWrapper(PROCESS id, const QString &app, const QStringList &args, QString input, bool readStdout=true, bool readStderr=true)
Execute wrapper with input.
void finishedGenerate(const QString &out, const QString &err)
Emitted when generate finishes.
void GenerateGPGKeys(QString batch)
Generate GPG keys using batch script.
void finishedInsert(const QString &out, const QString &err)
Emitted when insert finishes.
auto listKeys(const QString &keystring="", bool secret=false) -> QList< UserInfo >
List GPG keys.
static QString getDefaultKeyTemplate()
Get default key template for new GPG keys.
virtual void Copy(const QString srcDir, const QString dest, const bool force=false)=0
Copy password file or directory.
virtual void GitInit()=0
Initialize Git repository in password store.
void finishedOtpGenerate(const QString &out)
Emitted when OTP generation finishes.
void finishedGenerateGPGKeys(const QString &out, const QString &err)
Emitted when GPG key generation finishes.
Enums::PROCESS PROCESS
Alias for Enums::PROCESS used throughout this class.
virtual void GitPull()=0
Pull changes from remote Git repository.
void statusMsg(const QString &msg, int timeout)
Emit status message.
static auto resolveGpgconfCommand(const QString &gpgPath) -> ResolvedGpgconfCommand
Resolve the gpgconf command to kill agents.
void setEnvVar(const QString &key, const QString &value)
Set or remove an environment variable.
auto boundedRandom(quint32 bound) -> quint32
Generate random number in range.
void finishedAny(const QString &out, const QString &err)
Emitted when any operation finishes.
virtual void Remove(QString file, bool isDir)=0
Remove password file or directory.
Pass()
Construct a Pass instance.
void finishedCopy(const QString &out, const QString &err)
Emitted when copy finishes.
virtual void Show(QString file)=0
Show decrypted password file.
static auto getRecipientString(const QString &for_file, const QString &separator=" ", int *count=nullptr) -> QStringList
Get recipients as string.
void finishedMove(const QString &out, const QString &err)
Emitted when move finishes.
void executeWrapper(PROCESS id, const QString &app, const QStringList &args, bool readStdout=true, bool readStderr=true)
Execute external wrapper command.
auto listKeys(QStringList keystrings, bool secret=false) -> QList< UserInfo >
List GPG keys matching patterns.
void finishedGrep(const QList< QPair< QString, QStringList > > &results)
Emitted when grep finishes with matching results.
virtual void GitPull_b()=0
Pull with rebase from remote.
void finishedGitPull(const QString &out, const QString &err)
Emitted when Git pull finishes.
virtual void GitPush()=0
Push changes to remote Git repository.
void finishedGitPush(const QString &out, const QString &err)
Emitted when Git push finishes.
virtual void Insert(QString file, QString value, bool force)=0
Insert or update password.
static auto getRecipientList(const QString &for_file) -> QStringList
Get list of recipients for a password file.
virtual void finished(int id, int exitCode, const QString &out, const QString &err)
Handle process completion.
Executor exec
Internal command executor for queuing and running subprocesses.
static bool gpgSupportsEd25519()
Check if GPG supports Ed25519 encryption.
void processErrorExit(int exitCode, const QString &err)
Emitted on process error exit.
void finishedGitInit(const QString &out, const QString &err)
Emitted when Git init finishes.
virtual void Move(const QString srcDir, const QString dest, const bool force=false)=0
Move password file or directory.
virtual auto generatePassword(unsigned int length, const QString &charset) -> QString
Generate random password.
virtual void OtpGenerate(QString file)=0
Generate OTP for password file.
void updateEnv()
Update environment for subprocesses.
void finishedInit(const QString &out, const QString &err)
Emitted when init finishes.
void error(QProcess::ProcessError)
Emitted when a process error occurs.
void critical(const QString &title, const QString &message)
Emit critical error.
static auto getGpgIdPath(const QString &for_file) -> QString
Get .gpg-id file path for a password file.
virtual void Grep(QString pattern, bool caseInsensitive=false)=0
Search password content for a pattern.
virtual void Init(QString path, const QList< UserInfo > &users)=0
Initialize new password store.
void finishedRemove(const QString &out, const QString &err)
Emitted when remove finishes.
auto generateRandomPassword(const QString &charset, unsigned int length) -> QString
Generate random password from charset.
void finishedShow(const QString &out)
Emitted when show finishes.
PROCESS
Identifies different subprocess operations used in QtPass.
Represents a command invocation for gpgconf operations.
QStringList arguments
Full argv list, including any wrapper/prefix args followed by the actual gpgconf operation flags (e....
QString program
Executable to run — may be a bare name resolved via PATH or a wrapper (e.g. wsl.exe) rather than a di...