diff --git a/src/build/openapi.json b/build/openapi.json similarity index 100% rename from src/build/openapi.json rename to build/openapi.json diff --git a/src/build/server.cfg.yaml b/build/server.cfg.yaml similarity index 100% rename from src/build/server.cfg.yaml rename to build/server.cfg.yaml diff --git a/src/build/types.cfg.yaml b/build/types.cfg.yaml similarity index 100% rename from src/build/types.cfg.yaml rename to build/types.cfg.yaml diff --git a/src/config/InvestAccnt.yaml b/config/InvestAccnt.yaml similarity index 100% rename from src/config/InvestAccnt.yaml rename to config/InvestAccnt.yaml diff --git a/src/go.mod b/src/go.mod index e0c3c3d..6fdbb6c 100644 --- a/src/go.mod +++ b/src/go.mod @@ -3,18 +3,22 @@ module sku61.com/InvestAccnt go 1.18 require ( - github.com/deepmap/oapi-codegen v1.11.0 // indirect - github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect - github.com/getkin/kin-openapi v0.94.0 // indirect + github.com/deepmap/oapi-codegen v1.11.0 + github.com/dgrijalva/jwt-go v3.2.0+incompatible + github.com/getkin/kin-openapi v0.94.0 + github.com/google/uuid v1.3.0 + github.com/labstack/echo/v4 v4.7.2 + gopkg.in/yaml.v2 v2.4.0 +) + +require ( github.com/ghodss/yaml v1.0.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/swag v0.21.1 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect - github.com/google/uuid v1.3.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/invopop/yaml v0.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/labstack/echo/v4 v4.7.2 // indirect github.com/labstack/gommon v0.4.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -29,6 +33,5 @@ require ( golang.org/x/text v0.4.0 // indirect golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect golang.org/x/tools v0.3.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/src/go.sum b/src/go.sum index 1a87446..9903a97 100644 --- a/src/go.sum +++ b/src/go.sum @@ -1,6 +1,7 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= @@ -53,9 +54,11 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI= github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks= @@ -97,8 +100,10 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -106,6 +111,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= @@ -183,6 +189,7 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/src/servermain.exe b/src/servermain.exe new file mode 100644 index 0000000..a90e2e2 Binary files /dev/null and b/src/servermain.exe differ diff --git a/src/servermain.go b/src/servermain.go index fbe6782..3d51139 100644 --- a/src/servermain.go +++ b/src/servermain.go @@ -66,7 +66,7 @@ func Run(e *echo.Echo, addressPort string, timeOut time.Duration, msgLevel int) func main() { - configPath := "./config/InvestAccnt.yaml" + configPath := "../config/InvestAccnt.yaml" softwareConfig, err := api.ParseFlags(configPath) if err != nil { fmt.Fprintf(os.Stderr, "Error loading configuration,flags\n") diff --git a/src/static/openapi.json b/static/openapi.json similarity index 100% rename from src/static/openapi.json rename to static/openapi.json diff --git a/update.ps1 b/update.ps1 new file mode 100644 index 0000000..e22770c --- /dev/null +++ b/update.ps1 @@ -0,0 +1,137 @@ +param ( + [string] $baseFolder = ".", + [string] $appShort, + [string] $mainGo, + [switch] $skipApiFetch, + [switch] $skipGoFetch +) + + +$cd = Get-Location +Set-Location $baseFolder + +$wellFile = "./.well-known/devops.json" +if (!(Test-Path $wellFile -PathType Leaf)) { + Write-Host "The specification file '$wellFile' not found" -ForegroundColor Red + Set-Location $cd + Throw "The specification file '$wellFile' not found" +} +Write-Host "Using specification file '$wellFile' " -ForegroundColor White + +$devops = Get-Content $wellFile | ConvertFrom-JSON + +$openApiFile = "" +$devops.apis | ForEach-Object { + if ($_.engine.url.endswith(".json") -and ($_.engine.category -eq "API") -and ($_.engine.name -eq "openapi")) { + $openApiFile = $baseFolder + $_.engine.url + } +} + + +if ((Test-Path -Path "./build") -eq $false) { + Write-Host "Missing './build' directory" -ForegroundColor Red + Set-Location $cd + Throw "Missing './build' directory" +} + + + +# API Source URL +$openApiUrl = "" +if ($openApiFile -eq "" -and $skipApiFetch -eq $false) { + $openApiUrl = "" + if ($openApiFile -eq "") { + $openApiFile = "./build/openapi.json" + } +} + +# Download the file +if ($openApiUrl -ne "" -and $skipApiFetch -eq $false) { + Write-Host "Fetching Open API definition" + try + { + $Response = Invoke-WebRequest -Uri $openApiUrl -OutFile $openApiFile + $StatusCode = $Response.StatusCode + Write-Host "Fetch completed" + } catch { + $StatusCode = $_.Exception.Response.StatusCode.value__ + } + $StatusCode +} + +# Find the Open API file +if ($openApiFile -eq "") { + Get-ChildItem –Path "./build/" -Filter *.json | Foreach-Object { + $openApiFile = $_.FullName + } +} + + +if ($openApiFile -eq "") { + Write-Host "Missing Open API in './build' directory" -ForegroundColor Red + Set-Location $cd + Throw "Missing Open API in './build' directory" +} + +$openApiFile = Resolve-Path -Path $openApiFile + +if ($openApiFile -ne "./static/openapi.json") { + Copy-Item $openApiFile -Destination "./static/openapi.json" +} + +Set-Location "./src" + +# Find the main Go build file +if ($mainGo -eq "") { + Get-ChildItem –Path "./" -Filter *.go | Foreach-Object { + $mainGo = $_.FullName + } +} + +if ($mainGo -eq "") { + if ((Test-Path -Path "./servermain.go") -eq $false) { + New-Item -Path './servermain.go' -ItemType File| Out-Null + } + $mainGo = "./servermain.go" +} + + +if ($mainGo -eq "") { + Write-Host "Missing main Go file in current directory" -ForegroundColor Red + Set-Location $cd + Throw "Missing main Go file in current directory" +} + + +if ($isWindows) { + go env -w GOOS=windows +} else { + go env -w GOOS=linux +} +go env -w GOARCH=386 + + +if ($skipGoFetch -eq $false) { + Write-Host "Fetching Go packages" + go get gopkg.in/yaml.v2 + go get github.com/deepmap/oapi-codegen/pkg/codegen + go get github.com/deepmap/oapi-codegen/pkg/util + go get github.com/deepmap/oapi-codegen/pkg/types@v1.11.0 + go get github.com/labstack/echo/v4/middleware@v4.7.2 + go get github.com/getkin/kin-openapi/routers/gorillamux@v0.94.0 + go get github.com/dgrijalva/jwt-go +} + +$codeGen = $env:USERPROFILE + "/go/pkg/mod/github.com/deepmap/oapi-codegen@v1.11.0/cmd/oapi-codegen/oapi-codegen.go" + +Write-Host "Generating code from $openApiFile" +go run $codeGen --config ../build/types.cfg.yaml $openApiFile +go run $codeGen --config ../build/server.cfg.yaml $openApiFile + +Write-Host "Building Go executable $mainGo" +go build $mainGo + + +Set-Location $cd + +Write-Host "Code generation completed" -ForegroundColor Green \ No newline at end of file