From 3f6e82f632027904e2912664cbb1c60cdc79a509 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 26 Jun 2015 01:00:19 -0400 Subject: * Big ole fixes. * No more inline webserver, get your own, or run cbc/server.py manually. * Will refuse to rebuild packages if build number matches the installed version of the same package * Introduced cbc.utils, because cbcbuild was getting ugly. --- cbc/__init__.py | 3 ++- cbc/exceptions.py | 3 +++ cbc/meta.py | 2 +- cbc/server.py | 31 +++++++++++++++++++++++-------- 4 files changed, 29 insertions(+), 10 deletions(-) (limited to 'cbc') diff --git a/cbc/__init__.py b/cbc/__init__.py index 4dbca99..150b0f4 100644 --- a/cbc/__init__.py +++ b/cbc/__init__.py @@ -1,3 +1,4 @@ from . import environment from . import meta -from . import server \ No newline at end of file +from . import server +from . import utils \ No newline at end of file diff --git a/cbc/exceptions.py b/cbc/exceptions.py index 7acf55f..dc6128f 100644 --- a/cbc/exceptions.py +++ b/cbc/exceptions.py @@ -2,4 +2,7 @@ class IncompleteEnv(Exception): pass class MetaDataError(Exception): + pass + +class CondaBuildError(Exception): pass \ No newline at end of file diff --git a/cbc/meta.py b/cbc/meta.py index f7065c8..ed1baaa 100644 --- a/cbc/meta.py +++ b/cbc/meta.py @@ -5,7 +5,7 @@ And yeah, conda supports Jinja2, but ugh... No. import os import conda_build.metadata import yaml -from configparser import SafeConfigParser, ExtendedInterpolation, ConfigParser +from configparser import SafeConfigParser, ExtendedInterpolation from collections import OrderedDict from .environment import Environment from .exceptions import MetaDataError diff --git a/cbc/server.py b/cbc/server.py index 37355ed..1598302 100644 --- a/cbc/server.py +++ b/cbc/server.py @@ -1,3 +1,4 @@ +import argparse import os import http.server import socketserver @@ -24,17 +25,31 @@ class FileServer(object): if run: self.run() - def run(self): + def run(self, forever=False): os.chdir(self.root) socketserver.TCPServer.allow_reuse_address = True self.httpd = Server(('localhost', self.port), self.handler, True) - #self.httpd.allow_reuse_address = True - #self.httpd.server_bind() - #self.httpd.server_activate() print('{0} active on port {1} ({2})'.format(self.__class__.__name__, self.port, self.root)) - - th = Thread(target=self.httpd.handle_request, args=(), daemon=True) - th.start() + if not forever: + self.httpd.handle_request() + else: + self.httpd.serve_forever() + self.close() def close(self): - self.httpd.server_close() \ No newline at end of file + self.httpd.server_close() + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('-r', '--root', default=os.path.abspath(os.curdir), help='Path to files') + parser.add_argument('-p', '--port', type=int, default=8888, help='TCP port') + parser.add_argument('-s', '--single', action='store_false') + args = parser.parse_args() + + fileserver = FileServer(args.port, args.root) + fileserver.run(forever=args.single) + + + + + \ No newline at end of file -- cgit