~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Martin Pool
  • Date: 2005-08-24 00:34:21 UTC
  • Revision ID: mbp@sourcefrog.net-20050824003421-33dd8e5c739cad2a
- send trace messages out through python logging module

Show diffs side-by-side

added added

removed removed

Lines of Context:
1924
1924
    import traceback
1925
1925
    
1926
1926
    log_error('bzr: ' + summary)
1927
 
    bzrlib.trace.log_exception()
1928
 
 
1929
 
    if os.environ.get('BZR_DEBUG'):
1930
 
        traceback.print_exc()
1931
1927
 
1932
1928
    if not quiet:
1933
1929
        sys.stderr.write('\n')
1940
1936
 
1941
1937
 
1942
1938
def main(argv):
1943
 
    
1944
1939
    bzrlib.trace.open_tracefile(argv)
1945
1940
 
1946
1941
    try:
1947
1942
        try:
1948
 
            try:
1949
 
                return run_bzr(argv[1:])
1950
 
            finally:
1951
 
                # do this here inside the exception wrappers to catch EPIPE
1952
 
                sys.stdout.flush()
1953
 
        except BzrError, e:
1954
 
            quiet = isinstance(e, (BzrCommandError))
1955
 
            _report_exception('error: ' + str(e), quiet=quiet)
1956
 
            if len(e.args) > 1:
1957
 
                for h in e.args[1]:
1958
 
                    # some explanation or hints
1959
 
                    log_error('  ' + h)
1960
 
            return 1
1961
 
        except AssertionError, e:
1962
 
            msg = 'assertion failed'
1963
 
            if str(e):
1964
 
                msg += ': ' + str(e)
1965
 
            _report_exception(msg)
1966
 
            return 2
1967
 
        except KeyboardInterrupt, e:
1968
 
            _report_exception('interrupted', quiet=True)
1969
 
            return 2
1970
 
        except Exception, e:
1971
 
            import errno
1972
 
            quiet = False
1973
 
            if (isinstance(e, IOError) 
1974
 
                and hasattr(e, 'errno')
1975
 
                and e.errno == errno.EPIPE):
1976
 
                quiet = True
1977
 
                msg = 'broken pipe'
1978
 
            else:
1979
 
                msg = str(e).rstrip('\n')
1980
 
            _report_exception(msg, quiet)
1981
 
            return 2
1982
 
    finally:
1983
 
        bzrlib.trace.close_trace()
 
1943
            return run_bzr(argv[1:])
 
1944
        finally:
 
1945
            # do this here inside the exception wrappers to catch EPIPE
 
1946
            sys.stdout.flush()
 
1947
    except BzrCommandError, e:
 
1948
        # command line syntax error, etc
 
1949
        log_error(str(e))
 
1950
        return 1
 
1951
    except BzrError, e:
 
1952
        bzrlib.trace.log_exception()
 
1953
        return 1
 
1954
    except AssertionError, e:
 
1955
        bzrlib.trace.log_exception('assertion failed: ' + str(e))
 
1956
        return 3
 
1957
    except KeyboardInterrupt, e:
 
1958
        bzrlib.trace.note('interrupted')
 
1959
        return 2
 
1960
    except Exception, e:
 
1961
        import errno
 
1962
        if (isinstance(e, IOError) 
 
1963
            and hasattr(e, 'errno')
 
1964
            and e.errno == errno.EPIPE):
 
1965
            bzrlib.trace.note('broken pipe')
 
1966
            return 2
 
1967
        else:
 
1968
            bzrlib.trace.log_exception('terminated by exception')
 
1969
            return 2
1984
1970
 
1985
1971
 
1986
1972
if __name__ == '__main__':