1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-05 00:26:23 -07:00
gochan/Makefile
2020-05-19 17:50:33 -07:00

138 lines
3.9 KiB
Makefile

BIN=gochan
BINEXE=$(BIN)$(shell go env GOEXE)
GCOS=$(shell go env GOOS)
GCOS_NAME=${GCOS}
ifeq (${GCOS_NAME},darwin)
GCOS_NAME=macos
endif
GOCHAN_PKG=github.com/gochan-org/gochan
DOCUMENT_ROOT=/srv/gochan
RELEASE_NAME=${BIN}-v${VERSION}_${GCOS_NAME}
RELEASE_DIR=releases/${RELEASE_NAME}
PREFIX=/usr/local
VERSION=$(shell cat version)
GCFLAGS=-trimpath=${PWD}
ASMFLAGS=-trimpath=${PWD}
LDFLAGS=-X main.versionStr=${VERSION}
GO_CMD=go build -o ${BINEXE} -v
NPM_CMD=npm --prefix frontend/ run
DOCUMENT_ROOT_FILES= \
css \
error \
javascript \
banned.jpg \
notbanned.png \
permabanned.jpg \
favicon* \
firstrun.html \
hittheroad*
build:
GOOS=${GCOS} ${GO_CMD} -gcflags=${GCFLAGS} -asmflags=${ASMFLAGS} -ldflags="${LDFLAGS} -w -s" ./cmd/gochan
build-debug:
GOOS=${GCOS} ${GO_CMD} -gcflags="${GCFLAGS} -l -N" -asmflags=${ASMFLAGS} -ldflags="${LDFLAGS}" ./cmd/gochan
clean:
rm -f ${BIN}
rm -f ${BIN}.exe
rm -rf releases/
rm -rf ${GOPATH}/src/${GOCHAN_PKG}
dependencies:
go get -v \
github.com/disintegration/imaging \
github.com/nranchev/go-libGeoIP \
github.com/go-sql-driver/mysql \
github.com/lib/pq \
golang.org/x/net/html \
github.com/aquilax/tripcode \
golang.org/x/crypto/bcrypt \
github.com/frustra/bbcode \
github.com/mattn/go-sqlite3 \
github.com/tdewolff/minify \
github.com/mojocn/base64Captcha
install:
mkdir -p \
${PREFIX}/share/gochan \
${DOCUMENT_ROOT} \
/etc/gochan \
/var/log/gochan
cp ${DO_SYMLINKS} -f ./gochan ${PREFIX}/bin/${BINEXE}
cp ${DO_SYMLINKS} -f ./*.sql ${PREFIX}/share/gochan/
cp ${DO_SYMLINKS} -rf ./templates ${PREFIX}/share/gochan/
cd html $(foreach file,${DOCUMENT_ROOT_FILES}, && cp -rf ${file} ${DOCUMENT_ROOT})
$(info gochan successfully installed. If you haven't already, you should run)
$(info cp sample-configs/gochan.example.json /etc/gochan/gochan.json)
ifeq (${GCOS_NAME},linux)
$(info If your distro has systemd, you will also need to run the following commands)
$(info cp sample-configs/gochan-[mysql|postgresql|sqlite3].service /lib/systemd/system/gochan.service)
$(info systemctl daemon-reload)
$(info systemctl enable gochan.service)
$(info systemctl start gochan.service)
endif
install-symlinks:
DO_SYMLINKS=-s make install
js:
$(error This doesn't work quite yet. It's coming very soon though.)
${NPM_CMD} build
js-minify:
$(error This doesn't work quite yet. It's coming very soon though.)
${NPM_CMD} build-minify
js-watch:
$(error This doesn't work quite yet. It's coming very soon though.)
${NPM_CMD} build-watch
js-minify-watch:
$(error This doesn't work quite yet. It's coming very soon though.)
${NPM_CMD} build-minify-watch
release-all:
GOOS=darwin make release
GOOS=linux make release
GOOS=windows make release
release:
mkdir -p \
${RELEASE_DIR}/html \
${RELEASE_DIR}/log \
${RELEASE_DIR}/sample-configs
cp LICENSE ${RELEASE_DIR}/
cp README.md ${RELEASE_DIR}/
# make js-minify
cp -rt ${RELEASE_DIR}/html/ $(foreach file,${DOCUMENT_ROOT_FILES},html/${file})
cp -r docker ${RELEASE_DIR}/
cp -r sass ${RELEASE_DIR}/
cp -r templates ${RELEASE_DIR}/
cp initdb_*.sql ${RELEASE_DIR}/
cp sample-configs/*.nginx ${RELEASE_DIR}/sample-configs/
cp sample-configs/gochan.example.json ${RELEASE_DIR}/sample-configs/
make build
make sass-minified
mv ${BINEXE} ${RELEASE_DIR}/
ifeq (${GCOS_NAME},macos)
cd releases && zip -r ${RELEASE_NAME}.zip ${RELEASE_NAME}
else ifeq (${GCOS_NAME},windows)
cd releases && zip -r ${RELEASE_NAME}.zip ${RELEASE_NAME}
else
cp sample-configs/gochan-mysql.service ${RELEASE_DIR}/sample-configs/
cp sample-configs/gochan-postgresql.service ${RELEASE_DIR}/sample-configs/
cp sample-configs/gochan-sqlite3.service ${RELEASE_DIR}/sample-configs/
tar -C releases -zcvf ${RELEASE_DIR}.tar.gz ${RELEASE_NAME}
endif
sass:
sass --no-source-map sass:html/css
sass-minified:
sass --style compressed --no-source-map sass:html/css
test:
go test -v ./src
.PHONY: subpackages ${INTERNALS} sass