mirror of
https://github.com/xonsh/xonsh.git
synced 2025-03-04 16:34:47 +01:00
47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
"""Configuration file for sniffer."""
|
|
|
|
import time
|
|
import subprocess
|
|
|
|
from sniffer.api import select_runnable, file_validator, runnable
|
|
|
|
try:
|
|
from pync import Notifier
|
|
except ImportError:
|
|
notify = None
|
|
else:
|
|
notify = Notifier.notify
|
|
|
|
watch_paths = ['.']
|
|
|
|
|
|
@select_runnable('python')
|
|
@file_validator
|
|
def py_files(filename):
|
|
return "TemplateDemo" not in filename
|
|
|
|
|
|
@runnable
|
|
def python(*_):
|
|
group = int(time.time()) # unique per run
|
|
|
|
for count, (command, title) in enumerate((
|
|
(('dmypy', 'run', "--", "xonsh"), "type-check"),
|
|
(('flake8', '.'), "Lint"),
|
|
(('xonsh', 'run-tests.xsh', 'test'), "test"),
|
|
), start=1):
|
|
|
|
print(f"\n$ {' '.join(command)}")
|
|
failure = subprocess.call(command)
|
|
|
|
if failure:
|
|
if notify and title:
|
|
mark = "❌" * count
|
|
notify(mark + " [FAIL] " + mark, title=title, group=group)
|
|
return False
|
|
else:
|
|
if notify and title:
|
|
mark = "✅" * count
|
|
notify(mark + " [PASS] " + mark, title=title, group=group)
|
|
|
|
return True
|