DockerCompletionUtility/DockerCompletionUtility.psm1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
function Get-Config {
    docker config ls --format '{{.Name}}'
}

function Get-Container {
    Param(
        [ValidateSet('created', 'dead', 'exited', 'paused', 'removing', 'restarting', 'running')]
        [string[]]$Status
    )

    $options = New-Object System.Collections.ArrayList
    if ($Status) {
        foreach ($s in $Status) {
            $options.Add("--filter 'status=$s'") > $null
        }
    } else {
        $options.Add('--all') > $null
    }

    $command = "docker container ls --format '{{{{.Names}}}}' {0}" -f ($options -join ' ')
    Invoke-Expression -Command $command
}

function Get-Image {
    Param(
        [switch]$WithTag
    )

    $sorted = docker image ls --format '{{.Repository}}:{{.Tag}}' | Sort-Object
    if (!$WithTag) {
        $sorted | Where-Object { $_ -like '*:latest' } | ForEach-Object { $_ -replace ':latest$' } | Get-Unique
    }
    $sorted | Where-Object { $_ -notlike '*:<none>' }
}

function Get-ImageRepository {
    $sorted = docker image ls --format '{{.Repository}}:{{.Tag}}' | Sort-Object
    $sorted | Where-Object { $_ -notlike '*:<none>' } | ForEach-Object { $_ -replace ':.*?$' } | Get-Unique
}

function Get-Network {
    Param(
        [ValidateSet('builtin', 'custom')]
        [string[]]$Type
    )

    $options = New-Object System.Collections.ArrayList
    if ($Type) {
        foreach ($t in $Type) {
            $options.Add("--filter 'type=$t'") > $null
        }
    }

    $command = "docker network ls --format '{{{{.Name}}}}' {0}" -f ($options -join ' ')
    Invoke-Expression -Command $command
}

function Get-Node {
    Param(
        [ValidateSet('manager', 'worker')]
        [string[]]$Role
    )

    $options = New-Object System.Collections.ArrayList
    if ($Role) {
        foreach ($r in $Role) {
            $options.Add("--filter 'role=$r'") > $null
        }
    }

    $command = "docker node ls --format '{{{{.Hostname}}}}' {0}" -f ($options -join ' ')
    Invoke-Expression -Command $command
}

function Get-Plugin {
    docker plugin ls --format '{{.Name}}'
}

function Get-Secret {
    docker secret ls --format '{{.Name}}'
}

function Get-Service {
    docker service ls --format '{{.Name}}'
}

function Get-Volume {
    docker volume ls --quiet
}