Логика для повторного.матч() , sys файла.выход(1) не имеет смысла, плюс почему я не могу использовать возвращаемое значение true, если повторный.матч регулярным выражениям


Вся идея позади этого ,это вводит пользователей : 1. НД фиксации -м "нет-ТИК" и способен представить набором 2. НД фиксации -м "без комментарий" и тут же, как # 1 3. НД фиксации -м "Джира-123 бла бла" тоже представил пока есть действительный вопрос "Джира-123", в противном случае фиксация возвращается с сообщением "%s не существует"%авиабилет 4. НД фиксации -м "простом английском языке без каких-либо из вышеперечисленных, отмена изменений , поэтому выше 3 правила должны быть соблюдены.


#!/usr/bin/env python

import re, os, sys, jira, subprocess
from optparse import OptionParser
import warnings
from collections import namedtuple


def verify_commit_text(tags):
    for line in tags:
        if re.match(r'[^\NO-TIK]',line):
            sys.exit(1)
        elif re.match(r'[^\NO-REVIEW]', line):
            sys.exit(1)
        elif re.match(r'[a-zA-Z]+-\d+', line):
            # Validate the JIRA ID
            m = re.search("([a-zA-Z]+-\d+)",line)
            m_args = m.group(1)
            m_args = [m_args]
            if CheckForJiraIssueRecord(m_args):
                sys.exit(1)
            else:
                print >> sys.stderr, ("%s does not exist"%m_args)
        else:
            sys.exit(0)

def CheckForJiraIssueRecord(my_args):
    # turn off stdout
    #sys.stdout = open(os.devnull)
    #sys.stderr = open(os.devnull)
    com = jira.Commands()
    logger = jira.setupLogging()
    jira_env = {'home':os.environ['HOME']}
    command_name = "cat"
    server = "http://jira.server.com:8080/rpc/soap/jirasoapservice-v2?wsdl"
    options = namedtuple('Options', 'user password')('user','password')
    jira.soap = jira.Client(server)
    jira.start_login(options, jira_env, command_name, com, logger)
    issue = com.run(command_name, logger, jira_env, my_args)
    if issue:
        return True

if __name__ == '__main__':
    commit_text_verified = verify_commit_text(os.popen('hg tip --template "{desc}"'))
    if commit_text_verified:
        sys.exit(0)
    else:
        print >> sys.stderr, ('[obey the rules!]')
        sys.exit(1)


454
0
задан 22 сентября 2011 в 06:09 Источник Поделиться
Комментарии
1 ответ

Вы, кажется, путают о представлении sys.выход делает. При выходе из вашей программы. Функция verify_commit_text никогда не выходит. Ваш код после вызова verify_commit_text никогда не выполняется. Программа всегда попадает системы.выход в verify_commit_text и заканчивается. Первое, что вам нужно сделать, это устранить все представления sys.выход (), за исключением __основной__ раздел. Вы действительно должны иметь только sys.выход там.

2
ответ дан 22 сентября 2011 в 09:09 Источник Поделиться