From 029d72e6257d90f7874ec93b9bc43bb127940cc7 Mon Sep 17 00:00:00 2001 From: Simon Chan <1330321+yume-chan@users.noreply.github.com> Date: Thu, 20 Feb 2025 11:44:37 +0800 Subject: [PATCH] feat(bin): add `tail` option support to `logcat` --- libraries/android-bin/src/logcat.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/libraries/android-bin/src/logcat.ts b/libraries/android-bin/src/logcat.ts index 5c1eec244..90eb45717 100644 --- a/libraries/android-bin/src/logcat.ts +++ b/libraries/android-bin/src/logcat.ts @@ -90,9 +90,17 @@ export interface LogcatFormatModifiers { } export interface LogcatOptions { - dump?: boolean; - pid?: number; - ids?: LogId[]; + dump?: boolean | undefined; + pid?: number | undefined; + ids?: LogId[] | undefined; + tail?: number | Date | undefined; +} + +function formatTailTime(date: Date) { + // Tail time supports multiple formats, + // `sssss.mmm` is simplest to implement + const timestamp = date.getTime(); + return ((timestamp / 1000) | 0) + "." + (timestamp % 1000); } const NANOSECONDS_PER_SECOND = /* #__PURE__ */ BigInt(1e9); @@ -503,6 +511,14 @@ export class Logcat extends AdbCommandBase { if (options?.ids) { args.push("-b", Logcat.joinLogId(options.ids)); } + if (options?.tail) { + args.push( + "-t", + typeof options.tail === "number" + ? options.tail.toString() + : formatTailTime(options.tail), + ); + } // TODO: make `spawn` return synchronously with streams pending // so it's easier to chain them.