Add argument parsing

This commit is contained in:
Monty Taylor 2014-07-23 21:46:31 -04:00
parent efbb9d122c
commit f2e1ab11af
5 changed files with 37 additions and 17 deletions

View File

@ -13,11 +13,37 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import argparse
import dox.locations
import dox.payloads
import dox.runner
def main():
location = dox.locations.Location()
payload = dox.payloads.Payload()
return location.run(payload)
parser = argparse.ArgumentParser(description='Run tests in docker.')
parser.add_argument(dest='extra_args', nargs='*',
help='args to append to command, or command to run'
' if -c is given')
parser.add_argument('-i', '--image', dest='image',
help='Base image to use')
parser.add_argument('-c', '--command', dest='command', default=False,
action='store_true',
help='Treat arguments as the entire command to run')
parser.add_argument('-r', '--rebuild', dest='rebuild', default=False,
action='store_true',
help='Rebuild the test image')
parser.add_argument('--rebuild-all', dest='rebuild_all', default=False,
action='store_true', help='Rebuild all images')
args = parser.parse_args()
image = args.image
if args.image is None:
image = dox.locations.get_image()
if args.command:
command = " ".join(args.extra_args)
else:
command = dox.payloads.Payload()
if args.extra_args:
command.append(args.extra_args)
return dox.runner.Runner(args).run(image, command)

View File

@ -15,7 +15,6 @@
__all__ = [
'get_image',
'Location',
]
import dox.config.dockerfile
@ -41,13 +40,3 @@ def get_image():
elif tox_ini.exists():
image = tox_ini.get_image(image)
return image
class Location(object):
def __init__(self):
self.image = get_image()
def run(self, payload):
print("Going to run {0} in {1}".format(
payload, self.image))

View File

@ -41,8 +41,12 @@ class Payload(object):
def __init__(self):
self.payload = get_payload()
self.args = []
def __str__(self):
if hasattr(self.payload, 'append'):
return "\n".join(self.payload)
return self.payload
return self.payload + ' ' + ' '.join(self.args)
def append(self, args):
self.args = args

View File

@ -38,8 +38,8 @@ class TestPayloads(base.TestCase):
('dox_yaml_ignore_others', dict(
dox_yaml=True, tox_ini=True, travis_yaml=True,
dox_value="testr run", tox_value="setup.py test",
travis_value="gem test"
, payload="testr run")),
travis_value="gem test",
payload="testr run")),
('tox_ini', dict(
dox_yaml=False, tox_ini=True, travis_yaml=False,
dox_value=None, tox_value="setup.py test", travis_value=None,

View File

@ -1,4 +1,5 @@
pbr>=0.5.21,<1.0
argparse
PyYAML
sh