import os
import sys
+import re
from gitbuildsys.__version__ import VERSION
from gitbuildsys import msger, cmdln, errors, utils, runner
setattr(parser.values, option.dest, [])
getattr(parser.values, option.dest).append(value)
+def handle_project(option, opt_str, value, parser):
+ if not value:
+ raise errors.Usage("option %s: need value" % opt_str)
+ if value[0] == '-':
+ raise errors.Usage("option %s: invalid project name %s, can not " \
+ "start with '-'" % (opt_str, value))
+ if not re.match(r'^(\w|:|\.|-)+$', value):
+ raise errors.Usage("option %s: invalid project name %s, only word " \
+ "character, ':', '.' and '-' supportted" \
+ % (opt_str, value))
+ setattr(parser.values, option.dest, value)
+
class Gbs(cmdln.Cmdln):
"""
Usage: gbs [GLOBAL-OPTS] SUBCOMMAND [OPTS] [ARGS...]
@cmdln.alias('rb')
@cmdln.option('-T', '--target-obsprj',
+ action='callback',
default=None,
dest='target_obsprj',
+ type='string',
+ callback=handle_project,
help='OBS target project being used to build package, ' \
'use "home:<userid>:gbs:Trunk" if not specified')
@cmdln.option('-B', '--base-obsprj',
+ action='callback',
default=None,
dest='base_obsprj',
+ type='string',
+ callback=handle_project,
help='Base OBS project being used to branch from, ' \
'use "Trunk" if not specified')
def do_remotebuild(self, subcmd, opts, *args):