From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 6L3fKZ2TIWFagwAAgWs5BA (envelope-from ) for ; Sun, 22 Aug 2021 02:00:29 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id ibFjJZ2TIWGDbQAAbx9fmQ (envelope-from ) for ; Sun, 22 Aug 2021 00:00:29 +0000 Received: from mail.notmuchmail.org (nmbug.tethera.net [IPv6:2607:5300:201:3100::1657]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 3C3D1AA86 for ; Sun, 22 Aug 2021 02:00:29 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id 070681FD79; Sat, 21 Aug 2021 20:00:24 -0400 (EDT) Received: from fethera.tethera.net (fethera.tethera.net [IPv6:2607:5300:60:c5::1]) by mail.notmuchmail.org (Postfix) with ESMTP id ECD871FCE9 for ; Sat, 21 Aug 2021 20:00:20 -0400 (EDT) Received: by fethera.tethera.net (Postfix, from userid 1001) id AE9215FD5C; Sat, 21 Aug 2021 20:00:20 -0400 (EDT) Received: (nullmailer pid 211999 invoked by uid 1000); Sun, 22 Aug 2021 00:00:16 -0000 From: David Bremner To: notmuch@notmuchmail.org Cc: David Bremner Subject: [PATCH] CLI: define and use format version 5 Date: Sat, 21 Aug 2021 17:00:11 -0700 Message-Id: <20210822000011.211950-1-david@tethera.net> X-Mailer: git-send-email 2.32.0 In-Reply-To: <87r1ev96mh.fsf@tethera.net> References: <87r1ev96mh.fsf@tethera.net> MIME-Version: 1.0 Message-ID-Hash: C33KCGYATSNMF5ZYL7W7YYEQJCAIO3W3 X-Message-ID-Hash: C33KCGYATSNMF5ZYL7W7YYEQJCAIO3W3 X-MailFrom: bremner@tethera.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.1 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1629590429; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=7yYxBEvR/rLIoGDxftGI56N11py/GfXdM7kaN97tZjk=; b=e8ihJnz4ZyPRTuf6WpkzGvXZ9bBnI2MD7RhW2Q8h/LWjoAUhL52yjPx8hA49xuAvMV3gML etF/cqqb9NdzLUKp0pt38DHyjvcg6J/9miDT6uvxwhSFmHzar8cqUYPAnU6E3ht4LarlM/ 1wxoHprVrkrUWwH1OSq+35ovhtY0ElqRJiuVNA2Y/yKcojhlG/7hxOI9QA9w4ppeMm6FK9 9Y3y5qWYl+6z6GovFy3Kx7fKuGHCPlnRy88QUCYV/LUyd5Vg2Zjs+tdw992j/6sCiJyb5n YjOzfy3hAaoc8u4rGEPZ/dKrGu1+up3ft/i4lyrZlLKV5JnDoTyE75pUHrBA2g== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1629590429; a=rsa-sha256; cv=none; b=cHY9Sqj1ffDotn7tcdHAIggLM0fvHq8EI8MncUmGLCiBfkeFQVGrA0gQ2FE7+JmJ8ssthi zPAsH0sCs55/kXwdQBYuIaHntGknElfgRKexTe2hYRrtZNdvdCQbFoNp2DoWlgr8J5h2rC 4bWMV09Zjg6BHwWlZHM9BVlQGVDCqsCgZago/q6sWGsdUYP+Z5qOwDIX5Loy8EolzqN633 T8RFOA9B5sXfDGuRuRxpPP5CGXnsXBWn1fupLziZoxfqQ4/2xhJXUWc8BR4F6YAY0ysZ1u 0Wegf8yebMCqnsJhnSuDiuQzKYo30g9uJQvBGaqR4cuQJC6tCgMKHp5qKpSkhw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: -0.93 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: 3C3D1AA86 X-Spam-Score: -0.93 X-Migadu-Scanner: scn0.migadu.com X-TUID: 9Sz2UdHbv2fA This is a bit of a cheat, since the format does not actually change. On the other hand it is fairly common to do something like this to shared libary SONAMEs when the ABI changes in some subtle way. It does rely on the format-version argument being early enough on the command line to generate a sensible error message. --- devel/schemata | 6 +++++- emacs/notmuch-address.el | 2 +- emacs/notmuch-mua.el | 2 +- emacs/notmuch-query.el | 2 +- emacs/notmuch-tree.el | 2 +- emacs/notmuch.el | 2 +- notmuch-client.h | 2 +- test/T310-emacs.sh | 2 +- test/T450-emacs-show.sh | 2 +- 9 files changed, 13 insertions(+), 9 deletions(-) diff --git a/devel/schemata b/devel/schemata index ae84a528..01e3a3df 100644 --- a/devel/schemata +++ b/devel/schemata @@ -14,7 +14,7 @@ are interleaved. Keys are printed as keywords (symbols preceded by a colon), e.g. (:id "123" :time 54321 :from "foobar"). Null is printed as nil, true as t and false as nil. -This is version 4 of the structured output format. +This is version 5 of the structured output format. Version history --------------- @@ -36,6 +36,10 @@ v4 - (notmuch 0.29) added message.crypto to identify overall message cryptographic state +v5 +- sorting support for notmuch show (no change to actual schema, + just new command line argument) + Common non-terminals -------------------- diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el index f0af6667..9fc13bc5 100644 --- a/emacs/notmuch-address.el +++ b/emacs/notmuch-address.el @@ -308,7 +308,7 @@ execution, CALLBACK is called when harvesting finishes." (and config-query (format " and (%s)" config-query))) from-or-to-me-query)) - (args `("address" "--format=sexp" "--format-version=4" + (args `("address" "--format=sexp" "--format-version=5" ,(if sent "--output=recipients" "--output=sender") "--deduplicate=address" ,query))) diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el index 17954fb3..f510c043 100644 --- a/emacs/notmuch-mua.el +++ b/emacs/notmuch-mua.el @@ -235,7 +235,7 @@ Typically this is added to `notmuch-mua-send-hook'." ;;; Mua reply (defun notmuch-mua-reply (query-string &optional sender reply-all) - (let ((args '("reply" "--format=sexp" "--format-version=4")) + (let ((args '("reply" "--format=sexp" "--format-version=5")) (process-crypto notmuch-show-process-crypto) reply original) diff --git a/emacs/notmuch-query.el b/emacs/notmuch-query.el index d7349b77..5c7f4f8d 100644 --- a/emacs/notmuch-query.el +++ b/emacs/notmuch-query.el @@ -31,7 +31,7 @@ A thread is a forest or list of trees. A tree is a two element list where the first element is a message, and the second element is a possibly empty forest of replies." - (let ((args '("show" "--format=sexp" "--format-version=4"))) + (let ((args '("show" "--format=sexp" "--format-version=5"))) (when notmuch-show-process-crypto (setq args (append args '("--decrypt=true")))) (setq args (append args search-terms)) diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el index ef1ca4c5..ec803294 100644 --- a/emacs/notmuch-tree.el +++ b/emacs/notmuch-tree.el @@ -1101,7 +1101,7 @@ the same as for the function notmuch-tree." (notmuch-tag-clear-cache) (let ((proc (notmuch-start-notmuch "notmuch-tree" (current-buffer) #'notmuch-tree-process-sentinel - "show" "--body=false" "--format=sexp" "--format-version=4" + "show" "--body=false" "--format=sexp" "--format-version=5" sort-arg message-arg search-args)) ;; Use a scratch buffer to accumulate partial output. ;; This buffer will be killed by the sentinel, which diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 351334aa..739cb93b 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -1020,7 +1020,7 @@ the configured default sort order." (save-excursion (let ((proc (notmuch-start-notmuch "notmuch-search" buffer #'notmuch-search-process-sentinel - "search" "--format=sexp" "--format-version=4" + "search" "--format=sexp" "--format-version=5" (if oldest-first "--sort=oldest-first" "--sort=newest-first") diff --git a/notmuch-client.h b/notmuch-client.h index 8227fea4..8643a63f 100644 --- a/notmuch-client.h +++ b/notmuch-client.h @@ -137,7 +137,7 @@ chomp_newline (char *str) * this. New (required) map fields can be added without increasing * this. */ -#define NOTMUCH_FORMAT_CUR 4 +#define NOTMUCH_FORMAT_CUR 5 /* The minimum supported structured output format version. Requests * for format versions below this will return an error. */ #define NOTMUCH_FORMAT_MIN 1 diff --git a/test/T310-emacs.sh b/test/T310-emacs.sh index 7b70175b..d69d94a3 100755 --- a/test/T310-emacs.sh +++ b/test/T310-emacs.sh @@ -1060,7 +1060,7 @@ End of search results. YYY/notmuch_fail exited with status 1 (see *Notmuch errors* for more details) === ERROR === YYY/notmuch_fail exited with status 1 -command: YYY/notmuch_fail search --format\=sexp --format-version\=4 --sort\=newest-first tag\:inbox +command: YYY/notmuch_fail search --format\=sexp --format-version\=5 --sort\=newest-first tag\:inbox exit status: 1" test_begin_subtest "Search handles subprocess warnings" diff --git a/test/T450-emacs-show.sh b/test/T450-emacs-show.sh index 9d08d2cc..a750cc4d 100755 --- a/test/T450-emacs-show.sh +++ b/test/T450-emacs-show.sh @@ -192,7 +192,7 @@ test_expect_equal "$(notmuch_emacs_error_sanitize notmuch_fail OUTPUT MESSAGES E This is an error (see *Notmuch errors* for more details) === ERROR === This is an error -command: YYY/notmuch_fail show --format\\=sexp --format-version\\=4 --decrypt\\=true --exclude\\=false \\' \\* \\' +command: YYY/notmuch_fail show --format\\=sexp --format-version\\=5 --decrypt\\=true --exclude\\=false \\' \\* \\' exit status: 1 stderr: This is an error -- 2.32.0