Makefile 3.95 KB
# If you want, change INTERFACE = (eth0|eth1|wlan0|wlan1|e.g)

INTERFACE   = $(shell ip route | awk '{print $$5; exit}')

LOG         = server.log
SERVER      = server.js
BLENDER_VER = "2.74"
BLENDER_DIR = "blender-$(BLENDER_VER)-linux-glibc211-x86_64"
BLENDER_BZ2 = "$(BLENDER_DIR).tar.bz2"
BLENDER_URL = "http://download.blender.org/release/Blender$(BLENDER_VER)/$(BLENDER_BZ2)"
CACHE      += "./events.log"
CACHE      += "./server.log"
DONE        = [\33[32;5mFinalizado\33[m]
FAIL        = [\33[31;5mFalhou\33[m] Codigo: $$?
INIT_SCRIPT = "wikilibras-api"
LOCALHOST   = $(shell ip addr list ${INTERFACE} | grep "inet " | cut -d ' ' -f6 | cut -d/ -f1)

__help__:
	@echo ""
	@echo " \33[32;5m make clean   \33[0m \33[34;5m Remove os logs do servidor                   \33[0m"
	@echo " \33[32;5m make install \33[0m \33[34;5m instala todas as dependencias da API         \33[0m"
	@echo " \33[32;5m make list    \33[0m \33[34;5m lista a API se estiver ativa em background   \33[0m"
	@echo " \33[32;5m make run     \33[0m \33[34;5m conecta o servidor js ao MongoDB para testes \33[0m"
	@echo " \33[32;5m make start   \33[0m \33[34;5m inicia uma instancia da API em background    \33[0m"
	@echo " \33[32;5m make stop    \33[0m \33[34;5m finaliza a API instanciada no background     \33[0m"
	@echo ""

startup-enable:
	@sed "s#<path-to-project>#$(CURDIR)#" ./$(INIT_SCRIPT) | sudo tee /etc/init.d/$(INIT_SCRIPT)
	@sudo chmod 755 /etc/init.d/$(INIT_SCRIPT)
	@sudo chown "root:root" /etc/init.d/$(INIT_SCRIPT)
	@sudo update-rc.d -f $(INIT_SCRIPT) defaults

startup-disable:
	@sudo update-rc.d -f $(INIT_SCRIPT) remove
	@sudo rm -f /etc/init.d/$(INIT_SCRIPT)

clean:
	@rm -rf $(CACHE)

install: uninstall startup-enable .update .blender .libav .nodejs .npm .mongodb update-ip
	@echo "\33[31;5mO computador deve ser reiniciado para concluir o processo\33[0m"

uninstall: clean startup-disable
	@sudo rm -rf "./node_modules"
	@sudo rm -f "./wikilibras_server"
	@sudo rm -rf "./node_modules"
	@sudo rm -rf "$$HOME/.forever"
	@sudo rm -rf "$$HOME/.node-gyp"
	@sudo rm -rf "$$HOME/.npm"

.blender:
	@sudo apt-get -y install blender
	@test -d "/usr/share/blender$(BLENDER_VER)/" || make -s .blender_stable

.blender_stable:
	@wget $(BLENDER_URL) -NcO "$$HOME/$(BLENDER_DIR).tar.bz2"
	@cd "$$HOME" && \
	tar -xf $(BLENDER_BZ2) && \
	sudo rm -rf "/usr/share/blender$(BLENDER_VER)/" && \
	sudo mv -f "$(BLENDER_DIR)" "/usr/share/blender$(BLENDER_VER)" && \
	sudo ln -sf "/usr/share/blender$(BLENDER_VER)/blender" "/usr/bin/blender" && \
	sudo ln -sf "/usr/share/blender$(BLENDER_VER)/blenderplayer" "/usr/bin/blenderplayer"

.libav:
	@sudo apt-get -y install libav-tools

.mongodb:
	@sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
	@echo "deb http://repo.mongodb.org/apt/ubuntu "$$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee "/etc/apt/sources.list.d/mongodb-org-3.0.list"
	@sudo apt-get update
	@sudo apt-get install -y mongodb-org
	@sudo rm "/etc/apt/sources.list.d/mongodb-org-3.0.list"

.nodejs:
	@sudo apt-get -y install nodejs
	@sudo ln -sf "/usr/bin/nodejs" "/usr/bin/node"

.npm:
	@sudo apt-get -y install gcc make build-essential npm
	@sudo ln -sf "$$HOME" "wikilibras_server"
	@sudo npm cache clean
	@sudo npm install -g forever node-gyp cors
	@sudo npm link forever node-gyp cors
	@sudo npm install

update-ip:
	@cp helpers/properties.js.template helpers/properties.js
	@sed -e '/^var host/{s/.*/var host = \"localhost\";/}' -i "./helpers/properties.js"
	@if [ "${LOCALHOST}" != "" ]; then sed -e '/^var host/{s/.*/var host = \"${LOCALHOST}\";/}' -i "./helpers/properties.js"; fi
	@cat "./helpers/properties.js" | grep "var host"
	@cat "./helpers/properties.js" | grep "var port"

.update:
	@sudo apt-get update

list:
	@sudo forever list

run:
	@sudo nodejs $(SERVER)

start:
	@sudo forever start --spinSleepTime 1000 --minUptime 1000 -a -l $(LOG) -o $(LOG) -e $(LOG) $(SERVER)
	@echo "`date` Service started ... " >> $(LOG)

stop:
	@sudo forever stop $(SERVER)
	@echo "`date` Service stopped ... " >> $(LOG)