Skip to content

Instantly share code, notes, and snippets.

@noinarisak
Last active April 26, 2020 23:09
Show Gist options
  • Save noinarisak/1d7c52f2d039aa0b5549436b12f2d8ce to your computer and use it in GitHub Desktop.
Save noinarisak/1d7c52f2d039aa0b5549436b12f2d8ce to your computer and use it in GitHub Desktop.
Makefile Python Boilerplate

Makefile Python Boilerplate

Contains boilerplate Makefile for Python development work.

Quick start

$ make

# Output...
build            Build
clean            Clean up
run              Run application
test             Run test

Expected Project sturcture

.
├── Makefile
├── README.md
├── ivr_phone_tree_python
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-38.pyc
│   │   ├── config.cpython-38.pyc
│   │   ├── view_helpers.cpython-38.pyc
│   │   └── views.cpython-38.pyc
│   ├── config.py
│   ├── static
│   │   └── content
│   │       └── site.css
│   ├── templates
│   │   ├── index.html
│   │   └── layout.html
│   ├── util
│   │   └── okta.py
│   ├── view_helpers.py
│   └── views.py
├── manage.py
├── requirements
│   ├── common.txt
│   └── dev.txt
├── test
│   ├── __init__.py
│   ├── base.py
│   └── views_tests.py
# Author: [email protected]
# Date:
# Desc: Base makefile template for Python development
# v1: Init
.ONESHELL:
.SHELL := /usr/bin/bash
.DEFAULT_GOAL := help
ROOT_PATH := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))/../..)
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-16s\033[0m %s\n", $$1, $$2}'
.PHONY: clean
clean: ## Clean up
@echo "+ $@"
@find . -type f -name '*.pyc' -exec rm -f {} +
@find . -type d -name '*__pycache__*' -exec rm -rf {} +
@find . -type d -name 'venv' -exec rm -rf {} +
.PHONY: build
build: clean venv ## Build
@echo "+ $@"
.PHONY: run
run: venv ## Run
@echo "+ $@"
.PHONY: test
test: venv ## Run test
@echo "+ $@"
@source venv/bin/activate; nosetests project/test
venv: venv/bin/activate
venv/bin/activate: requirements.txt
@echo "+ $@"
@test -d venv || python -m venv venv
@source venv/bin/activate; pip install -Ur requirements.txt
@touch venv/bin/activate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment