fancy --version that includes git branch and timestamp of last commit if available

This commit is contained in:
Noah Levitt 2014-05-29 20:43:00 -07:00
parent 0bcc583b40
commit 3127e02cbb
7 changed files with 50 additions and 10 deletions

View File

@ -5,24 +5,26 @@ import argparse
import os
import sys
import logging
from umbra.browser import Browser
import umbra
arg_parser = argparse.ArgumentParser(prog=os.path.basename(sys.argv[0]),
arg_parser = argparse.ArgumentParser(prog=os.path.basename(__file__),
description='browse-url - open urls in chrome/chromium and run behaviors',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
arg_parser.add_argument('urls', metavar='URL', nargs='+', help='URL(s) to browse')
arg_parser.add_argument('-w', '--browser-wait', dest='browser_wait', default='60',
help='seconds to wait for browser initialization')
arg_parser.add_argument('-e', '--executable', dest='chrome_exe', default='chromium-browser',
help='executable to use to invoke chrome')
arg_parser.add_argument('-v', '--verbose', dest='log_level',
action="store_const", default=logging.INFO, const=logging.DEBUG)
arg_parser.add_argument('urls', metavar='URL', nargs='+', help='URL(s) to browse')
arg_parser.add_argument('--version', action='version',
version="umbra {} - {}".format(umbra.version, os.path.basename(__file__)))
args = arg_parser.parse_args(args=sys.argv[1:])
logging.basicConfig(stream=sys.stdout, level=args.log_level,
format='%(asctime)s %(process)d %(levelname)s %(threadName)s %(name)s.%(funcName)s(%(filename)s:%(lineno)d) %(message)s')
browser = Browser(chrome_exe=args.chrome_exe, chrome_wait=args.browser_wait)
browser = umbra.Browser(chrome_exe=args.chrome_exe, chrome_wait=args.browser_wait)
for url in args.urls:
browser.browse_page(url)

View File

@ -5,9 +5,10 @@ import sys
import argparse
import logging
import socket
import umbra
from kombu import Connection, Exchange, Queue
arg_parser = argparse.ArgumentParser(prog=os.path.basename(sys.argv[0]),
arg_parser = argparse.ArgumentParser(prog=os.path.basename(__file__),
description='drain-queue - consume messages from AMQP queue',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
arg_parser.add_argument('-u', '--url', dest='amqp_url', default='amqp://guest:guest@localhost:5672/%2f',
@ -22,6 +23,8 @@ arg_parser.add_argument('-r', '--run-forever', dest='run_forever', action="store
default=False, const=True, help="run forever, waiting for new messages to appear on the queue (default: exit when all messages in the queue have been consumed)")
arg_parser.add_argument('-v', '--verbose', dest='log_level',
action="store_const", default=logging.INFO, const=logging.DEBUG)
arg_parser.add_argument('--version', action='version',
version="umbra {} - {}".format(umbra.version, os.path.basename(__file__)))
args = arg_parser.parse_args(args=sys.argv[1:])
logging.basicConfig(stream=sys.stderr, level=args.log_level,

View File

@ -5,9 +5,10 @@ import os
import sys
import argparse
import logging
import umbra
from kombu import Connection, Exchange, Queue
arg_parser = argparse.ArgumentParser(prog=os.path.basename(sys.argv[0]),
arg_parser = argparse.ArgumentParser(prog=os.path.basename(__file__),
description='queue-url - send url to umbra via AMQP',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
arg_parser.add_argument('-u', '--url', dest='amqp_url', default='amqp://guest:guest@localhost:5672/%2f',
@ -20,6 +21,8 @@ arg_parser.add_argument('-i', '--client-id', dest='client_id', default='load_url
help='client id - included in the json payload with each url; umbra uses this value as the routing key to send requests back to')
arg_parser.add_argument('-v', '--verbose', dest='log_level',
action="store_const", default=logging.INFO, const=logging.DEBUG)
arg_parser.add_argument('--version', action='version',
version="umbra {} - {}".format(umbra.version, os.path.basename(__file__)))
arg_parser.add_argument('urls', metavar='URL', nargs='+', help='URLs to send to umbra')
args = arg_parser.parse_args(args=sys.argv[1:])

View File

@ -35,6 +35,8 @@ if __name__=="__main__":
help='Max number of chrome instances simultaneously browsing pages')
arg_parser.add_argument('-v', '--verbose', dest='log_level',
action="store_const", default=logging.INFO, const=logging.DEBUG)
arg_parser.add_argument('--version', action='version',
version="umbra {}".format(umbra.version, os.path.basename(__file__)))
args = arg_parser.parse_args(args=sys.argv[1:])
logging.basicConfig(stream=sys.stdout, level=args.log_level,

View File

@ -3,8 +3,27 @@
import setuptools
import glob
VERSION_BYTES = b'0.2'
def full_version_bytes():
import subprocess, time
try:
git_branch = subprocess.check_output(['git', 'symbolic-ref', '--short', 'HEAD'])
t_bytes = subprocess.check_output(['git', 'log', '-1', '--pretty=format:%ct'])
t = int(t_bytes.strip().decode('utf-8'))
tm = time.gmtime(t)
timestamp_utc = time.strftime("%Y%m%d%H%M%S", time.gmtime(t))
return VERSION_BYTES + b'-' + git_branch.strip() + b'-' + timestamp_utc.encode('utf-8')
except subprocess.CalledProcessError:
return VERSION_BYTES
version_bytes = full_version_bytes()
with open('umbra/version.txt', 'wb') as out:
out.write(version_bytes)
out.write(b'\n');
setuptools.setup(name='umbra',
version='0.1',
version=version_bytes.decode('utf-8'),
description='Browser automation via chrome debug protocol',
url='https://github.com/internetarchive/umbra',
author='Eldon Stegall',
@ -12,9 +31,9 @@ setuptools.setup(name='umbra',
long_description=open('README.md').read(),
license='Apache License 2.0',
packages=['umbra'],
package_data={'umbra':['behaviors.d/*.js']},
package_data={'umbra':['behaviors.d/*.js', 'version.txt']},
install_requires=['kombu', 'websocket-client-py3==0.13.1','argparse'],
scripts=glob.glob("bin/*"),
scripts=glob.glob('bin/*'),
zip_safe=False,
classifiers=[
'Development Status :: 3 - Alpha Development Status',

View File

@ -1,3 +1,14 @@
from umbra.browser import Browser
from umbra.controller import AmqpBrowserController
Umbra = AmqpBrowserController
def _read_version():
import os
version_txt = os.path.sep.join(__file__.split(os.path.sep)[:-1] + ['version.txt'])
with open(version_txt, 'rb') as fin:
version_bytes = fin.read()
return version_bytes.strip().decode('utf-8')
version = _read_version()
# vim: set sw=4 et:

View File

@ -9,7 +9,7 @@ import time
import sys
class Behavior:
logger = logging.getLogger('umbra.behaviors.Behavior')
logger = logging.getLogger(__module__ + "." + __qualname__)
_behaviors = None
_default_behavior = None