# -*- coding: utf-8 -*-
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from distutils import spawn
import getopt
import os
import re
import sys
from clselect.utils import mkdir_p
ACTIVATE_PATTERN = r'''deactivate () {
if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
hash -r 2>/dev/null
fi
if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
PS1="$_OLD_VIRTUAL_PS1"
export PS1
unset _OLD_VIRTUAL_PS1
fi
unset VIRTUAL_ENV
unset RUBYHOME
unset GEM_HOME
unset GEM_PATH
unset GEM_SPEC_CACHE
if [ ! "$1" = "nondestructive" ] ; then
unset -f deactivate
fi
}
deactivate nondestructive
VIRTUAL_ENV=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
RUBYHOME="%s"
# set home directory if it is not for some reason
# (e.g. cagefs_enter in selectorctl)
# othewise recent ruby2.7 version fails to install gem
# with no valid reason in output (like "nil argument, exit")
if [[ "${HOME}" == "" ]]; then
HOME="$(echo ~)"
export HOME
fi
ORIG_GEM_HOME=$("$RUBYHOME/bin/gem" env --config-file "" GEM_HOME)
GEM_HOME="$VIRTUAL_ENV"
GEM_PATH="$VIRTUAL_ENV:$ORIG_GEM_HOME"
GEM_SPEC_CACHE="$GEM_HOME/specs"
export VIRTUAL_ENV
export RUBYHOME
export GEM_HOME
export GEM_PATH
export GEM_SPEC_CACHE
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$RUBYHOME/bin:$PATH"
export PATH
if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
_OLD_VIRTUAL_PS1="$PS1"
if [ "x%s" != x ] ; then
PS1="%s$PS1"
else
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
fi
export PS1
fi
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
hash -r 2>/dev/null
fi
'''
WRAP_LIST = [
['ruby', []],
['gem', ['--config-file', '"$VIRTUAL_ENV/gemrc"']],
]
WRAPPER_PATTERN = r'''#!/bin/bash
PWD=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
source "$PWD/activate"
exec "$RUBYHOME/bin/%s" "$@"%s
'''
def create(destination, prompt='', ruby=None):
destination = os.path.expanduser(destination)
if not ruby:
ruby = spawn.find_executable('ruby')
if not os.path.isabs(ruby):
ruby = os.path.realpath(ruby)
ruby_home = os.path.dirname(os.path.dirname(ruby))
basename = os.path.basename(ruby)
version = re.match('ruby(?P