mirror of
https://github.com/cmehay/pyentrypoint
synced 2024-10-30 15:21:11 +00:00
Merge pull request #1 from cmehay/color
Remove Twiggy, using Colorlog instead
This commit is contained in:
commit
4a96418aa4
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FROM python:2
|
FROM python:2
|
||||||
|
|
||||||
RUN pip install pytest twiggy six pyyaml jinja2
|
RUN pip install pytest six pyyaml jinja2 colorlog
|
||||||
|
|
||||||
ENV PYTHONPATH /opt/
|
ENV PYTHONPATH /opt/
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FROM python:3
|
FROM python:3
|
||||||
|
|
||||||
RUN pip3 install pytest twiggy six pyyaml jinja2
|
RUN pip3 install pytest six pyyaml jinja2 colorlog
|
||||||
|
|
||||||
ENV PYTHONPATH /opt/
|
ENV PYTHONPATH /opt/
|
||||||
|
|
||||||
|
3
Makefile
3
Makefile
@ -5,3 +5,6 @@ build:
|
|||||||
|
|
||||||
test: build
|
test: build
|
||||||
@docker-compose up --force-recreate testpython2 testpython3
|
@docker-compose up --force-recreate testpython2 testpython3
|
||||||
|
|
||||||
|
publish:
|
||||||
|
@python setup.py register && python setup.py sdist upload
|
||||||
|
@ -13,13 +13,11 @@ from sys import stdout
|
|||||||
|
|
||||||
from jinja2 import Environment
|
from jinja2 import Environment
|
||||||
from jinja2 import FileSystemLoader
|
from jinja2 import FileSystemLoader
|
||||||
from twiggy import levels
|
|
||||||
from twiggy import log
|
|
||||||
from twiggy import quickSetup
|
|
||||||
|
|
||||||
from .config import Config
|
from .config import Config
|
||||||
from .constants import ENTRYPOINT_FILE
|
from .constants import ENTRYPOINT_FILE
|
||||||
from .docker_links import DockerLinks
|
from .docker_links import DockerLinks
|
||||||
|
from .logs import Logs
|
||||||
|
|
||||||
__all__ = ['Entrypoint', 'main']
|
__all__ = ['Entrypoint', 'main']
|
||||||
|
|
||||||
@ -29,8 +27,7 @@ class Entrypoint(object):
|
|||||||
"""Entrypoint class."""
|
"""Entrypoint class."""
|
||||||
|
|
||||||
def _set_logguer(self):
|
def _set_logguer(self):
|
||||||
quickSetup(min_level=levels.INFO)
|
self.log = Logs().log
|
||||||
self.log = log.name('entrypoint')
|
|
||||||
|
|
||||||
def __init__(self, conf=ENTRYPOINT_FILE, args=[]):
|
def __init__(self, conf=ENTRYPOINT_FILE, args=[]):
|
||||||
self._set_logguer()
|
self._set_logguer()
|
||||||
@ -41,7 +38,7 @@ class Entrypoint(object):
|
|||||||
except Exception as err:
|
except Exception as err:
|
||||||
self.log.error(err)
|
self.log.error(err)
|
||||||
if self.config.debug:
|
if self.config.debug:
|
||||||
quickSetup(min_level=levels.DEBUG)
|
Logs.set_debug()
|
||||||
self.args = args
|
self.args = args
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
81
pyentrypoint/logs.py
Normal file
81
pyentrypoint/logs.py
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
"""
|
||||||
|
Get log object
|
||||||
|
"""
|
||||||
|
from __future__ import absolute_import
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from colorlog import ColoredFormatter
|
||||||
|
|
||||||
|
|
||||||
|
class Switch(object):
|
||||||
|
"""Just a mutable boolean to fool init Logs method"""
|
||||||
|
|
||||||
|
def __init__(self, b=True):
|
||||||
|
self._v = b
|
||||||
|
|
||||||
|
def __eq__(self, val):
|
||||||
|
return self._v == val
|
||||||
|
|
||||||
|
def __bool__(self):
|
||||||
|
return self._v
|
||||||
|
|
||||||
|
def __nonzero__(self):
|
||||||
|
"Python 2 bool"
|
||||||
|
return self._v
|
||||||
|
|
||||||
|
def true(self):
|
||||||
|
self._v = True
|
||||||
|
|
||||||
|
def false(self):
|
||||||
|
self._v = False
|
||||||
|
|
||||||
|
|
||||||
|
class Logs(object):
|
||||||
|
"""Get a logguer"""
|
||||||
|
|
||||||
|
lvl = logging.INFO
|
||||||
|
|
||||||
|
# As log attribute is muttable, we can use method to change
|
||||||
|
# log level accross instances
|
||||||
|
log = logging.getLogger('Entrypoint')
|
||||||
|
|
||||||
|
# Just a trick to avoid multiple formatter in logging instance
|
||||||
|
_switch = Switch(False)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
if bool(self._switch):
|
||||||
|
# Log is static, don't override it
|
||||||
|
return None
|
||||||
|
formatter = ColoredFormatter(
|
||||||
|
"%(name)s %(log_color)s%(levelname)-8s%(reset)s %(message)s",
|
||||||
|
datefmt=None,
|
||||||
|
reset=True,
|
||||||
|
log_colors={
|
||||||
|
'DEBUG': 'cyan',
|
||||||
|
'INFO': 'green',
|
||||||
|
'WARNING': 'yellow',
|
||||||
|
'ERROR': 'red',
|
||||||
|
'CRITICAL': 'red',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
handler = logging.StreamHandler()
|
||||||
|
handler.setFormatter(formatter)
|
||||||
|
self.log.addHandler(handler)
|
||||||
|
self.log.setLevel(self.lvl)
|
||||||
|
|
||||||
|
self._switch.true()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_debug(cls):
|
||||||
|
"""Set log level to debug"""
|
||||||
|
cls.lvl = logging.DEBUG
|
||||||
|
cls.log.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_info(cls):
|
||||||
|
"""Set log level to info"""
|
||||||
|
cls.lvl = logging.INFO
|
||||||
|
cls.log.setLevel(logging.INFO)
|
@ -5,6 +5,7 @@ aspy.yaml==0.2.1
|
|||||||
blessings==1.6
|
blessings==1.6
|
||||||
bpython==0.14.2
|
bpython==0.14.2
|
||||||
cached-property==1.3.0
|
cached-property==1.3.0
|
||||||
|
colorlog==2.6.1
|
||||||
curtsies==0.1.23
|
curtsies==0.1.23
|
||||||
docker-compose==1.5.2
|
docker-compose==1.5.2
|
||||||
docker-py==1.6.0
|
docker-py==1.6.0
|
||||||
|
4
setup.py
4
setup.py
@ -9,7 +9,7 @@ setup(
|
|||||||
|
|
||||||
name='pyentrypoint',
|
name='pyentrypoint',
|
||||||
|
|
||||||
version='0.1.18',
|
version='0.2.1',
|
||||||
|
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ setup(
|
|||||||
|
|
||||||
install_requires=['Jinja2>=2.8',
|
install_requires=['Jinja2>=2.8',
|
||||||
'PyYAML>=3.11',
|
'PyYAML>=3.11',
|
||||||
'Twiggy>=0.4.7',
|
'colorlog>=2.6.1',
|
||||||
'argparse>=1.4.0',
|
'argparse>=1.4.0',
|
||||||
'six>=1.10.0'],
|
'six>=1.10.0'],
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user