/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: John Arbash Meinel
  • Date: 2006-07-07 15:22:42 UTC
  • mfrom: (1843 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1846.
  • Revision ID: john@arbash-meinel.com-20060707152242-a7b5e0afd64d9d5a
[merge] bzr.dev 1843

Show diffs side-by-side

added added

removed removed

Lines of Context:
337
337
    def __init__(self):
338
338
        super(GlobalConfig, self).__init__(config_filename)
339
339
 
 
340
    def set_user_option(self, option, value):
 
341
        """Save option and its value in the configuration."""
 
342
        # FIXME: RBC 20051029 This should refresh the parser and also take a
 
343
        # file lock on bazaar.conf.
 
344
        conf_dir = os.path.dirname(self._get_filename())
 
345
        ensure_config_dir_exists(conf_dir)
 
346
        if 'DEFAULT' not in self._get_parser():
 
347
            self._get_parser()['DEFAULT'] = {}
 
348
        self._get_parser()['DEFAULT'][option] = value
 
349
        f = open(self._get_filename(), 'wb')
 
350
        self._get_parser().write(f)
 
351
        f.close()
 
352
 
340
353
 
341
354
class LocationConfig(IniBasedConfig):
342
355
    """A configuration object that gives the policy for a location."""
345
358
        name_generator = locations_config_filename
346
359
        if (not os.path.exists(name_generator()) and 
347
360
                os.path.exists(branches_config_filename())):
348
 
            warning('Please rename branches.conf to locations.conf')
 
361
            if sys.platform == 'win32':
 
362
                warning('Please rename %s to %s' 
 
363
                         % (branches_config_filename(),
 
364
                            locations_config_filename()))
 
365
            else:
 
366
                warning('Please rename ~/.bazaar/branches.conf'
 
367
                        ' to ~/.bazaar/locations.conf')
349
368
            name_generator = branches_config_filename
350
369
        super(LocationConfig, self).__init__(name_generator)
351
370
        self.location = location
512
531
        return self._get_safe_value('_post_commit')
513
532
 
514
533
    def _get_nickname(self):
515
 
        value = self._get_best_value('_get_nickname')
 
534
        value = self._get_explicit_nickname()
516
535
        if value is not None:
517
536
            return value
518
537
        return self.branch.base.split('/')[-2]
519
538
 
 
539
    def has_explicit_nickname(self):
 
540
        """Return true if a nickname has been explicitly assigned."""
 
541
        return self._get_explicit_nickname() is not None
 
542
 
 
543
    def _get_explicit_nickname(self):
 
544
        return self._get_best_value('_get_nickname')
 
545
 
520
546
    def _log_format(self):
521
547
        """See Config.log_format."""
522
548
        return self._get_best_value('_log_format')
572
598
    """Return per-user configuration ini file filename."""
573
599
    return pathjoin(config_dir(), 'branches.conf')
574
600
 
 
601
 
575
602
def locations_config_filename():
576
603
    """Return per-user configuration ini file filename."""
577
604
    return pathjoin(config_dir(), 'locations.conf')
597
624
        uid = os.getuid()
598
625
        w = pwd.getpwuid(uid)
599
626
 
600
 
        try:
601
 
            gecos = w.pw_gecos.decode(bzrlib.user_encoding)
602
 
            username = w.pw_name.decode(bzrlib.user_encoding)
603
 
        except UnicodeDecodeError:
604
 
            # We're using pwd, therefore we're on Unix, so /etc/passwd is ok.
605
 
            raise errors.BzrError("Can't decode username in " \
606
 
                    "/etc/passwd as %s." % bzrlib.user_encoding)
 
627
        # we try utf-8 first, because on many variants (like Linux),
 
628
        # /etc/passwd "should" be in utf-8, and because it's unlikely to give
 
629
        # false positives.  (many users will have their user encoding set to
 
630
        # latin-1, which cannot raise UnicodeError.)
 
631
        try:
 
632
            gecos = w.pw_gecos.decode('utf-8')
 
633
            encoding = 'utf-8'
 
634
        except UnicodeError:
 
635
            try:
 
636
                gecos = w.pw_gecos.decode(bzrlib.user_encoding)
 
637
                encoding = bzrlib.user_encoding
 
638
            except UnicodeError:
 
639
                raise errors.BzrCommandError('Unable to determine your name.  '
 
640
                   'Use "bzr whoami" to set it.')
 
641
        try:
 
642
            username = w.pw_name.decode(encoding)
 
643
        except UnicodeError:
 
644
            raise errors.BzrCommandError('Unable to determine your name.  '
 
645
                'Use "bzr whoami" to set it.')
607
646
 
608
647
        comma = gecos.find(',')
609
648
        if comma == -1: