-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile
155 lines (127 loc) · 4.1 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#
# k2hr3client - Python client for K2HR3 REST API
#
# Copyright 2020 Yahoo Japan Corporation
# Copyright 2024 LY Corporation
#
# K2HR3 is K2hdkc based Resource and Roles and policy Rules, gathers
# common management information for the cloud.
# K2HR3 can dynamically manage information as "who", "what", "operate".
# These are stored as roles, resources, policies in K2hdkc, and the
# client system can dynamically read and modify these information.
#
# For the full copyright and license information, please view
# the license file that was distributed with this source code.
#
# AUTHOR: Hirotaka Wakabayashi
# CREATE: Mon Sep 14 2020
# REVISION:
#
.PHONY: clean clean-test clean-pyc clean-build docs help
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
try:
from urllib import pathname2url
except:
from urllib.request import pathname2url
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
define PRINT_HELP_PYSCRIPT
import re, sys
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT
BROWSER := python3 -c "$$BROWSER_PYSCRIPT"
help:
@python3 -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
init:
python3 -m pip install pipenv
pipenv install --skip-lock
pipenv graph
pipenv install --dev
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
clean-build: ## remove build artifacts
rm -fr build/
rm -fr dist/
rm -fr .eggs/
find . -name '*.egg-info' -exec rm -fr {} +
find . -name '*.egg' -exec rm -f {} +
rm -f VERSION
clean-pyc: ## remove Python file artifacts
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-test: ## remove test and coverage artifacts
rm -fr ..mypy_cache/
rm -f .coverage
rm -fr htmlcov/
rm -fr .pytest_cache
lint: ## check style with flake8
flake8 --version
flake8 src/k2hr3client
mypy src/k2hr3client
pylint src/k2hr3client
python3 setup.py checkdocs
test: ## run tests quickly with the default Python
python3 -m unittest discover src
build: ## run build
$ python3 -m pip install --upgrade build
$ python3 -m build
version:
@rm -f VERSION
@perl -ne 'print if /^[0-9]+.[0-9]+.[0-9]+ \([0-9]{4}-[0-9]{2}-[0-9]{2}\)$$/' HISTORY.rst \
| head -n 1 | perl -lne 'print $$1 if /^([0-9]+.[0-9]+.[0-9]+) \(.*\)/' > VERSION
SOURCE_VERSION = $(shell cd src; python3 -c 'import k2hr3client; print(k2hr3client.get_version())')
HISTORY_VERSION = $(shell cat VERSION)
test-version: version ## builds source and wheel package
@echo 'source ' ${SOURCE_VERSION}
@echo 'history ' ${HISTORY_VERSION}
@if test "${SOURCE_VERSION}" = "${HISTORY_VERSION}" ; then \
python3 -m unittest discover src; \
fi
test-all: lint test-version
coverage: ## check code coverage quickly with the default Python
coverage run --source src/k2hr3client -m unittest
coverage report -m
coverage xml
coverage html
# $(BROWSER) htmlcov/index.html
docs: ## generate Sphinx HTML documentation, including API docs
rm -f docs/k2hr3client.rst
rm -f docs/modules.rst
sphinx-apidoc -o docs/ src/k2hr3client
$(MAKE) -C docs clean
$(MAKE) -C docs html
# $(BROWSER) docs/_build/html/index.html
servedocs: docs ## compile the docs watching for changes
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .
release: dist ## package and upload a release
twine check dist/*
twine upload dist/*
test-release:
twine check dist/*
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
dist: clean version ## builds source and wheel package
@echo 'source ' ${SOURCE_VERSION}
@echo 'history ' ${HISTORY_VERSION}
@if test "${SOURCE_VERSION}" = "${HISTORY_VERSION}" ; then \
python3 -m build ; \
ls -l dist ; \
fi
install: clean ## install the package to the active Python's site-packages
python3 -m pip install .
#
# Local variables:
# tab-width: 4
# c-basic-offset: 4
# End:
# vim600: expandtab sw=4 ts=4 fdm=marker
# vim<600: expandtab sw=4 ts=4
#