From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id AA3771F4B4 for ; Fri, 18 Dec 2020 12:09:50 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 00/26] lei: basic UI + IPC work Date: Fri, 18 Dec 2020 12:09:24 +0000 Message-Id: <20201218120950.23272-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Some work on the storage side, but MiscIdx still needs work to handle existing publicinboxes, extinboxes (over HTTP(S)), and other config things. PATCH 22/26 - bash completion sorta works, but filename completions get broken. Not sure why and help would be greatly appreciated (along with help for other shells). I don't know bash-specific stuff well at all, even; and less about other non-POSIX shells. Somewhat nice UI things (at least to my delirious sleep-deprived state): * -$DIGIT option parsing works (e.g. "git log -10"), "kill -9" * help-based CLI arg/prototype checking seems working and hopefully cuts down on long-term maintenance work while promoting UI consistency * having IO::FDPass hides startup time, 20-30ms isn't really noticeable for humans on interactive terminals, but still not ideal for loops. * lei.sh + "make symlink-install" And some internal improvements: * several simplifications to existing Search code, ->xdb_shards_flat will come in handy * generic OnDestroy - long overdue Eric Wong (26): lei: FD-passing and IPC basics lei: proposed command-listing and options lei_store: local storage for Local Email Interface tests: more common JSON module loading lei: use spawn (vfork + execve) for lazy start lei: refine help/option parsing, implement "init" t/lei-oneshot: standalone oneshot (non-socket) test lei: ensure we run a restrictive umask lei: support `daemon-env' for modifying long-lived env lei_store: simplify git_epoch_max, slightly search: simplify initialization, add ->xdb_shards_flat rename LeiDaemon package to PublicInbox::LEI lei: support pass-through for `lei config' lei: help: show actual paths being operated on lei: rename $client => $self and bless lei: micro-optimize startup time lei_store: relax GIT_COMMITTER_IDENT check lei_store: keyword extraction from mbox and Maildir on_destroy: generic localized END lei: restore default __DIE__ handler for event loop lei: drop $SIG{__DIE__}, add oneshot fallbacks lei: start working on bash completion build: add lei.sh + "make symlink-install" target lei: support for -$DIGIT and -$SIG CLI switches lei: revise output routines lei: extinbox: start implementing in config file MANIFEST | 11 + Makefile.PL | 11 + contrib/completion/lei-completion.bash | 11 + lei.sh | 7 + lib/PublicInbox/Daemon.pm | 6 +- lib/PublicInbox/ExtSearch.pm | 10 +- lib/PublicInbox/ExtSearchIdx.pm | 35 +- lib/PublicInbox/Import.pm | 4 + lib/PublicInbox/LEI.pm | 776 +++++++++++++++++++++++++ lib/PublicInbox/LeiExtinbox.pm | 52 ++ lib/PublicInbox/LeiSearch.pm | 39 ++ lib/PublicInbox/LeiStore.pm | 227 ++++++++ lib/PublicInbox/ManifestJsGz.pm | 2 +- lib/PublicInbox/OnDestroy.pm | 16 + lib/PublicInbox/OverIdx.pm | 10 + lib/PublicInbox/Search.pm | 65 +-- lib/PublicInbox/SearchIdx.pm | 62 +- lib/PublicInbox/SearchIdxShard.pm | 33 ++ lib/PublicInbox/TestCommon.pm | 7 +- lib/PublicInbox/V2Writable.pm | 10 +- script/lei | 76 +++ t/extsearch.t | 3 +- t/lei-oneshot.t | 25 + t/lei.t | 306 ++++++++++ t/lei_store.t | 88 +++ t/on_destroy.t | 25 + t/www_listing.t | 8 +- 27 files changed, 1843 insertions(+), 82 deletions(-) create mode 100644 contrib/completion/lei-completion.bash create mode 100755 lei.sh create mode 100644 lib/PublicInbox/LEI.pm create mode 100644 lib/PublicInbox/LeiExtinbox.pm create mode 100644 lib/PublicInbox/LeiSearch.pm create mode 100644 lib/PublicInbox/LeiStore.pm create mode 100644 lib/PublicInbox/OnDestroy.pm create mode 100755 script/lei create mode 100644 t/lei-oneshot.t create mode 100644 t/lei.t create mode 100644 t/lei_store.t create mode 100644 t/on_destroy.t