From 204c2e0781ce89fd8abb7f1249920ce90414f9f6 Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 15 Dec 2007 05:58:36 -0800 Subject: Factor out functions with a common errno ignore block. --- gitosis/gitdaemon.py | 8 +------- gitosis/init.py | 8 +------- gitosis/run_hook.py | 8 +------- gitosis/util.py | 25 +++++++++++++++++++++++++ 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/gitosis/gitdaemon.py b/gitosis/gitdaemon.py index e1e0e9a..e529302 100644 --- a/gitosis/gitdaemon.py +++ b/gitosis/gitdaemon.py @@ -30,13 +30,7 @@ def allow_export(repopath): def deny_export(repopath): """Remove the ``git-daemon-export-ok`` marker for a given repository.""" path = export_ok_path(repopath) - try: - os.unlink(path) - except OSError, ex: - if ex.errno == errno.ENOENT: - pass - else: - raise + util.unlink(path) def _extract_reldir(topdir, dirpath): """ diff --git a/gitosis/init.py b/gitosis/init.py index 87ad9a7..71cf074 100644 --- a/gitosis/init.py +++ b/gitosis/init.py @@ -52,13 +52,7 @@ def initial_commit(git_dir, cfg, pubkey, user): def symlink_config(git_dir): dst = os.path.expanduser('~/.gitosis.conf') tmp = '%s.%d.tmp' % (dst, os.getpid()) - try: - os.unlink(tmp) - except OSError, e: - if e.errno == errno.ENOENT: - pass - else: - raise + util.unlink(tmp) os.symlink( os.path.join(git_dir, 'gitosis.conf'), tmp, diff --git a/gitosis/run_hook.py b/gitosis/run_hook.py index 790a5f9..068dbe1 100644 --- a/gitosis/run_hook.py +++ b/gitosis/run_hook.py @@ -27,13 +27,7 @@ def post_update(cfg, git_dir): 6. Update the Gitosis SSH keys. """ export = os.path.join(git_dir, 'gitosis-export') - try: - shutil.rmtree(export) - except OSError, ex: - if ex.errno == errno.ENOENT: - pass - else: - raise + util.rmtree(export) repository.export(git_dir=git_dir, path=export) os.rename( os.path.join(export, 'gitosis.conf'), diff --git a/gitosis/util.py b/gitosis/util.py index ad0989c..4ae3d0c 100644 --- a/gitosis/util.py +++ b/gitosis/util.py @@ -3,6 +3,7 @@ Some utility functions for Gitosis """ import errno import os +import shutil from ConfigParser import NoSectionError, NoOptionError def mkdir(newdir, mode=0777): @@ -17,6 +18,30 @@ def mkdir(newdir, mode=0777): else: raise +def unlink(filename): + """ + Like os.unlink, but non-existing files do not raise an error. + """ + try: + os.unlink(filename) + except OSError, ex: + if ex.errno == errno.ENOENT: + pass + else: + raise + +def rmtree(directory): + """ + Like shutil.rmtree, but non-existing trees do not raise an error. + """ + try: + shutil.rmtree(directory) + except OSError, ex: + if ex.errno == errno.ENOENT: + pass + else: + raise + def getRepositoryDir(config): """ Find the location of the Git repositories. -- cgit v1.2.3