Mercurial > treepkg > treepkg
view treepkg/publish.py @ 404:a798edae0844 treepkg-status
moved common publish functions to a seperate module
author | Bjoern Ricks <bricks@intevation.de> |
---|---|
date | Tue, 13 Jul 2010 12:24:14 +0000 |
parents | |
children | 25ef11a79d7f |
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 from treepkg.run import call, capture_output from treepkg.cmdexpand import cmdexpand def remove_trailing_slashes(s): return s.rstrip("/") def expand_filename(filename): """ Applies os.path.expanduser and os.path.expandvars to filename """ return os.path.expandvars(os.path.expanduser(filename)) 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_to_publishdir(variables, dist, section, arch, quiet): 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))