Skip to content

Commit

Permalink
Merge pull request #11 from josephspurrier/remove-mod
Browse files Browse the repository at this point in the history
Add Makefile and remove mod from Go
  • Loading branch information
josephspurrier committed Mar 7, 2020
2 parents b530517 + 0207662 commit b6029ca
Show file tree
Hide file tree
Showing 178 changed files with 2,139 additions and 30,440 deletions.
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
APP_VERSION=1.0
MYSQL_CONTAINER=mysql:5.6
MYSQL_ROOT_PASSWORD=password
MYSQL_HOST=db
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
.DS_Store
thumbs.db

# Environment files
.envrc

# IDE files
.vscode/
/src/app/ui/coverage
Expand All @@ -16,6 +19,16 @@ thumbs.db
*.dll
*.so
*.dylib
/src/app/api/cmd/api/api
/src/app/api/cmd/dbmigrate

# Vendored directories for Swagger and gvt.
/src/app/api/vendor/**
!/src/app/api/vendor/manifest
/src/github.com
/src/go.mongodb.org
/src/golang.org
/src/gopkg.in

# Test binary, build with `go test -c`
*.test
Expand Down
5 changes: 4 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ services:
- mysql

go:
- "1.10"
- "1.11"
- "1.12"
- "1.13"
- "1.14"

cache:
directories:
Expand All @@ -27,6 +28,8 @@ before_install:
- go get golang.org/x/tools/cmd/cover
- go get github.com/josephspurrier/covfmt
- go get github.com/go-swagger/go-swagger/cmd/swagger
- go get github.com/FiloSottile/gvt
- gvt restore

install:
- cd $GOPATH/src/app/ui
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2019 Joseph Spurrier
Copyright (c) 2019-2020 Joseph Spurrier

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
124 changes: 124 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# This Makefile is an easy way to run common operations.
# Execute commands this:
# * make db-init
# * make api-dep
# * make api-dev
# * make nuxt-version
#
# Tip: Each command is run on its own line so you can't CD unless you
# connect commands together using operators. See examples:
# A; B # Run A and then B, regardless of success of A
# A && B # Run B if and only if A succeeded
# A || B # Run B if and only if A failed
# A & # Run A in background.
# Source: https://askubuntu.com/a/539293
#
# Tip: Use $(shell app param) syntax when expanding a shell return value.

# Load the shared environment variables (shared with docker-compose.yml).
include ${GOPATH}/.env

# Set local environment variables.
MYSQL_NAME=mysql56

.PHONY: docker-build
docker-build:
# Build the docker containers.
bash ${GOPATH}/bash/build-containers.sh

.PHONY: ui-dep
ui-dep:
# Install the dependencies.
cd ${GOPATH}/src/app/ui && npm install

.PHONY: ui-dev
ui-dev:
# Start the UI.
cd ${GOPATH}/src/app/ui && npm run dev

.PHONY: api-dep
api-dep:
# Restore the dependencies. Get gvt if it's not found in $PATH.
which gvt || go get github.com/FiloSottile/gvt
cd ${GOPATH}/src/app/api && gvt restore

.PHONY: api-dev
api-dev:
# Start the API.
go run ${GOPATH}/src/app/api/cmd/api/main.go

.PHONY: api-test
api-test:
# Run the Go tests.
cd ${GOPATH}/src/app/api && go test ./...

.PHONY: clean
clean:
# Remove binaries.
rm -rf ${GOPATH}/src/app/api/cmd/api/api
rm -rf ${GOPATH}/src/app/api/cmd/dbmigrate/dbmigrate

.PHONY: gvt-get
gvt-get:
# Download gvt.
go get github.com/FiloSottile/gvt

.PHONY: swagger-get
swagger-get:
# Download the Swagger generation tool.
go get github.com/go-swagger/go-swagger/cmd/swagger

.PHONY: swagger-gen
swagger-gen:
# Generate the swagger spec.
cd ${GOPATH}/src/app/api/cmd/api && \
swagger generate spec -o ${GOPATH}/src/app/api/static/swagger/swagger.json

# Replace 'example' with 'x-example' in the swagger spec.
## MacOS
sed -i '' -e 's/example/x\-example/' ${GOPATH}/src/app/api/static/swagger/swagger.json
## Linux
#sed -i'' -e 's/example/x\-example/' ${GOPATH}/src/app/api/static/swagger/swagger.json

# Validate the swagger spec.
swagger validate ${GOPATH}/src/app/api/static/swagger/swagger.json

# Serve the spec for the browser.
swagger serve -F=swagger ${GOPATH}/src/app/api/static/swagger/swagger.json

.PHONY: db-init
db-init:
# Launch database container.
docker run -d --name=${MYSQL_NAME} -p 3306:3306 -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} ${MYSQL_CONTAINER}

.PHONY: db-start
db-start:
# Start the stopped database container.
docker start ${MYSQL_NAME}

.PHONY: db-stop
db-stop:
# Stop the running database container.
docker stop ${MYSQL_NAME}

.PHONY: db-reset
db-reset:
# Drop the database, create the database, and perform the migrations.
docker exec ${MYSQL_NAME} sh -c "exec mysql -h 127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD} -e 'DROP DATABASE IF EXISTS main;'"
docker exec ${MYSQL_NAME} sh -c "exec mysql -h 127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD} -e 'CREATE DATABASE IF NOT EXISTS main DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;'"
go run ${GOPATH}/src/app/api/cmd/dbmigrate/main.go

.PHONY: db-rm
db-rm:
# Stop and remove the database container.
docker rm -f ${MYSQL_NAME}

.PHONY: nuxt-upgrade
nuxt-upgrade:
# Upgrade nuxt to the latest version.
cd ${GOPATH}/src/app/ui && npm upgrade nuxt

.PHONY: nuxt-version
nuxt-version:
# Output the version of nuxt.
${GOPATH}/src/app/ui/node_modules/.bin/nuxt --version
Loading

0 comments on commit b6029ca

Please sign in to comment.