def __init__(self): self.is_windows = os.get_os_type() == 'nt' if self.is_windows: self.poll_object_queue = Queue.Queue() import atexit atexit.register(self.finalize)
def get_repository_info(self): my_setup_debug() self.p_actualver = os.environ.get('FORCE_PICCOLO_VERSION') self.p_minver = (2, 2, 9) self.p_minver = (2, 3, 5) # adds the '-i' flag to rcompare integrated files as needed for review. self.p_minver = list(self.p_minver) self.p_minver_str = '.'.join(map(str,self.p_minver)) self.p_bin = self.options.p2_binary or 'p' """ # self.options.debug not populated yet if self.options.debug: global DEBUG DEBUG = True ..... """ if os.environ.get('DISABLE_POSTREVIEWPICCOLOCLIENT'): # User requested Piccolo support in postreview be disabled logging.debug("piccolo explictly disabled") return None if self.p_actualver: self.p_actualver = map(int, self.p_actualver.split('.')) if self.options.p2changenumber or os.environ.get('ENABLE_POSTREVIEWPICCOLOCLIENT'): # User requested Piccolo support in postreview be enabled without check perform_piccolo_check=False logging.debug("not going to perform piccolo check") else: logging.debug('diff_filename %r', self.options.diff_filename) if self.options.diff_filename: perform_piccolo_check=False else: perform_piccolo_check=True try: # Jython only test, consider using a robust check platform module, http://downloads.egenix.com/python/platform.py I think there are others os_plat=os.get_os_type() except AttributeError: os_plat='' if sys.platform.startswith('win') or os_plat == 'nt': self._command_args = ['cmd', '/C'] else: # probably Unix like... self._command_args = ['sh', '-c'] logging.debug("piccolo bin %r" % self.p_bin) if perform_piccolo_check: logging.debug("about to check for piccolo") if not check_install('%s help' % self.p_bin): # or "p here"? ideally 'p version -c' and then report issues with version (-c option was added to version 2.2.0 of piccolo; p2main.c -> 66 Change 2041 -> 66 (change) on 14-oct-2008 by whiro01) # "p version -c" does not require current directory to be in MAPPATH (does not even need MAPPATH set) # p help needs mappath (and connection to server) logging.debug("piccolo check check_install() failed") return None # so we have a piccolo command in the path if not self.p_actualver: # check version of piccolo client ......... pic_command_str = '%s version -c' % self.p_bin pver_text = execute(self._command_args + [pic_command_str], ignore_errors=True, extra_ignore_errors=(1,)) logging.info('pver_text %r', pver_text) if pver_text.startswith('Invalid option:'): logging.debug("piccolo version check returned Invalid option") # too old, does not support -c print '' print 'Piccolo version too old, (version -c support missing). Need (at least) version %s' % self.p_minver_str return None # extract version pver_text = pver_text.strip() pver_text = pver_text.rsplit(' ', 1)[1] pver = pver_text.rsplit('.') logging.debug("pver %r" % pver) #pver = map(int, pver) # fails if ther are non-integers :-( E.g. 'Piccolo client version 2.2.0b14' comparable_pver = [] for tmp_ver in pver: try: tmp_ver = int(tmp_ver) except ValueError: # probably not an integer, or may be a mix :-( new_tmp_ver = ['0'] for tmp_ver_piece in tmp_ver: if tmp_ver_piece in string.digits: new_tmp_ver.append(tmp_ver_piece) else: break tmp_ver = int(''.join(new_tmp_ver)) comparable_pver.append(tmp_ver) self.p_actualver = comparable_pver logging.debug("self.p_actualver %r" % self.p_actualver) logging.debug("self.p_minver %r" % self.p_minver) if self.p_actualver < self.p_minver: print '' print 'Piccolo version too old. Found version %s need version %s' % (pver_text, self.p_minver_str) return None pic_command_str = '%s here' % self.p_bin self._p_here_txt = execute(self._command_args + [pic_command_str], ignore_errors=True, extra_ignore_errors=(1,)) self._p_here_txt = self._p_here_txt.strip() # FIXME look at check_gnu_diff() - don't actually need gnu diff under most unix systems BUT do under Windows (mostly likely place for a bad diff exe) if sys.platform.startswith('win') or os_plat == 'nt': check_gnu_diff() else: self._p_here_txt = 'EDITME_P2_CLIENT_INFO' ## TODO do at least minimum hostname and pwd? logging.debug('self._p_here_txt %r', self._p_here_txt) if self.options.submit_as is None: self.options.submit_as = os.environ.get('USER') if self.options.submit_as and self.options.submit_as.lower() == 'ingres': self.options.submit_as = None #if self.options.username is None: # self.options.username = os.environ.get('USER') # Ingres Corp only has 1 repository (although there are gateways) """ The Piccolo server (or path) can be obtained with NEWer clients in a very easy fashion: version 2.2.0 has a neat option: p map -x version 2.1.24 does NOT support -x (which restricts to things you have mapped, i.e. can limit the connects) but does support map: p map NOTE check version requires Rogers changes. Can then grep for connect, etc. """ default_piccolo_server = 'usilsuxx:1666' # and/or pick up from "p map" filtering for connect(s) (shell approach would be; p map |grep '^connect' | awk '{print $4}') if perform_piccolo_check is True repository_path = self.options.p2_server or default_piccolo_server # Should try and pick this up from client map, really need a new piccolo command list (first) piccolo server if self.options.server is None: self.options.server = 'http://reviewboard.ingres.prv' # should consider overridding _get_server_from_config() return RepositoryInfo(path=repository_path, supports_changesets=False)
import os.path import re import webbrowser try: import desktopcouch except ImportError: desktopcouch = None from couchapp.errors import ResourceNotFound, AppError from couchapp.macros import package_shows, package_views from couchapp import util # if os.name == 'nt': if os.get_os_type() == "nt": def _replace_backslash(name): return name.replace("\\", "/") else: def _replace_backslash(name): return name logger = logging.getLogger(__name__) class LocalDoc(object):