Mercurial > treepkg > treepkg
view treepkg/publish.py @ 557:9824e409388b
Refactor git branching
If a checkout is already available and the branch is changed in
the config git command would always fail because it doesn't know
the branch to track. Therefore always check if the branch is
locally available and if not checkout the remote branch
author | Bjoern Ricks <bricks@intevation.de> |
---|---|
date | Fri, 02 Sep 2011 08:45:28 +0000 |
parents | 8e0c81870e5e |
children |
line wrap: on
line source
#! /usr/bin/python # Copyright (C) 2007 - 2010 by Intevation GmbH # Authors: # Bernhard Herzog <bh@intevation.de> # Bjoern Ricks <bjoern.ricks@intevation.de> # # This program is free software under the GPL (>=v2) # Read the file COPYING coming with the software for details. import os.path import util from treepkg.run import call, capture_output from treepkg.cmdexpand import cmdexpand def prefix_for_remote_command(user, host): """Returns the ssh call needed to run a command on a remote host. If host is empty, the function assumes the command is to be run on the local host as the same user that exectutes this function, so that no ssh or other call is needed. """ prefix = [] if host: prefix.extend(["ssh", "%s@%s" % (user, host)]) return prefix def copy_arch_to_publishdir(variables, dist, section, arch=None, quiet=False, create=True): if not arch: cachedir = variables["cachedir"] else: cachedir = os.path.join(variables["cachedir"], arch) # if cachedir does not exist rsync will fail therefore # it must be created or skipped. if it is created remote # content will be deleted if not os.path.exists(cachedir): if create: util.ensure_directory(cachedir) else: return destdir = os.path.join(variables["publish_dir"], dist, section) remote_destdir = destdir if variables["publish_host"]: remote_destdir = (("%(publish_user)s@%(publish_host)s:" % variables) + remote_destdir) runremote = prefix_for_remote_command(variables["publish_user"], variables["publish_host"]) call(cmdexpand("@runremote mkdir --parents $destdir", runremote=runremote, destdir=destdir, **variables)) rsync_flags = [] if variables["publish_remove_old_packages"]: rsync_flags.append("--delete") if quiet: rsync_flags.append("--quiet") cmd = cmdexpand("rsync @rsync_flags -r --perms --times --omit-dir-times" " $cachedir $remote_destdir/", rsync_flags=rsync_flags, remote_destdir=remote_destdir, cachedir=cachedir) #print "rsync cmd: %s" % cmd call(cmd) def copy_to_publishdir(variables, dist, section, arch=None, quiet=False): if not arch: destdir = os.path.join(variables["publish_dir"], dist, section) else: destdir = os.path.join(variables["publish_dir"], dist, section, arch) remote_destdir = destdir if variables["publish_host"]: remote_destdir = (("%(publish_user)s@%(publish_host)s:" % variables) + remote_destdir) runremote = prefix_for_remote_command(variables["publish_user"], variables["publish_host"]) call(cmdexpand("@runremote mkdir --parents $destdir", runremote=runremote, destdir=destdir, **variables)) rsync_flags = [] if variables["publish_remove_old_packages"]: rsync_flags.append("--delete") if quiet: rsync_flags.append("--quiet") call(cmdexpand("rsync @rsync_flags -r --perms --times --omit-dir-times" " $cachedir/ $remote_destdir/", rsync_flags=rsync_flags, remote_destdir=remote_destdir, **variables)) def get_binary_arch(arch): if not arch is None and not arch.startswith("binary") and arch != "source": arch = "binary-" + arch return arch