79 lines
1.9 KiB
Factor
79 lines
1.9 KiB
Factor
! Copyright (C) 2018 Doug Coleman.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: io.files.links io.launcher io.standard-paths json.reader
|
|
kernel literals namespaces sequences strings system ;
|
|
IN: ci.docker
|
|
|
|
SYMBOL: docker-username
|
|
SYMBOL: docker-password
|
|
|
|
: docker-path ( -- path )
|
|
"docker" find-in-standard-login-path ;
|
|
|
|
: docker-machine-path ( -- path )
|
|
"docker-machine" find-in-standard-login-path ;
|
|
|
|
: vboxmanage-path ( -- path )
|
|
"VBoxManage" find-in-standard-login-path ;
|
|
|
|
: sudo-linux ( seq -- seq' )
|
|
os linux? [ "sudo" prefix ] when ;
|
|
|
|
: docker-lines ( seq -- lines )
|
|
docker-path prefix sudo-linux process-lines ;
|
|
|
|
: docker-machine-lines ( seq -- lines )
|
|
docker-machine-path prefix process-lines ;
|
|
|
|
|
|
: docker-command ( seq -- )
|
|
docker-path prefix sudo-linux try-output-process ;
|
|
|
|
: docker-machine-command ( seq -- )
|
|
docker-machine-path prefix try-output-process ;
|
|
|
|
|
|
: docker-version ( -- string )
|
|
{ "version" } docker-lines ;
|
|
|
|
: docker-machine-version ( -- string )
|
|
{ "version" } docker-machine-lines ?first ;
|
|
|
|
|
|
|
|
: docker-machine-inspect ( string -- json )
|
|
{ "inspect" } swap suffix docker-machine-lines "" join json> ;
|
|
|
|
|
|
: docker-machines ( -- seq )
|
|
{ "ls" "-q" } docker-machine-lines ;
|
|
|
|
: docker-machine-status ( string -- status )
|
|
{ "status" } swap suffix docker-machine-lines ;
|
|
|
|
|
|
: docker-image-names ( -- seq )
|
|
{ "image" "ls" "-q" } docker-lines ;
|
|
|
|
: docker-image-ls ( -- seq )
|
|
{ "image" "ls" } docker-lines ;
|
|
|
|
: docker-login ( -- )
|
|
${
|
|
"sudo"
|
|
docker-path "login"
|
|
"-p" docker-password get-global
|
|
"-u" docker-username get-global
|
|
} run-process drop ;
|
|
|
|
GENERIC: docker-pull ( obj -- )
|
|
|
|
M: string docker-pull ( string -- )
|
|
{ "pull" } swap suffix docker-command ;
|
|
|
|
M: sequence docker-pull ( seq -- )
|
|
[ docker-pull ] each ;
|
|
|
|
: docker-hello-world ( -- )
|
|
{ "run" "hello-world" } docker-command ;
|