From e7976c5cc1fe7cbf6b08b454e2f87228db26ef47 Mon Sep 17 00:00:00 2001 From: fj0r <82698591+fj0r@users.noreply.github.com> Date: Thu, 23 Mar 2023 19:50:39 +0800 Subject: [PATCH] dp for `docker ps` support docker and podman (#421) * dp for `docker ps` support docker and podman * dp for `docker ps` support nerdctl --------- Co-authored-by: agent --- docker/docker.nu | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/docker/docker.nu b/docker/docker.nu index 0eb688b..d3275ec 100644 --- a/docker/docker.nu +++ b/docker/docker.nu @@ -1,6 +1,6 @@ export-env { for c in [podman nerdctl docker] { - if not (whereis $c | parse -r '.+: (.+)' | is-empty) { + if not (which $c | is-empty) { let-env docker-cli = $c break } @@ -9,13 +9,28 @@ export-env { export def dp [] { # ^$env.docker-cli ps --all --no-trunc --format='{{json .}}' | jq - ^$env.docker-cli ps -a --format '{"id":"{{.ID}}", "image": "{{.Image}}", "name":"{{.Names}}", "cmd":"{{.Command}}", "port":"{{.Ports}}", "status":"{{.Status}}", "created":"{{.Created}}"}' - | lines - | each {|x| + let cli = $env.docker-cli + if $cli == 'docker' { + ^$cli ps -a --format '{"id":"{{.ID}}", "image": "{{.Image}}", "name":"{{.Names}}", "cmd":{{.Command}}, "port":"{{.Ports}}", "status":"{{.Status}}", "created":"{{.CreatedAt}}"}' + | lines + | each {|x| + let r = ($x | from json) + let t = ($r.created | str substring ',25' | into datetime -f '%Y-%m-%d %H:%M:%S %z' ) - 8hr + $r | upsert created $t + } + } else if $cli == 'podman' { + ^$cli ps -a --format '{"id":"{{.ID}}", "image": "{{.Image}}", "name":"{{.Names}}", "cmd":"{{.Command}}", "port":"{{.Ports}}", "status":"{{.Status}}", "created":"{{.Created}}"}' + | lines + | each {|x| let r = ($x | from json) let t = ($r.created | str substring ',32' | into datetime ) - 8hr $r | upsert created $t - } + } + } else { + ^$cli ps -a + | from ssv + | rename id image cmd created status port name + } } export def di [] {