From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-functions:master commit in: functions/
Date: Sun, 7 Jul 2024 05:55:38 +0000 (UTC) [thread overview]
Message-ID: <1719596341.fd79ab30122474ab5207ea001d92ffac677b5380.sam@gentoo> (raw)
commit: fd79ab30122474ab5207ea001d92ffac677b5380
Author: Kerin Millar <kfm <AT> plushkava <DOT> net>
AuthorDate: Thu Jun 27 16:06:38 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Jun 28 17:39:01 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-functions.git/commit/?id=fd79ab30
Add an experimental module for staging new ideas
The idea is to be able to write new functions without having to
initially commit to their being in the core library or, indeed, any of
the other modules. Experimental functions may be promoted or simply
dropped without warning if it is decided that they are insufficiently
useful to merit incorporation.
This initial commit defines the is_interactive() and prepend_ts()
functions.
Signed-off-by: Kerin Millar <kfm <AT> plushkava.net>
functions/experimental.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/functions/experimental.sh b/functions/experimental.sh
new file mode 100644
index 0000000..f577fa7
--- /dev/null
+++ b/functions/experimental.sh
@@ -0,0 +1,53 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+# shellcheck shell=sh disable=3043
+
+# This file contains functions considered experimental in nature. Any functions
+# defined here may eventually be promoted to the core library or to a distinct
+# module. They may also be dropped without warning, either because they were
+# not considered as being sufficiently within the scope of gentoo-functions as
+# a project or because they were deemed to be insufficiently useful. As such, it
+# serves as a staging ground for new ideas. Note that GENFUN_API_LEVEL must
+# never be incremented on account of any changes made to this module.
+
+warn "sourcing the experimental module from gentoo-functions; no stability guarantee is provided"
+
+#
+# Returns 0 provided that two conditions hold. Firstly, that the standard input
+# is connected to a tty. Secondly, that the standard output has not been closed.
+# This technique is loosely based on the IO::Interactive::Tiny module from CPAN.
+#
+is_interactive()
+{
+ test -t 0 && { true 3>&1; } 2>/dev/null
+}
+
+#
+# Continuously reads lines from the standard input, prepending each with a
+# timestamp before printing to the standard output. Timestamps shall be in the
+# format of "%FT%T%z", per strftime(3). Output buffering shall not be employed.
+#
+prepend_ts()
+{
+ if hash gawk 2>/dev/null; then
+ prepend_ts()
+ {
+ gawk '{ print strftime("%FT%T%z"), $0; fflush(); }'
+ }
+ elif hash ts 2>/dev/null; then
+ prepend_ts()
+ {
+ ts '%FT%T%z'
+ }
+ elif bash -c '(( BASH_VERSINFO >= 4 ))' 2>/dev/null; then
+ prepend_ts()
+ {
+ bash -c 'while read -r; do printf "%(%FT%T%z)T %s\n" -1 "${REPLY}"; done'
+ }
+ else
+ warn "prepend_ts: this function requires that either bash, gawk or moreutils be installed"
+ return 1
+ fi
+
+ prepend_ts
+}
next reply other threads:[~2024-07-07 5:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-07 5:55 Sam James [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-08-05 2:02 [gentoo-commits] proj/gentoo-functions:master commit in: functions/ Sam James
2024-08-02 23:14 Sam James
2024-07-07 5:55 Sam James
2024-07-07 5:55 Sam James
2024-06-25 4:06 Sam James
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1719596341.fd79ab30122474ab5207ea001d92ffac677b5380.sam@gentoo \
--to=sam@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox