Makefile: Support makefile vars set externally

- config_dir
- cache_dir
- log_dir
- env=test
master
Jakub Valenta 4 years ago
parent 08492a6a56
commit 2d35bebaed

1
.gitignore vendored

@ -1,4 +1,3 @@
.credentials
.log
.mypy_cache
__pycache__

@ -1,46 +1,64 @@
_python_pkg = art_account
config_dir = $(HOME)/.config/art-account
cache_dir = $(HOME)/.cache/art-account
log_dir = .log
transactions_file = $(cache_dir)/transactions.json
transactions_file_test = $(cache_dir)/transactions_test.json
images_file = $(config_dir)/images.json
images_random_file = $(config_dir)/images_random.json
images_sorted_file = $(config_dir)/images_sorted.json
images_final_file = $(config_dir)/images_final.json
.PHONY: setup setup-dev test lint reformat clean clean-test backup spreadsheet spreadsheet-test spreadsheet-test-full deploy-upload deploy-cron checkargs-remote help
transactions: $(transactions_file)
transactions-test: $(transactions_file_test)
_python_pkg := art_account
_executable := art-account
config_dir ?= $(HOME)/.config/art-account
cache_dir ?= $(HOME)/.cache/art-account
log_dir ?= $(HOME)/.local/share/art-account/log
transactions_file := $(cache_dir)/transactions.json
transactions_file_test := $(cache_dir)/transactions_test.json
images_file := $(config_dir)/images.json
images_random_file := $(config_dir)/images_random.json
images_sorted_file := $(config_dir)/images_sorted.json
images_final_file := $(config_dir)/images_final.json
.PHONY: transactions
transactions: ## Retrieve transactions (accepts variable env=test)
ifeq ($(env), test)
$(MAKE) $(transactions_file_test)
else
$(MAKE) $(transactions_file)
endif
.PHONY: setup
setup: ## Create Pipenv virtual environment and install dependencies.
pipenv --three --site-packages
pipenv install
.PHONY: setup-dev
setup-dev: ## Install development dependencies
pipenv install --dev
.PHONY: test
test: ## Run unit tests
pipenv run python -m unittest
.PHONY: lint
lint: ## Run linting
pipenv run flake8 $(_python_pkg)
pipenv run mypy $(_python_pkg) --ignore-missing-imports
pipenv run isort -c -rc $(_python_pkg)
.PHONY: reformat
reformat: ## Reformat Python code using Black
black -l 79 --skip-string-normalization $(_python_pkg)
pipenv run isort -rc $(_python_pkg)
clean:
-rm "$(transactions_file)"
clean-test:
.PHONY: clean
clean: ## Clean transactions (accepts variable env=test)
ifeq ($(env), test)
-rm "$(transactions_file_test)"
else
-rm "$(transactions_file)"
endif
backup:
.PHONY: backup
backup: ## Backup transactions (accepts variable env=test)
ifeq ($(env), test)
-cp -a "$(transactions_file_test)" "$(cache_dir)/transactions_test-$$(date +%s).json.bak"
else
-cp -a "$(transactions_file)" "$(cache_dir)/transactions-$$(date +%s).json.bak"
endif
$(transactions_file):
account-statement \
@ -63,19 +81,23 @@ $(transactions_file_test):
$(log_dir):
mkdir -p "$@"
spreadsheet: $(transactions_file) $(images_final_file) | $(log_dir)
.PHONY: spreadsheet
spreadsheet: $(images_final_file) | $(log_dir) ## Update spreadsheet (accepts variable env=test or env=test-full)
ifeq ($(env),)
$(MAKE) $(transactions_file)
date +%s >> "$(log_dir)/spreadsheet.log"
./art-account --verbose spreadsheet \
"./$(_executable)" --verbose spreadsheet \
--config "$(config_dir)/spreadsheet.json" \
--client-secrets "$(config_dir)/client_secrets.json" \
--transactions "$(transactions_file)" \
--images "$(images_final_file)" \
--reset \
--noauth_local_webserver 2>&1 | tee -a "$(log_dir)/spreadsheet.log"
spreadsheet-test: $(transactions_file_test) $(images_final_file) | $(log_dir)
endif
ifeq ($(env), test)
$(MAKE) $(transactions_file_test)
date +%s >> "$(log_dir)/spreadsheet_test.log"
./art-account --verbose spreadsheet \
"./$(_executable)" --verbose spreadsheet \
--config "$(config_dir)/spreadsheet_test.json" \
--client-secrets "$(config_dir)/client_secrets.json" \
--transactions "$(transactions_file_test)" \
@ -83,16 +105,18 @@ spreadsheet-test: $(transactions_file_test) $(images_final_file) | $(log_dir)
--reset \
--limit=10 \
--noauth_local_webserver 2>&1 | tee -a "$(log_dir)/spreadsheet_test.log"
spreadsheet-test-full: $(transactions_file) $(images_final_file) | $(log_dir)
endif
ifeq ($(env), test-full)
$(MAKE) $(transactions_file)
date +%s >> "$(log_dir)/spreadsheet_test.log"
./art-account --verbose spreadsheet \
"./$(_executable)" --verbose spreadsheet \
--config "$(config_dir)/spreadsheet_test.json" \
--client-secrets "$(config_dir)/client_secrets.json" \
--transactions "$(transactions_file)" \
--images "$(images_final_file)" \
--reset \
--noauth_local_webserver 2>&1 | tee -a "$(log_dir)/spreadsheet_test.log"
endif
$(images_file): $(config_dir)/images.csv $(config_dir)/key_flickr
use-free-images \
@ -102,37 +126,22 @@ $(images_file): $(config_dir)/images.csv $(config_dir)/key_flickr
--output "$(images_file)"
$(images_random_file): $(images_file)
./art-account --verbose shuffle-images \
"./$(_executable)" --verbose shuffle-images \
"$(images_file)" \
"$(images_random_file)"
$(images_sorted_file): $(images_random_file) $(config_dir)/images_priorities.csv
./art-account --verbose sort-images-by-priority \
"./$(_executable)" --verbose sort-images-by-priority \
"$(images_random_file)" \
"$(images_sorted_file)" \
--priorities "$(config_dir)/images_priorities.csv"
$(images_final_file): $(images_sorted_file) $(config_dir)/images_final.txt
./art-account --verbose sort-images-based-on-list \
"./$(_executable)" --verbose sort-images-based-on-list \
"$(images_sorted_file)" \
"$(images_final_file)" \
--urls "$(config_dir)/images_final.txt"
deploy-upload: $(transactions_file) | checkargs-remote
scp "$(transactions_file)" "$(REMOTE_HOST):$(REMOTE_PATH)/transactions.json"
deploy-cron: | checkargs-remote
ssh "$(REMOTE_HOST)" "cd $(REMOTE_PATH) && make spreadsheet"
checkargs-remote:
ifeq (,$(REMOTE_HOST))
@echo "You must set the REMOTE_HOST variable."
@exit 1
endif
ifeq (,$(REMOTE_PATH))
@echo "You must set the REMOTE_PATH variable."
@exit 1
endif
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-16s\033[0m %s\n", $$1, $$2}'

35
Pipfile.lock generated

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "cb7b14f623043f92a9edcfa7cbbafa6d8466bda82f3ecd6821bb9a67167e2855"
"sha256": "aa16859ae412ed33f6814dd7635705a6af20248e42fc1b2d45c3e19c4b3e8ddc"
},
"pipfile-spec": 6,
"requires": {},
@ -29,12 +29,24 @@
"index": "pypi",
"version": "==7.1.1"
},
"google-api-python-client": {
"hashes": [
"sha256:8c2f50f8057571a5f817c74820cadb754d47799c5a4ea463c1500fe8e092c1ae",
"sha256:c0f4bcf398c937a43f382eecb384ba9b3a97ef9c24b156420b1b396fcaadd0af"
],
"version": "==1.6.2"
},
"google-sheets-wrapper": {
"editable": true,
"git": "https://lab.saloun.cz/jakub/google-sheets-wrapper",
"ref": "196dcdb3d08fe671e654d0076394cb59f534bb39"
},
"httplib2": {
"hashes": [
"sha256:79751cc040229ec896aa01dced54de0cd0bf042f928e84d5761294422dde4454",
"sha256:de96d0a49f46d0ee7e0aae80141d37b8fcd6a68fb05d02e0b82c128592dd8261"
"sha256:396ef66a170f76d5b2103f6c474da8aa3ff0c3c34c546323885e9de7e9eb08cd",
"sha256:eb7a6b137ae31e61c5f429083c5bebb71fe5fd1958e7f3d5c39b21b11cd4b290"
],
"version": "==0.17.0"
"version": "==0.17.2"
},
"listio": {
"hashes": [
@ -78,6 +90,13 @@
"sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
],
"version": "==1.14.0"
},
"uritemplate": {
"hashes": [
"sha256:07620c3f3f8eed1f12600845892b0e036a2420acf513c53f7de0abd911a5894f",
"sha256:5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae"
],
"version": "==3.0.1"
}
},
"develop": {
@ -180,11 +199,11 @@
},
"typing-extensions": {
"hashes": [
"sha256:091ecc894d5e908ac75209f10d5b4f118fbdb2eb1ede6a63544054bb1edb41f2",
"sha256:910f4656f54de5993ad9304959ce9bb903f90aadc7c67a0bef07e678014e892d",
"sha256:cf8b63fedea4d89bab840ecbb93e75578af28f76f66c35889bd7065f5af88575"
"sha256:6e95524d8a547a91e08f404ae485bbb71962de46967e1b71a0cb89af24e761c5",
"sha256:79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae",
"sha256:f8d2bd89d25bc39dabe7d23df520442fa1d8969b82544370e03d88b5a591c392"
],
"version": "==3.7.4.1"
"version": "==3.7.4.2"
}
}
}

@ -32,7 +32,7 @@ make setup
make backup clean transactions
```
2. Upload:
2. Update spreadsheet:
```
make spreadsheet
@ -43,28 +43,11 @@ make setup
1. Test retrieve transactions:
```
make clean-test transactions-test
make clean transactions env=test
```
2. Test upload:
2. Test update spreadsheet:
```
make spreadsheet-test-full
```
## Deploy
There are two options:
A. Run locally:
```
make spreadsheet
```
B. Run on server:
```
make deploy-upload REMOTE_HOST=amazon-aws REMOTE_PATH=/home/ec2-user/.cache/art-account/
make deploy-cron REMOTE_HOST=amazon-aws REMOTE_PATH=/home/ec2-user/art-account/
make spreadsheet env=test-full
```

Loading…
Cancel
Save