diff --git a/.github/workflows/gen_docs.yml b/.github/workflows/gen_docs.yml index df60445..523d435 100644 --- a/.github/workflows/gen_docs.yml +++ b/.github/workflows/gen_docs.yml @@ -15,7 +15,7 @@ jobs: - name: Gen Docs if: "!contains(github.event.head_commit.message, 'skip-ci')" - run: make docker-mermaid-run + run: make demo-docker - name: Publish Docs id: deploy-netlify-preview diff --git a/Dockerfile b/Dockerfile index 0518770..ede6153 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ FROM golang:alpine AS builder WORKDIR /src +COPY go.* /src/ +RUN go mod download ADD . . RUN go build -o sysl-catalog . diff --git a/Makefile b/Makefile index 5a0dfd2..4355ca3 100644 --- a/Makefile +++ b/Makefile @@ -21,13 +21,22 @@ demo-html: sysl-catalog run --type=html -o demo/html demo/demo.sysl demo-markdown: sysl-catalog run -o demo/markdown demo/demo.sysl +demo-docker: docker + docker run \ + -e SYSL_TOKENS=$(SYSL_TOKENS) \ + -e SYSL_MODULES=on \ + -v $$(pwd):/usr/ \ + anzbank/sysl-catalog:latest run \ + -o demo/html \ + -v \ + --type=html \ + demo/demo.sysl demo-server: docker docker run \ -p 6900:6900 \ -e SYSL_TOKENS=$(SYSL_TOKENS) \ -e SYSL_PLANTUML=localhost:8080 \ -e SYSL_MODULES=on \ - -v $$(pwd)/demo/html:/out:rw \ -v $$(pwd)/demo:/usr/demo:ro \ anzbank/sysl-catalog:latest run \ --serve \ diff --git a/main.go b/main.go index 39057b9..5286a8a 100644 --- a/main.go +++ b/main.go @@ -95,6 +95,9 @@ func main() { }() if handler.RootModule == nil { m, err = parseSyslFile(".", *input, fs, logger) + if err != nil { + return nil, err + } } else { var changedModule *sysl.Module wd, _ := os.Getwd() @@ -102,13 +105,12 @@ func main() { changedModule, err = parseSyslFile(".", relativeChangedFilePath, fs, logger) if err == nil { m = overwriteSyslModules(handler.RootModule, changedModule) + } else { + return nil, err } } return }() - if err != nil { - fmt.Println(err) - } handler.Update(m, err) livereload.ForceRefresh() logger.Info(i) diff --git a/pkg/catalog/server.go b/pkg/catalog/server.go index 2d09510..c39bd46 100644 --- a/pkg/catalog/server.go +++ b/pkg/catalog/server.go @@ -18,25 +18,30 @@ import ( // Update loads another Sysl module into a project and runs func (p *Generator) Update(m *sysl.Module, errs ...error) *Generator { //p.Fs = afero.NewMemMapFs() - p.RootModule = m - p.GeneratedFiles = make(map[string][]byte) - p.Mapper = syslwrapper.MakeAppMapper(m) - p.Mapper.IndexTypes() - p.Mapper.ConvertTypes() - if p.RootModule != nil && len(p.ModuleAsMacroPackage(p.RootModule)) <= 1 && !p.CustomTemplate { - p.StartTemplateIndex = 1 // skip the MacroPackageProject - } else { - p.StartTemplateIndex = 0 - } + p.errs = []error{} for _, err := range errs { - if p.errs == nil { - p.errs = make([]error, 0, len(errs)) - } if err != nil { p.errs = append(p.errs, err) + // Clear generated files since we only want to display an error + p.GeneratedFiles = nil + p.Fs = afero.NewMemMapFs() } } - p.Run() + + if len(p.errs) == 0 { + p.RootModule = m + p.GeneratedFiles = make(map[string][]byte) + p.Mapper = syslwrapper.MakeAppMapper(m) + p.Mapper.IndexTypes() + p.Mapper.ConvertTypes() + if p.RootModule != nil && len(p.ModuleAsMacroPackage(p.RootModule)) <= 1 && !p.CustomTemplate { + p.StartTemplateIndex = 1 // skip the MacroPackageProject + } else { + p.StartTemplateIndex = 0 + } + p.Run() + } + return p }