79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb#
f3091cedd4abeda1026d9117c34e8f625754e8aefielding# Various functions
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding#
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding# Copyright (c) 2015 Red Hat, Inc.
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding# Author: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding#
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding# This is free software; you can redistribute it and/or modify it
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding# under the terms of the GNU General Public License as published by
f3091cedd4abeda1026d9117c34e8f625754e8aefielding# the Free Software Foundation; version 2 only
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd#
f3091cedd4abeda1026d9117c34e8f625754e8aefielding# This program is distributed in the hope that it will be useful, but
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# WITHOUT ANY WARRANTY; without even the implied warranty of
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# General Public License for more details.
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd#
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# You should have received a copy of the GNU General Public License
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding# along with this program. If not, see <http://www.gnu.org/licenses/>.
5b8bfc77959f509acfe37b9030e05ab50fa23f66trawick#
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingimport re
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingimport os
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingimport subprocess
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingimport config
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingUNINDENT_RE = re.compile("^ +", re.MULTILINE)
4657f9b12af4b123b80e15c73fa03c190e47a8bftrawick
4657f9b12af4b123b80e15c73fa03c190e47a8bftrawick
4657f9b12af4b123b80e15c73fa03c190e47a8bftrawickdef unindent(text):
4657f9b12af4b123b80e15c73fa03c190e47a8bftrawick """
79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb Unindent text by removing at most the number of spaces present in
79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb the first non-empty line from the beginning of every line.
79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb """
4657f9b12af4b123b80e15c73fa03c190e47a8bftrawick indent_ref = [0]
4657f9b12af4b123b80e15c73fa03c190e47a8bftrawick
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb def replace(match):
9c39f8fb982df4dbce5304e49385568e6d35bfa8trawick if indent_ref[0] == 0:
9c39f8fb982df4dbce5304e49385568e6d35bfa8trawick indent_ref[0] = len(match.group())
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb return match.group()[indent_ref[0]:]
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb return UNINDENT_RE.sub(replace, text)
7f60286cbbf9f113ea3405c4f476c7c03f865426dougm
7f60286cbbf9f113ea3405c4f476c7c03f865426dougm
295ba2e25e562ee52c7bf96808cf9d486ebfb325sfdef run_shell():
295ba2e25e562ee52c7bf96808cf9d486ebfb325sf """
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb Execute an interactive shell under "screen", preserving environment.
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb For use as a breakpoint for debugging.
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb """
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb my_env = os.environ.copy()
2d0b0e8c8f940cbdf31c97826529370e6bf9c070rbb my_env["ROOT_DIR"] = config.PREFIX
06461d67f387ea068187e6dfa036875a8205c04cjerenkrantz
06461d67f387ea068187e6dfa036875a8205c04cjerenkrantz # screen filter out LD_* evniroment varibles.
205f4595abf32ae208958d7f8abea68b335c9f39trawick # Back-up them and set them later in screenrc
205f4595abf32ae208958d7f8abea68b335c9f39trawick my_env["_LD_LIBRARY_PATH"] = os.getenv("LD_LIBRARY_PATH", "")
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding my_env["_LD_PRELOAD"] = os.getenv("LD_PRELOAD", "")
79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb
79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb subprocess.call([
79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb "screen", "-DAm", "-S", "sssd_cwrap_session", "-c",
79df087e59dadda6b4775fb26b1a3294cbb0bf44rbb ".config/screenrc"],
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding env=my_env
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding )
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fieldingdef first_dir(*args):
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding """Return first argument that points to an existing directory."""
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding for arg in args:
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding if os.path.isdir(arg):
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding return arg
09fe0b69d3d1e8c8041c9ce99ee77b8b44b5e3b1fielding