1
Fork 0
mirror of https://github.com/RGBCube/nu_scripts synced 2025-08-02 07:07:46 +00:00

docker.nu : fix container-log and container-attach, add registry (#742)

- fix container-log 
- container-attach allow passing flag
- add `registry delete`

---------

Co-authored-by: nash <nash@iffy.me>
This commit is contained in:
fj0r 2024-01-23 23:17:22 +08:00 committed by GitHub
parent e5176370f6
commit f75db6dc5f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -160,7 +160,7 @@ export def container-log [ctn: string@"nu-complete docker containers"
-l: int = 100 # line -l: int = 100 # line
] { ] {
let l = if $l == 0 { [] } else { [--tail $l] } let l = if $l == 0 { [] } else { [--tail $l] }
^$env.docker-cli logs -f $l $ctn ^$env.docker-cli logs -f ...$l $ctn
} }
# container log with namespace # container log with namespace
@ -173,7 +173,7 @@ export def container-log-namespace [ctn: string@"nu-complete docker containers"
} }
# attach container # attach container
export def container-attach [ export def --wrapped container-attach [
ctn: string@"nu-complete docker containers" ctn: string@"nu-complete docker containers"
-n: string@"nu-complete docker ns" -n: string@"nu-complete docker ns"
...args ...args
@ -413,22 +413,51 @@ def "nu-complete registry show" [cmd: string, offset: int] {
} }
### docker registry show ### docker registry show
export def "registry show" [ export def "docker registry show" [
url: string url: string
reg?: string@"nu-complete registry show" reg?: string@"nu-complete registry show"
tag?: string@"nu-complete registry show" tag?: string@"nu-complete registry show"
] { ] {
let auth = if ($env | has 'REGISTRY_TOKEN') { let header = if ($env | has 'REGISTRY_TOKEN') {
[-H $"Authorization: Basic ($env.REGISTRY_TOKEN)"] [-H $"Authorization: Basic ($env.REGISTRY_TOKEN)"]
} else { } else {
[] []
} }
| append [-H 'Accept: application/vnd.oci.image.manifest.v1+json']
if ($reg | is-empty) { if ($reg | is-empty) {
curl -sSL ...$auth $"($url)/v2/_catalog" | from json | get repositories curl -sSL ...$header $"($url)/v2/_catalog" | from json | get repositories
} else if ($tag | is-empty) { } else if ($tag | is-empty) {
curl -sSL ...$auth $"($url)/v2/($reg)/tags/list" | from json | get tags curl -sSL ...$header $"($url)/v2/($reg)/tags/list" | from json | get tags
} else { } else {
curl -sSL -H 'Accept: application/vnd.oci.image.manifest.v1+json' ...$auth $"($url)/v2/($reg)/manifests/($tag)" | from json curl -sSL ...$header $"($url)/v2/($reg)/manifests/($tag)" | from json
}
}
### docker registry delete
export def "docker registry delete" [
url: string
reg: string@"nu-complete registry show"
tag: string@"nu-complete registry show"
] {
let header = if ($env | has 'REGISTRY_TOKEN') {
[-H $"Authorization: Basic ($env.REGISTRY_TOKEN)"]
} else {
[]
}
| append [-H 'Accept: application/vnd.oci.image.manifest.v1+json']
#| append [-H 'Accept: application/vnd.docker.distribution.manifest.v2+json']
let digest = do -i {
curl -sSI ...$header $"($url)/v2/($reg)/manifests/($tag)"
| rg docker-content-digest
| split row ' '
| get 1
| str trim
}
print -e $digest
if not ($digest | is-empty) {
curl -sSL -X DELETE ...$header $"($url)/v2/($reg)/manifests/($digest)"
} else {
'not found'
} }
} }