Documentation
¶
Index ¶
- func ExpandColonDelimitedStringListWithEnv(arr []string) []string
- func ExpandColonDelimitedStringWithEnv(s string) string
- func ExpandEnv(str string) string
- func ExpandStringKeyMapWithEnv(m map[string]string) map[string]string
- type DockerBinaryAdapter
- type DockerRunAdapter
- type Script
- func (script *Script) Alias(client *docker.Client) (*posix.Cmd, error)
- func (script *Script) Run(client *docker.Client, overrideArgs []string, overrideOption docker.RunOption) error
- func (script *Script) Write(client *docker.Client) error
- func (script *Script) WriteWithOverride(client *docker.Client, overrideArgs []string, overrideOption docker.RunOption) error
- type ShellAdapter
Examples ¶
- DockerBinaryAdapter.Command
- DockerBinaryAdapter.FileName
- DockerBinaryAdapter.Image
- DockerBinaryAdapter.Tag
- DockerRunAdapter.Args
- DockerRunAdapter.Command
- DockerRunAdapter.Image
- DockerRunAdapter.Option
- ExpandColonDelimitedStringListWithEnv
- ExpandColonDelimitedStringWithEnv
- ExpandEnv
- ExpandStringKeyMapWithEnv
- Script.Alias
- Script.Run
- Script.Write
- Script.WriteWithOverride
- ShellAdapter.Command
- ShellAdapter.Command (HasDependencies)
- ShellAdapter.Command (UseExtendEntrypoint)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExpandColonDelimitedStringListWithEnv ¶
Example ¶
package main import ( "fmt" "os" "github.com/k-kinzal/aliases/pkg/aliases/script" ) func main() { os.Setenv("FOO", "1") val := []string{ "$FOO:$FOO", } fmt.Println(script.ExpandColonDelimitedStringListWithEnv(val)) }
Output: [1:$FOO]
func ExpandColonDelimitedStringWithEnv ¶
Example ¶
package main import ( "fmt" "os" "github.com/k-kinzal/aliases/pkg/aliases/script" ) func main() { os.Setenv("FOO", "2") val := "$FOO:$FOO" fmt.Println(script.ExpandColonDelimitedStringWithEnv(val)) }
Output: 2:$FOO
func ExpandEnv ¶
Example ¶
package main import ( "fmt" "os" "strconv" "github.com/k-kinzal/aliases/pkg/aliases/script" ) func main() { os.Setenv("FOO_BAR_1", "1") // expand env fmt.Println(script.ExpandEnv("$FOO_BAR_1")) fmt.Println(script.ExpandEnv("${FOO_BAR_1}")) fmt.Println(script.ExpandEnv(strconv.Quote("$FOO_BAR_1"))) fmt.Println(script.ExpandEnv(strconv.Quote("${FOO_BAR_1}"))) // expand env in string fmt.Println(script.ExpandEnv("#$FOO_BAR_1#")) fmt.Println(script.ExpandEnv("#${FOO_BAR_1}#")) fmt.Println(script.ExpandEnv("#\"$FOO_BAR_1\"#")) fmt.Println(script.ExpandEnv("#\"${FOO_BAR_1}\"#")) // special environment fmt.Println(script.ExpandEnv("$PWD")) fmt.Println(script.ExpandEnv("${PWD}")) fmt.Println(script.ExpandEnv("##$PWD##")) fmt.Println(script.ExpandEnv("##${PWD}##")) // no expand env fmt.Println(script.ExpandEnv("'$FOO_BAR_1'")) fmt.Println(script.ExpandEnv("`echo $FOO_BAR_1`")) fmt.Println(script.ExpandEnv("$(echo $FOO_BAR_1)")) fmt.Println(script.ExpandEnv("$@")) // not expand shell special variables // empty fmt.Println(script.ExpandEnv("$")) fmt.Println(script.ExpandEnv("${}")) fmt.Println(script.ExpandEnv("\"\"")) fmt.Println(script.ExpandEnv("''")) fmt.Println(script.ExpandEnv("``")) fmt.Println(script.ExpandEnv("$()")) // broken pair fmt.Println(script.ExpandEnv("${")) fmt.Println(script.ExpandEnv("\"")) fmt.Println(script.ExpandEnv("'")) fmt.Println(script.ExpandEnv("`")) fmt.Println(script.ExpandEnv("$(")) fmt.Println(script.ExpandEnv("${ABC")) fmt.Println(script.ExpandEnv("${...")) fmt.Println(script.ExpandEnv("\"...")) fmt.Println(script.ExpandEnv("'...")) fmt.Println(script.ExpandEnv("`...")) fmt.Println(script.ExpandEnv("$(...")) }
Output: 1 1 "1" "1" #1# #1# #"1"# #"1"# ${ALIASES_PWD:-$PWD} ${ALIASES_PWD:-$PWD} ##${ALIASES_PWD:-$PWD}## ##${ALIASES_PWD:-$PWD}## '$FOO_BAR_1' `echo $FOO_BAR_1` $(echo $FOO_BAR_1) $@ $ ${} "" '' `` $() ${ " ' ` $( ${ABC ${... "... '... `... $(...
func ExpandStringKeyMapWithEnv ¶
Example ¶
package main import ( "fmt" "os" "github.com/k-kinzal/aliases/pkg/aliases/script" ) func main() { os.Setenv("FOO", "1") val := map[string]string{ "$FOO": "$FOO", } fmt.Println(script.ExpandStringKeyMapWithEnv(val)) }
Output: map[1:$FOO]
Types ¶
type DockerBinaryAdapter ¶
DockerBinaryAdapter adapts binary information from spec to a form that can be used in aliases.
func (*DockerBinaryAdapter) Command ¶
func (adpt *DockerBinaryAdapter) Command(client *docker.Client) *posix.Cmd
Command returns a command to download the docker binary.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/docker" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleDockerBinaryAdapter_Command"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleDockerBinaryAdapter_Command"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Docker: &yaml.DockerSpec{ Image: "docker", Tag: "18.09.0", }, }, } bin := script.AdaptDockerBinary(spec) fmt.Println(bin.Command(client).String()) }
Output: docker run --entrypoint "" --volume "/tmp/aliases/ExampleDockerBinaryAdapter_Command/docker:/share" docker:18.09.0 sh -c 'cp -av $(which docker) /share/docker-18-09-0'
func (*DockerBinaryAdapter) FileName ¶
func (adpt *DockerBinaryAdapter) FileName() string
FileName returns filename of docker binary.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" ) func main() { spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Docker: &yaml.DockerSpec{ Image: "docker", Tag: "18.09.0", }, }, } bin := script.AdaptDockerBinary(spec) fmt.Println(bin.FileName()) }
Output: docker-18-09-0
func (*DockerBinaryAdapter) Image ¶
func (adpt *DockerBinaryAdapter) Image() string
Image returns image of docker binary.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" ) func main() { spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Docker: &yaml.DockerSpec{ Image: "docker", Tag: "18.09.0", }, }, } bin := script.AdaptDockerBinary(spec) fmt.Println(bin.Image()) }
Output: docker
func (*DockerBinaryAdapter) Tag ¶
func (adpt *DockerBinaryAdapter) Tag() string
Tag returns tag of docker binary.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" ) func main() { spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Docker: &yaml.DockerSpec{ Image: "docker", Tag: "18.09.0", }, }, } bin := script.AdaptDockerBinary(spec) fmt.Println(bin.Tag()) }
Output: 18.09.0
type DockerRunAdapter ¶
DockerRunAdapter adapts docker run information from spec to a form that can be used in aliases.
func (*DockerRunAdapter) Args ¶
func (adpt *DockerRunAdapter) Args() []string
Args returns arguments of docker run.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" ) func main() { spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Entrypoint: (func(str string) *string { return &str })("sh"), Args: []string{"-c"}, }, } runner := script.AdaptDockerRun(spec) fmt.Println(runner.Args()) }
Output: [-c]
func (*DockerRunAdapter) Command ¶
func (adpt *DockerRunAdapter) Command(client *docker.Client, overrideArgs []string, overrideOption docker.RunOption) *posix.Cmd
Command returns a command to download the docker run.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleDockerRunAdapter_Command"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleDockerRunAdapter_Command"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Entrypoint: (func(str string) *string { return &str })("sh"), Args: []string{"-c"}, }, } runner := script.AdaptDockerRun(spec) cmd := runner.Command(client, []string{"-c", "echo 1"}, docker.RunOption{ Entrypoint: (func(str string) *string { return &str })("bash"), }) fmt.Println(cmd.String()) }
Output: docker run --entrypoint "bash" alpine:${._VERSION:-"latest"} -c "echo 1"
func (*DockerRunAdapter) Image ¶
func (adpt *DockerRunAdapter) Image() string
Image returns image of docker run.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" ) func main() { spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Entrypoint: (func(str string) *string { return &str })("sh"), Args: []string{"-c"}, }, } runner := script.AdaptDockerRun(spec) fmt.Println(runner.Image()) }
Output: alpine:${._VERSION:-"latest"}
func (*DockerRunAdapter) Option ¶
func (adpt *DockerRunAdapter) Option() *docker.RunOption
Option returns option of docker run.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" ) func main() { spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Entrypoint: (func(str string) *string { return &str })("sh"), Args: []string{"-c"}, }, } runner := script.AdaptDockerRun(spec) fmt.Println(*runner.Option().Entrypoint) }
Output: sh
type Script ¶
type Script struct {
// contains filtered or unexported fields
}
Script is the actual of command alises.
func (*Script) Alias ¶
Alias returns the command of alias.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleScript_Alias"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleScript_Alias/export"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Args: []string{"-c"}, }, Path: yaml.SpecPath("/path/to/command"), } cmd, err := script.NewScript(spec).Alias(client) if err != nil { panic(err) } fmt.Println(cmd.String()) }
Output: alias command='/tmp/aliases/ExampleScript_Alias/export/command'
func (*Script) Run ¶
func (script *Script) Run(client *docker.Client, overrideArgs []string, overrideOption docker.RunOption) error
Run aliases script.
Example ¶
package main import ( "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleScript_Alias"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleScript_Alias/export"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Command: (func(s string) *string { return &s })("sh"), Args: []string{"-c"}, }, Path: yaml.SpecPath("/path/to/command"), } if err := script.NewScript(spec).Run(client, []string{"-c", "echo 1"}, docker.RunOption{}); err != nil { panic(err) } }
Output: 1
func (*Script) Write ¶
Write exports aliases script to a file.
Example ¶
package main import ( "fmt" "io/ioutil" "path/filepath" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleScript_Write"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleScript_Write/export"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Args: []string{"-c"}, }, Path: yaml.SpecPath("/path/to/command"), } if err := script.NewScript(spec).Write(client); err != nil { panic(err) } fileinfo, _ := ioutil.ReadDir(context.ExportPath()) for _, file := range fileinfo { content, _ := ioutil.ReadFile(filepath.Join(context.ExportPath(), file.Name())) fmt.Printf("%s:\n", file.Name()) fmt.Println(string(content)) } }
Output: command: #!/bin/sh if [ -p /dev/stdin ]; then cat - | docker run alpine:${COMMAND_VERSION:-"latest"} -c "$@" exit $? elif [ -f /dev/stdin ]; then docker run alpine:${COMMAND_VERSION:-"latest"} -c "$@" </dev/stdin exit $? elif [ -t 0 ]; then docker run alpine:${COMMAND_VERSION:-"latest"} -c "$@" exit $? else echo "" >/dev/null | docker run alpine:${COMMAND_VERSION:-"latest"} -c "$@" exit $? fi
func (*Script) WriteWithOverride ¶
func (script *Script) WriteWithOverride(client *docker.Client, overrideArgs []string, overrideOption docker.RunOption) error
WriteWithOverride exports aliases script to a file with override docker option.
Example ¶
package main import ( "fmt" "io/ioutil" "path/filepath" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleScript_WriteWithOverride"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleScript_WriteWithOverride/export"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Docker: &yaml.DockerSpec{ Image: "docker", Tag: "18.09.0", }, Image: "alpine", Tag: "latest", Args: []string{"-c"}, }, Path: yaml.SpecPath("/path/to/command1"), Dependencies: []*yaml.Option{ { OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Args: []string{"-c"}, }, Path: yaml.SpecPath("/path/to/command2"), }, }, } entrypoint := "bash" if err := script.NewScript(spec).WriteWithOverride(client, []string{"--posix", "-c"}, docker.RunOption{Entrypoint: &entrypoint}); err != nil { panic(err) } fileinfo, _ := ioutil.ReadDir(context.ExportPath()) for _, file := range fileinfo { content, _ := ioutil.ReadFile(filepath.Join(context.ExportPath(), file.Name())) fmt.Printf("%s:\n", file.Name()) fmt.Println(string(content)) } }
Output: command1: #!/bin/sh DOCKER_BINARY_PATH="/tmp/aliases/ExampleScript_WriteWithOverride/docker/docker-18-09-0" if [ ! -f "${DOCKER_BINARY_PATH}" ]; then docker run --entrypoint "" --volume "/tmp/aliases/ExampleScript_WriteWithOverride/docker:/share" docker:18.09.0 sh -c 'cp -av $(which docker) /share/docker-18-09-0' >/dev/null fi if [ -p /dev/stdin ]; then cat - | docker run --entrypoint "bash" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleScript_WriteWithOverride:/tmp/aliases/ExampleScript_WriteWithOverride" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" --volume "/tmp/aliases/ExampleScript_WriteWithOverride/export/command2:/path/to/command2" alpine:${COMMAND1_VERSION:-"latest"} --posix -c "$@" exit $? elif [ -f /dev/stdin ]; then docker run --entrypoint "bash" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleScript_WriteWithOverride:/tmp/aliases/ExampleScript_WriteWithOverride" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" --volume "/tmp/aliases/ExampleScript_WriteWithOverride/export/command2:/path/to/command2" alpine:${COMMAND1_VERSION:-"latest"} --posix -c "$@" </dev/stdin exit $? elif [ -t 0 ]; then docker run --entrypoint "bash" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleScript_WriteWithOverride:/tmp/aliases/ExampleScript_WriteWithOverride" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" --volume "/tmp/aliases/ExampleScript_WriteWithOverride/export/command2:/path/to/command2" alpine:${COMMAND1_VERSION:-"latest"} --posix -c "$@" exit $? else echo "" >/dev/null | docker run --entrypoint "bash" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleScript_WriteWithOverride:/tmp/aliases/ExampleScript_WriteWithOverride" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" --volume "/tmp/aliases/ExampleScript_WriteWithOverride/export/command2:/path/to/command2" alpine:${COMMAND1_VERSION:-"latest"} --posix -c "$@" exit $? fi command2: #!/bin/sh if [ -p /dev/stdin ]; then cat - | docker run alpine:${COMMAND2_VERSION:-"latest"} -c "$@" exit $? elif [ -f /dev/stdin ]; then docker run alpine:${COMMAND2_VERSION:-"latest"} -c "$@" </dev/stdin exit $? elif [ -t 0 ]; then docker run alpine:${COMMAND2_VERSION:-"latest"} -c "$@" exit $? else echo "" >/dev/null | docker run alpine:${COMMAND2_VERSION:-"latest"} -c "$@" exit $? fi
type ShellAdapter ¶
ShellAdapter adapts shell script from spec to a form that can be used in aliases.
func (*ShellAdapter) Command ¶
func (adpt *ShellAdapter) Command(client *docker.Client, overrideArgs []string, overrideOption docker.RunOption, debug bool) (*posix.ShellScript, error)
Command returns a command to aliases script.
Example ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleShellAdapter_Command"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleShellAdapter_Command"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Entrypoint: (func(str string) *string { return &str })("sh"), Args: []string{"-c"}, }, } runner := script.AdaptShell(spec) cmd, err := runner.Command(client, []string{"-c", "echo 1"}, docker.RunOption{ Entrypoint: (func(str string) *string { return &str })("bash"), }, false) if err != nil { panic(err) } fmt.Println(cmd.String()) }
Output: if [ -p /dev/stdin ]; then cat - | docker run --entrypoint "bash" alpine:${._VERSION:-"latest"} -c "echo 1" "$@" exit $? elif [ -f /dev/stdin ]; then docker run --entrypoint "bash" alpine:${._VERSION:-"latest"} -c "echo 1" "$@" </dev/stdin exit $? elif [ -t 0 ]; then docker run --entrypoint "bash" alpine:${._VERSION:-"latest"} -c "echo 1" "$@" exit $? else echo "" >/dev/null | docker run --entrypoint "bash" alpine:${._VERSION:-"latest"} -c "echo 1" "$@" exit $? fi
Example (HasDependencies) ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleShellAdapter_Command_HasDependencies"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleShellAdapter_Command_HasDependencies"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Docker: &yaml.DockerSpec{ Image: "docker", Tag: "18.09.0", }, Image: "alpine", Tag: "latest", Entrypoint: (func(str string) *string { return &str })("sh"), Args: []string{"-c"}, }, Dependencies: []*yaml.Option{ { OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", }, }, }, } runner := script.AdaptShell(spec) cmd, err := runner.Command(client, []string{}, docker.RunOption{}, false) if err != nil { panic(err) } fmt.Println(cmd.String()) }
Output: DOCKER_BINARY_PATH="/tmp/aliases/ExampleShellAdapter_Command_HasDependencies/docker/docker-18-09-0" if [ ! -f "${DOCKER_BINARY_PATH}" ]; then docker run --entrypoint "" --volume "/tmp/aliases/ExampleShellAdapter_Command_HasDependencies/docker:/share" docker:18.09.0 sh -c 'cp -av $(which docker) /share/docker-18-09-0' >/dev/null fi if [ -p /dev/stdin ]; then cat - | docker run --entrypoint "sh" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleShellAdapter_Command_HasDependencies:/tmp/aliases/ExampleShellAdapter_Command_HasDependencies" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" alpine:${._VERSION:-"latest"} -c "$@" exit $? elif [ -f /dev/stdin ]; then docker run --entrypoint "sh" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleShellAdapter_Command_HasDependencies:/tmp/aliases/ExampleShellAdapter_Command_HasDependencies" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" alpine:${._VERSION:-"latest"} -c "$@" </dev/stdin exit $? elif [ -t 0 ]; then docker run --entrypoint "sh" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleShellAdapter_Command_HasDependencies:/tmp/aliases/ExampleShellAdapter_Command_HasDependencies" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" alpine:${._VERSION:-"latest"} -c "$@" exit $? else echo "" >/dev/null | docker run --entrypoint "sh" --env ALIASES_PWD="${ALIASES_PWD:-$PWD}" --privileged --volume "/tmp/aliases/ExampleShellAdapter_Command_HasDependencies:/tmp/aliases/ExampleShellAdapter_Command_HasDependencies" --volume "${DOCKER_BINARY_PATH}:/usr/local/bin/docker" --volume "/var/run/docker.sock:/var/run/docker.sock" alpine:${._VERSION:-"latest"} -c "$@" exit $? fi
Example (UseExtendEntrypoint) ¶
package main import ( "fmt" "github.com/k-kinzal/aliases/pkg/aliases/context" "github.com/k-kinzal/aliases/pkg/aliases/script" "github.com/k-kinzal/aliases/pkg/aliases/yaml" "github.com/k-kinzal/aliases/pkg/docker" ) func main() { if err := context.ChangeHomePath("/tmp/aliases/ExampleShellAdapter_Command_UseExtendEntrypoint"); err != nil { panic(err) } if err := context.ChangeExportPath("/tmp/aliases/ExampleShellAdapter_Command_UseExtendEntrypoint"); err != nil { panic(err) } client, err := docker.NewClient() if err != nil { panic(err) } spec := yaml.Option{ OptionSpec: &yaml.OptionSpec{ Image: "alpine", Tag: "latest", Entrypoint: (func(str string) *string { return &str })(` #!/bin/sh sh -c "$@" `), Args: []string{"-c"}, }, } runner := script.AdaptShell(spec) cmd, err := runner.Command(client, []string{}, docker.RunOption{}, false) if err != nil { panic(err) } fmt.Println(cmd.String()) }
Output: if [ -p /dev/stdin ]; then cat - | docker run --entrypoint "/b82c6c95fa559f017ac62344f961e206" --volume "/tmp/aliases/ExampleShellAdapter_Command_UseExtendEntrypoint/entrypoint/b82c6c95fa559f017ac62344f961e206:/b82c6c95fa559f017ac62344f961e206" alpine:${._VERSION:-"latest"} -c "$@" exit $? elif [ -f /dev/stdin ]; then docker run --entrypoint "/b82c6c95fa559f017ac62344f961e206" --volume "/tmp/aliases/ExampleShellAdapter_Command_UseExtendEntrypoint/entrypoint/b82c6c95fa559f017ac62344f961e206:/b82c6c95fa559f017ac62344f961e206" alpine:${._VERSION:-"latest"} -c "$@" </dev/stdin exit $? elif [ -t 0 ]; then docker run --entrypoint "/b82c6c95fa559f017ac62344f961e206" --volume "/tmp/aliases/ExampleShellAdapter_Command_UseExtendEntrypoint/entrypoint/b82c6c95fa559f017ac62344f961e206:/b82c6c95fa559f017ac62344f961e206" alpine:${._VERSION:-"latest"} -c "$@" exit $? else echo "" >/dev/null | docker run --entrypoint "/b82c6c95fa559f017ac62344f961e206" --volume "/tmp/aliases/ExampleShellAdapter_Command_UseExtendEntrypoint/entrypoint/b82c6c95fa559f017ac62344f961e206:/b82c6c95fa559f017ac62344f961e206" alpine:${._VERSION:-"latest"} -c "$@" exit $? fi