diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cde0123 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +dist/ diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..e4877ac --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,47 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com + +# The lines below are called `modelines`. See `:help modeline` +# Feel free to remove those if you don't want/need to use them. +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=cnqoj + +version: 1 + +before: + hooks: + # You may remove this if you don't use go modules. + - go mod tidy + # you may remove this if you don't need go generate + - go generate ./... + +builds: + - env: + - CGO_ENABLED=0 + binary: node-compose + goos: + - linux + - windows + - darwin + +archives: + - format: tar.gz + # this name template makes the OS and Arch compatible with the results of `uname`. + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end }} + # use zip for windows archives + format_overrides: + - goos: windows + format: zip + +changelog: + sort: asc + filters: + exclude: + - "^docs:" + - "^test:" diff --git a/pkg/cmd/cmd.go b/pkg/cmd/cmd.go index fdcc8ce..90f874a 100644 --- a/pkg/cmd/cmd.go +++ b/pkg/cmd/cmd.go @@ -38,6 +38,7 @@ Then, with a single command, you create and start all the services from your con composeFile := compose.NewCompose( compose.WithWorkers(cfg.Component.Decentralized), compose.SetNodeVersion(version), + compose.SetNodeVolume(), ) var b bytes.Buffer diff --git a/pkg/compose/compose.go b/pkg/compose/compose.go index 9c5b32e..810dbf3 100644 --- a/pkg/compose/compose.go +++ b/pkg/compose/compose.go @@ -71,6 +71,25 @@ func SetNodeVersion(version string) Option { } } +func SetNodeVolume() Option { + return func(c *Compose) { + services := c.Services + for k, v := range services { + if strings.Contains(v.Image, "rss3/node") { + services[k] = Service{ + ContainerName: v.ContainerName, + Image: v.Image, + Environment: v.Environment, + Volumes: []string{"./config:/etc/rss3"}, + Command: v.Command, + } + } + } + + c.Services = services + } +} + func WithWorkers(workers []*config.Module) Option { return func(c *Compose) { services := c.Services