def show_version(show_config=True, show_copyright=True, to_file=None): if to_file is None: to_file = sys.stdout to_file.write("Bazaar (bzr) %s\n" % bzrlib.__version__) # is bzrlib itself in a branch? src_tree = _get_bzr_source_tree() if src_tree: src_revision_id = src_tree.last_revision() revno = src_tree.branch.revision_id_to_revno(src_revision_id) to_file.write(" from bzr checkout %s\n" % (src_tree.basedir,)) to_file.write(" revision: %s\n" % (revno,)) to_file.write(" revid: %s\n" % (src_revision_id,)) to_file.write(" branch nick: %s\n" % (src_tree.branch.nick,)) to_file.write(" Python interpreter: ") # show path to python interpreter # (bzr.exe use python interpreter from pythonXY.dll # but sys.executable point to bzr.exe itself) # however, sys.frozen exists if running from bzr.exe # see http://www.py2exe.org/index.cgi/Py2exeEnvironment if getattr(sys, 'frozen', None) is None: # if not bzr.exe to_file.write(sys.executable + ' ') else: # pythonXY.dll basedir = os.path.dirname(sys.executable) python_dll = "python%d%d.dll" % sys.version_info[:2] to_file.write(os.path.join(basedir, python_dll) + ' ') # and now version of python interpreter to_file.write(bzrlib._format_version_tuple(sys.version_info)) to_file.write('\n') to_file.write(" Python standard library:" + ' ') to_file.write(os.path.dirname(os.__file__) + '\n') to_file.write(" Platform: %s\n" % platform.platform(aliased=1).decode('utf-8')) to_file.write(" bzrlib: ") if len(bzrlib.__path__) > 1: # print repr, which is a good enough way of making it clear it's # more than one element (eg ['/foo/bar', '/foo/bzr']) to_file.write(repr(bzrlib.__path__) + '\n') else: to_file.write(bzrlib.__path__[0] + '\n') if show_config: config_dir = osutils.normpath(config.config_dir()) # use native slashes if not isinstance(config_dir, unicode): config_dir = config_dir.decode(osutils.get_user_encoding()) to_file.write(" Bazaar configuration: %s\n" % (config_dir,)) to_file.write(" Bazaar log file: ") to_file.write(trace._bzr_log_filename + '\n') if show_copyright: to_file.write('\n') to_file.write(bzrlib.__copyright__ + '\n') to_file.write("http://bazaar.canonical.com/\n") to_file.write('\n') to_file.write("bzr comes with ABSOLUTELY NO WARRANTY. bzr is free software, and\n") to_file.write("you may use, modify and redistribute it under the terms of the GNU\n") to_file.write("General Public License version 2 or later.\n") to_file.write("\nBazaar is part of the GNU Project to produce a free operating " "system.\n") to_file.write('\n')
def show_version(show_config=True, show_copyright=True, to_file=None): if to_file is None: to_file = sys.stdout to_file.write("Bazaar (bzr) %s\n" % bzrlib.__version__) # is bzrlib itself in a branch? src_tree = _get_bzr_source_tree() if src_tree: src_revision_id = src_tree.last_revision() revno = src_tree.branch.revision_id_to_revno(src_revision_id) to_file.write(" from bzr checkout %s\n" % (src_tree.basedir, )) to_file.write(" revision: %s\n" % (revno, )) to_file.write(" revid: %s\n" % (src_revision_id, )) to_file.write(" branch nick: %s\n" % (src_tree.branch.nick, )) to_file.write(" Python interpreter: ") # show path to python interpreter # (bzr.exe use python interpreter from pythonXY.dll # but sys.executable point to bzr.exe itself) if not hasattr(sys, 'frozen'): # check for bzr.exe # python executable to_file.write(sys.executable + ' ') else: # pythonXY.dll basedir = os.path.dirname(sys.executable) python_dll = "python%d%d.dll" % sys.version_info[:2] to_file.write(os.path.join(basedir, python_dll) + ' ') # and now version of python interpreter to_file.write(bzrlib._format_version_tuple(sys.version_info)) to_file.write('\n') to_file.write(" Python standard library:" + ' ') to_file.write(os.path.dirname(os.__file__) + '\n') to_file.write(" bzrlib: ") if len(bzrlib.__path__) > 1: # print repr, which is a good enough way of making it clear it's # more than one element (eg ['/foo/bar', '/foo/bzr']) to_file.write(repr(bzrlib.__path__) + '\n') else: to_file.write(bzrlib.__path__[0] + '\n') if show_config: config_dir = os.path.normpath( config.config_dir()) # use native slashes if not isinstance(config_dir, unicode): config_dir = config_dir.decode(bzrlib.user_encoding) to_file.write(" Bazaar configuration: %s\n" % (config_dir, )) to_file.write(" Bazaar log file: ") to_file.write(trace._bzr_log_filename + '\n') if show_copyright: to_file.write('\n') to_file.write(bzrlib.__copyright__ + '\n') to_file.write("http://bazaar-vcs.org/\n") to_file.write('\n') to_file.write( "bzr comes with ABSOLUTELY NO WARRANTY. bzr is free software, and\n" ) to_file.write( "you may use, modify and redistribute it under the terms of the GNU\n" ) to_file.write("General Public License version 2 or later.\n") to_file.write('\n')
def _show_bzr_config(to_file): config_dir = os.path.normpath(config.config_dir()) # use native slashes if not isinstance(config_dir, unicode): config_dir = config_dir.decode(bzrlib.osutils.get_user_encoding()) bzr_log_filename = trace._bzr_log_filename if not isinstance(bzr_log_filename, unicode): bzr_log_filename = trace._bzr_log_filename.decode( bzrlib.osutils.get_user_encoding()) to_file.write('<configuration>%s</configuration>' % config_dir) to_file.write('<log_file>%s</log_file>' % bzr_log_filename)
class ParamikoVendor(SSHVendor): """Vendor that uses paramiko.""" def _hexify(self, s): return hexlify(s).upper() def _connect(self, username, password, host, port): global SYSTEM_HOSTKEYS, BZR_HOSTKEYS load_host_keys() try: t = paramiko.Transport((host, port or 22)) t.set_log_channel('bzr.paramiko') t.start_client() except (paramiko.SSHException, socket.error), e: self._raise_connection_error(host, port=port, orig_error=e) server_key = t.get_remote_server_key() server_key_hex = self._hexify(server_key.get_fingerprint()) keytype = server_key.get_name() if host in SYSTEM_HOSTKEYS and keytype in SYSTEM_HOSTKEYS[host]: our_server_key = SYSTEM_HOSTKEYS[host][keytype] our_server_key_hex = self._hexify(our_server_key.get_fingerprint()) elif host in BZR_HOSTKEYS and keytype in BZR_HOSTKEYS[host]: our_server_key = BZR_HOSTKEYS[host][keytype] our_server_key_hex = self._hexify(our_server_key.get_fingerprint()) else: trace.warning('Adding %s host key for %s: %s' % (keytype, host, server_key_hex)) add = getattr(BZR_HOSTKEYS, 'add', None) if add is not None: # paramiko >= 1.X.X BZR_HOSTKEYS.add(host, keytype, server_key) else: BZR_HOSTKEYS.setdefault(host, {})[keytype] = server_key our_server_key = server_key our_server_key_hex = self._hexify(our_server_key.get_fingerprint()) save_host_keys() if server_key != our_server_key: filename1 = os.path.expanduser('~/.ssh/known_hosts') filename2 = osutils.pathjoin(config.config_dir(), 'ssh_host_keys') raise errors.TransportError( 'Host keys for %s do not match! %s != %s' % (host, our_server_key_hex, server_key_hex), ['Try editing %s or %s' % (filename1, filename2)]) _paramiko_auth(username, password, host, port, t) return t
def get_sys_info(): """Get the system information. :return: a dictionary mapping fields to values. Field names are: * bzr-version - version of Bazaar * bzr-lib-path - paths to bzrlib roots (a list) * bzr-source-tree - source tree holding Bazaar (None or a Tree object) * bzr-config-dir - configuration directory holding bazaar.conf, etc. * bzr-log-file - path to bzr.log file * python-file - path to Python interpreter * python-version - version of Python interpreter * python-lib-dir - path to Python standard library """ result = {} # Bazaar installation result["bzr-version"] = bzrlib.__version__ result["bzr-lib-path"] = bzrlib.__path__ # is bzrlib itself in a branch? source_tree = None #_get_bzr_source_tree() if source_tree: result["bzr-source-tree"] = _source_tree_details() else: result["bzr-source-tree"] = None # Bazaar configuration config_dir = os.path.normpath(config.config_dir()) # use native slashes if not isinstance(config_dir, unicode): config_dir = config_dir.decode(osutils.get_user_encoding()) result["bzr-config-dir"] = config_dir result["bzr-log-file"] = trace._bzr_log_filename # Python installation # (bzr.exe use python interpreter from pythonXY.dll # but sys.executable point to bzr.exe itself) if not hasattr(sys, 'frozen'): # check for bzr.exe # python executable py_file = sys.executable else: # pythonXY.dll basedir = os.path.dirname(sys.executable) python_dll = "python%d%d.dll" % sys.version_info[:2] py_file = os.path.join(basedir, python_dll) result["python-file"] = py_file result["python-version"] = bzrlib._format_version_tuple(sys.version_info) result["python-lib-dir"] = os.path.dirname(os.__file__) return result
def __init__(self): cmd.Cmd.__init__(self) self.prompt = "bzr> " try: self.tree = WorkingTree.open_containing('.')[0] except: self.tree = None self.set_title() self.set_prompt() self.identchars += '-' ensure_config_dir_exists() self.history_file = osutils.pathjoin(config_dir(), 'shell-history') readline.set_completer_delims(string.whitespace) if os.access(self.history_file, os.R_OK) and \ os.path.isfile(self.history_file): readline.read_history_file(self.history_file) self.cwd = os.getcwd()
def save_host_keys(): """ Save "discovered" host keys in $(config)/ssh_host_keys/. """ global SYSTEM_HOSTKEYS, BZR_HOSTKEYS bzr_hostkey_path = osutils.pathjoin(config.config_dir(), 'ssh_host_keys') config.ensure_config_dir_exists() try: f = open(bzr_hostkey_path, 'w') f.write('# SSH host keys collected by bzr\n') for hostname, keys in BZR_HOSTKEYS.iteritems(): for keytype, key in keys.iteritems(): f.write('%s %s %s\n' % (hostname, keytype, key.get_base64())) f.close() except IOError, e: trace.mutter('failed to save bzr host keys: ' + str(e))
pass return False def load_host_keys(): """ Load system host keys (probably doesn't work on windows) and any "discovered" keys from previous sessions. """ global SYSTEM_HOSTKEYS, BZR_HOSTKEYS try: SYSTEM_HOSTKEYS = paramiko.util.load_host_keys( os.path.expanduser('~/.ssh/known_hosts')) except IOError, e: trace.mutter('failed to load system host keys: ' + str(e)) bzr_hostkey_path = osutils.pathjoin(config.config_dir(), 'ssh_host_keys') try: BZR_HOSTKEYS = paramiko.util.load_host_keys(bzr_hostkey_path) except IOError, e: trace.mutter('failed to load bzr host keys: ' + str(e)) save_host_keys() def save_host_keys(): """ Save "discovered" host keys in $(config)/ssh_host_keys/. """ global SYSTEM_HOSTKEYS, BZR_HOSTKEYS bzr_hostkey_path = osutils.pathjoin(config.config_dir(), 'ssh_host_keys') config.ensure_config_dir_exists()
def rules_filename(): """Return the default rules filename.""" return osutils.pathjoin(config.config_dir(), 'rules')
def test_get_cache_directory(self): # get_cache_directory returns the path to a directory inside the # Bazaar configuration directory. from bzrlib.plugins.launchpad import lp_api expected_path = osutils.pathjoin(config.config_dir(), 'launchpad') self.assertEqual(expected_path, lp_api.get_cache_directory())
def get_cache_directory(): """Return the directory to cache launchpadlib objects in.""" return osutils.pathjoin(config.config_dir(), 'launchpad')
def gannotate_config_filename(): return os.path.join(config.config_dir(), "gannotate.conf")
def config_filename(): return osutils.pathjoin(config_dir(), 'qbzr.conf')