add --ext-exit option
this is only a partial solution for reporting changes, but it's adequate if the goal is merely triggering a bulk action, like re-indexing the local store. inspired by patches posted by Yuri D'Elia <wavexx@thregr.org>.
This commit is contained in:
parent
edc901b7af
commit
4d75c45507
2
NEWS
2
NEWS
|
@ -27,6 +27,8 @@ Added support for mirroring deletions more accurately.
|
|||
|
||||
Added --dry-run option.
|
||||
|
||||
Added --ext-exit option.
|
||||
|
||||
[1.4.0]
|
||||
|
||||
The 'isync' compatibility wrapper was removed.
|
||||
|
|
2
TODO
2
TODO
|
@ -25,8 +25,6 @@ add alternative treatments of expired messages. ExpiredMessageMode: Prune
|
|||
separate folder - ArchiveSuffix, default .archive).
|
||||
|
||||
add support for event notification callbacks.
|
||||
it would be also possible to report more differentiated exit codes, but
|
||||
that seems too limiting in the general case.
|
||||
|
||||
make it possible to have different mailbox names for far and near side in
|
||||
Patterns.
|
||||
|
|
|
@ -115,6 +115,8 @@ BIT_ENUM(
|
|||
|
||||
DRYRUN,
|
||||
|
||||
EXT_EXIT,
|
||||
|
||||
ZERODELAY,
|
||||
KEEPJOURNAL,
|
||||
FORCEJOURNAL,
|
||||
|
|
|
@ -47,6 +47,7 @@ PACKAGE " " VERSION " - mailbox synchronizer\n"
|
|||
" -c, --config CONFIG read an alternate config file (default: ~/." EXE "rc)\n"
|
||||
" -D, --debug debugging modes (see manual)\n"
|
||||
" -y, --dry-run do not actually modify anything\n"
|
||||
" -e, --ext-exit return extended exit code\n"
|
||||
" -V, --verbose display what is happening\n"
|
||||
" -q, --quiet don't display progress counters\n"
|
||||
" -v, --version display version\n"
|
||||
|
@ -221,6 +222,8 @@ main( int argc, char **argv )
|
|||
DFlags |= op;
|
||||
} else if (!strcmp( opt, "dry-run" )) {
|
||||
DFlags |= DRYRUN;
|
||||
} else if (!strcmp( opt, "ext-exit" )) {
|
||||
DFlags |= EXT_EXIT;
|
||||
} else if (!strcmp( opt, "pull" )) {
|
||||
cops |= XOP_PULL, mvars->ops[F] |= XOP_HAVE_TYPE;
|
||||
} else if (!strcmp( opt, "push" )) {
|
||||
|
@ -461,6 +464,9 @@ main( int argc, char **argv )
|
|||
case 'y':
|
||||
DFlags |= DRYRUN;
|
||||
break;
|
||||
case 'e':
|
||||
DFlags |= EXT_EXIT;
|
||||
break;
|
||||
case 'T':
|
||||
for (; *ochar; ) {
|
||||
switch (*ochar++) {
|
||||
|
|
|
@ -388,6 +388,11 @@ sync_chans( core_vars_t *cvars, char **argv )
|
|||
if (!cvars->list) {
|
||||
flushn();
|
||||
summary();
|
||||
if (DFlags & EXT_EXIT) {
|
||||
for (int t = 0; t < 2; t++)
|
||||
if (new_done[t] || flags_done[t] || trash_done[t] || expunge_done[t])
|
||||
cvars->ret |= 32 << t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -79,6 +79,12 @@ Enter simulation mode: the Channel status is queried and all required
|
|||
operations are determined, but no modifications are actually made
|
||||
to either the mailboxes or the state files.
|
||||
.TP
|
||||
\fB-e\fR, \fB--ext-exit\fR
|
||||
Return an extended exit code: Add 32 resp. 64 to the code if any
|
||||
modifications were made on the far resp. near side.
|
||||
An error may be reported at the same time, so the code may be for example
|
||||
65 if some changes were successfully pulled, while others failed.
|
||||
.TP
|
||||
\fB-V\fR, \fB--verbose\fR
|
||||
Enable \fIverbose\fR mode, which displays what is currently happening.
|
||||
.TP
|
||||
|
|
|
@ -1776,7 +1776,7 @@ sync_close( sync_vars_t *svars, int t )
|
|||
|
||||
if ((svars->chan->ops[t] & (OP_EXPUNGE | OP_EXPUNGE_SOLO)) && !(DFlags & FAKEEXPUNGE)
|
||||
/*&& !(svars->state[t] & ST_TRASH_BAD)*/) {
|
||||
if (Verbosity >= TERSE) {
|
||||
if (Verbosity >= TERSE || (DFlags & EXT_EXIT)) {
|
||||
if (svars->opts[t] & OPEN_UID_EXPUNGE) {
|
||||
for (message_t *tmsg = svars->msgs[t]; tmsg; tmsg = tmsg->next) {
|
||||
if (tmsg->status & M_DEAD)
|
||||
|
|
Loading…
Reference in New Issue
Block a user