Sign inSign up

hugojosefson/egos

By hugojosefson

•Updated over 7 years ago

egos; embed golang script in shell script

Image
0

296

hugojosefson/egos repository overview

⁠egos; embed golang script in shell script

Command line tool to embed golang script in shell script.

This fork is to enable using egos via Docker.

⁠Usage

Please check the help message:

docker run --rm -i hugojosefson/egos -h

⁠Examples

A "hello, world" program:

docker run --rm -i hugojosefson/egos -i '"fmt"' 'fmt.Println("hello, world")'
#=> "hello, world\n"

Print source code generated by egos (useful for debugging).

docker run --rm -i hugojosefson/egos -d -i '"fmt"' 'fmt.Println("hello, world")'
#=> `// generated by egos(1)
#    package main
#
#    import (
#    	"fmt"
#    )
#
#    func main() {
#    	fmt.Println("hello, world")
#    }
#    `

Access command-line arguments.

docker run --rm -i hugojosefson/egos -i '"fmt";"os"' '
for _, s := range os.Args {
    fmt.Println(s)
}' a BB  'c  c'
#=> "a\nBB\nc  c\n"

"Each line" mode (add loops around code).

docker run --rm -i hugojosefson/egos -i 'f "fmt"' -n 'f.Println(line)' <<'END'
foo
bar
baz
END
#=> "foo\nbar\nbaz\n"

"each line with print" mode.

docker run --rm -i hugojosefson/egos -p 'line += line' <<'END'
foo
bar
baz
END
#=> "foofoo\nbarbar\nbazbaz\n"

If you want to make your script load faster:

  1. Print source code generated by egos, and redirect to a file.
  2. Compile the file by using the go build command.
docker run --rm -i hugojosefson/egos -d -p 'line += line' > linedup.go
docker run --rm -i -v $(pwd):/go -u $(id -u):$(id -g) golang go build linedup.go

./linedup <<'END'
foo
bar
baz
END
#=> "foofoo\nbarbar\nbazbaz\n"

⁠License

zlib License.

Tag summary

Content type

Image

Digest

Size

109.5 MB

Last updated

over 7 years ago

docker pull hugojosefson/egos