forked from mirrors/thatmattlove-hyperglass
add pre-commit; add line-count functions & badge
This commit is contained in:
parent
cb1e1794e1
commit
af42e3bcd0
8 changed files with 185 additions and 2 deletions
11
.pre-commit-config.yaml
Normal file
11
.pre-commit-config.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
repos:
|
||||
# - repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
# rev: v2.3.0
|
||||
# hooks:
|
||||
# - id: flake8
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: line_count
|
||||
name: Line Count
|
||||
entry: hooks.sh
|
||||
language: script
|
||||
1
Pipfile
1
Pipfile
|
|
@ -26,6 +26,7 @@ flake8-print = "*"
|
|||
flake8-return = "*"
|
||||
pep8-naming = "*"
|
||||
flake8-docstrings = "*"
|
||||
pre-commit = "*"
|
||||
|
||||
[packages]
|
||||
aredis = "==1.1.5"
|
||||
|
|
|
|||
44
Pipfile.lock
generated
44
Pipfile.lock
generated
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "ec1e8f837bd15e6e5867287b1cb9d37cf9795490ec3717899c706e918b6b33d9"
|
||||
"sha256": "a99eac0076ede424ed44b8be6eb1694cc358a78593fe373aa2372084c8699d92"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
|
|
@ -609,6 +609,13 @@
|
|||
],
|
||||
"version": "==1.4.3"
|
||||
},
|
||||
"aspy.yaml": {
|
||||
"hashes": [
|
||||
"sha256:463372c043f70160a9ec950c3f1e4c3a82db5fca01d334b6bc89c7164d744bdc",
|
||||
"sha256:e7c742382eff2caed61f87a39d13f99109088e5e93f04d76eb8d4b28aa143f45"
|
||||
],
|
||||
"version": "==1.3.0"
|
||||
},
|
||||
"attrs": {
|
||||
"hashes": [
|
||||
"sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
|
||||
|
|
@ -632,6 +639,13 @@
|
|||
"index": "pypi",
|
||||
"version": "==19.3b0"
|
||||
},
|
||||
"cfgv": {
|
||||
"hashes": [
|
||||
"sha256:edb387943b665bf9c434f717bf630fa78aecd53d5900d2e05da6ad6048553144",
|
||||
"sha256:fbd93c9ab0a523bf7daec408f3be2ed99a980e20b2d19b50fc184ca6b820d289"
|
||||
],
|
||||
"version": "==2.0.1"
|
||||
},
|
||||
"click": {
|
||||
"hashes": [
|
||||
"sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
|
||||
|
|
@ -800,6 +814,13 @@
|
|||
],
|
||||
"version": "==3.0.5"
|
||||
},
|
||||
"identify": {
|
||||
"hashes": [
|
||||
"sha256:6f44e637caa40d1b4cb37f6ed3b262ede74901d28b1cc5b1fc07360871edd65d",
|
||||
"sha256:72e9c4ed3bc713c7045b762b0d2e2115c572b85abfc1f4604f5a4fd4c6642b71"
|
||||
],
|
||||
"version": "==1.4.9"
|
||||
},
|
||||
"importlib-metadata": {
|
||||
"hashes": [
|
||||
"sha256:073a852570f92da5f744a3472af1b61e28e9f78ccf0c9117658dc32b15de7b45",
|
||||
|
|
@ -833,6 +854,12 @@
|
|||
],
|
||||
"version": "==8.0.2"
|
||||
},
|
||||
"nodeenv": {
|
||||
"hashes": [
|
||||
"sha256:ad8259494cf1c9034539f6cced78a1da4840a4b157e23640bc4a0c0546b0cb7a"
|
||||
],
|
||||
"version": "==1.3.3"
|
||||
},
|
||||
"pbr": {
|
||||
"hashes": [
|
||||
"sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b",
|
||||
|
|
@ -848,6 +875,14 @@
|
|||
"index": "pypi",
|
||||
"version": "==0.9.1"
|
||||
},
|
||||
"pre-commit": {
|
||||
"hashes": [
|
||||
"sha256:9f152687127ec90642a2cc3e4d9e1e6240c4eb153615cb02aa1ad41d331cbb6e",
|
||||
"sha256:c2e4810d2d3102d354947907514a78c5d30424d299dc0fe48f5aa049826e9b50"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.20.0"
|
||||
},
|
||||
"pycodestyle": {
|
||||
"hashes": [
|
||||
"sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56",
|
||||
|
|
@ -928,6 +963,13 @@
|
|||
],
|
||||
"version": "==0.10.0"
|
||||
},
|
||||
"virtualenv": {
|
||||
"hashes": [
|
||||
"sha256:0d62c70883c0342d59c11d0ddac0d954d0431321a41ab20851facf2b222598f3",
|
||||
"sha256:55059a7a676e4e19498f1aad09b8313a38fcc0cdbe4fdddc0e9b06946d21b4bb"
|
||||
],
|
||||
"version": "==16.7.9"
|
||||
},
|
||||
"zipp": {
|
||||
"hashes": [
|
||||
"sha256:3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e",
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ This branch is *very much* under construction. There's a 99% chance that hypergl
|
|||
[**Documentation**](https://hyperglass.readthedocs.io) | [**Screenshots**](https://hyperglass.readthedocs.io/en/latest/screenshots/) | [**Live Demo**](https://hyperglass.allroads.io/)
|
||||
|
||||
[](https://travis-ci.org/checktheroads/hyperglass)
|
||||

|
||||

|
||||
[](https://github.com/ambv/black)
|
||||
|
||||
</div>
|
||||
|
|
|
|||
34
develop.py
Normal file
34
develop.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
"""Devloper functions."""
|
||||
|
||||
import os
|
||||
|
||||
|
||||
def count_lines(directory):
|
||||
"""Count lines of code.
|
||||
|
||||
Arguments:
|
||||
directory {str} -- Path to count
|
||||
|
||||
Returns:
|
||||
{int} -- Line count
|
||||
"""
|
||||
lines = 0
|
||||
excluded = ("\n",)
|
||||
for thing in os.listdir(directory):
|
||||
thing = os.path.join(directory, thing)
|
||||
if os.path.isfile(thing):
|
||||
if thing.endswith(".py"):
|
||||
with open(thing, "r") as f:
|
||||
readlines = [
|
||||
line
|
||||
for line in f.readlines()
|
||||
if line not in excluded and not line.startswith("#")
|
||||
]
|
||||
lines += len(readlines)
|
||||
|
||||
for thing in os.listdir(directory):
|
||||
thing = os.path.join(directory, thing)
|
||||
if os.path.isdir(thing):
|
||||
lines += count_lines(thing)
|
||||
|
||||
return lines
|
||||
10
hooks.sh
Executable file
10
hooks.sh
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
LC=$(./manage.py line-count-badge)
|
||||
|
||||
echo $LC
|
||||
|
||||
if [[ ! $? == 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
23
line_count.svg
Normal file
23
line_count.svg
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="20">
|
||||
<linearGradient id="b" x2="0" y2="100%">
|
||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<mask id="anybadge_1">
|
||||
<rect width="120" height="20" rx="3" fill="#fff"/>
|
||||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h90v20H0z"/>
|
||||
<path fill="#007ec6" d="M90 0h30v20H90z"/>
|
||||
<path fill="url(#b)" d="M0 0h120v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="46.0" y="15" fill="#010101" fill-opacity=".3">Lines of Code</text>
|
||||
<text x="45.0" y="14">Lines of Code</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="106.0" y="15" fill="#010101" fill-opacity=".3">3051</text>
|
||||
<text x="105.0" y="14">3051</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
62
manage.py
62
manage.py
|
|
@ -842,5 +842,67 @@ def generate_secret(length):
|
|||
)
|
||||
|
||||
|
||||
@hg.command("line-count", help="Get line count for source code.")
|
||||
@click.option(
|
||||
"-d",
|
||||
"--directory",
|
||||
type=str,
|
||||
default="hyperglass",
|
||||
help="Source code directory",
|
||||
)
|
||||
def line_count(directory):
|
||||
"""Get lines of code.
|
||||
|
||||
Arguments:
|
||||
directory {str} -- Source code directory
|
||||
"""
|
||||
from develop import count_lines
|
||||
|
||||
count = count_lines(directory)
|
||||
click.echo(
|
||||
NL
|
||||
+ click.style("Line Count: ", fg="blue")
|
||||
+ click.style(str(count), fg="green", bold=True)
|
||||
+ NL
|
||||
)
|
||||
|
||||
|
||||
@hg.command("line-count-badge", help="Generates line count badge")
|
||||
@click.option(
|
||||
"-d",
|
||||
"--directory",
|
||||
type=str,
|
||||
default="hyperglass",
|
||||
help="Source code directory",
|
||||
)
|
||||
def line_count_badge(directory):
|
||||
"""Generate shields.io-like badge for lines of code.
|
||||
|
||||
Arguments:
|
||||
directory {str} -- Source code directory
|
||||
|
||||
Returns:
|
||||
{int} -- Exit status
|
||||
"""
|
||||
import anybadge
|
||||
from develop import count_lines
|
||||
|
||||
this_dir = Path.cwd()
|
||||
file_name = "line_count.svg"
|
||||
badge_file = this_dir / file_name
|
||||
|
||||
if badge_file.exists():
|
||||
badge_file.unlink()
|
||||
|
||||
count = count_lines(directory)
|
||||
badge = anybadge.Badge(label="Lines of Code", value=count, default_color="#007ec6")
|
||||
badge.write_badge(file_name)
|
||||
click.echo(
|
||||
click.style("Created line count badge. Lines: ", fg="white")
|
||||
+ click.style(str(count), fg="green", bold=True)
|
||||
)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
hg()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue