Source code for cgl.plugins.perforce.utils.environment
import os
import socket
import logging
from cgl.core.config.query import AlchemyConfigManager
from cgl.core.utils.general import cgl_execute
from cgl.plugins.perforce.utils.user import check_for_user, create_user
CFG = AlchemyConfigManager()
[docs]
def check_peforce_connection():
cmd = "p4 info"
result_ = cgl_execute(cmd, return_output=True)
for line in result_["stdout"].splitlines():
if "Connect to server failed" in line:
return False
return True
[docs]
def alchemy_perforce_startup():
if not check_perforce_environment_variables():
setup_perforce_environment_variables()
[docs]
def check_perforce_environment_variables():
"""
Ensures that the p4 environment is setup properly
Returns:
"""
required_variables = ["P4PORT", "P4USER", "P4IGNORE"]
current_env = get_perforce_env_variables()
for var in required_variables:
if var not in current_env:
return False
return True
[docs]
def get_perforce_env_variables():
"""
Gets all the p4 environmental variables currently set
Returns:
"""
variable_list = []
cmd = "p4 set"
output = cgl_execute(command=cmd, return_output=True)
for line in output["stdout"].splitlines():
variable = line.split("=")[0]
variable_list.append(variable)
return variable_list
[docs]
def setup_perforce_environment_variables():
"""
Initial perforce setup for client computer to be able to connect to the server computer
Args:
company:
project:
Returns:
None
"""
host_name = socket.gethostname()
perforce_server = CFG.get_perforce_server()
ignore_file = os.path.join(
CFG.get_code_root(), "resources", "perforce", "perforce_ignore.txt"
)
logging.info("Setting Up Perforce Environment")
os.system("p4 set P4PORT={}".format(perforce_server))
os.system("p4 set P4HOST={}".format(host_name))
os.system("p4 set P4IGNORE={}".format(ignore_file))
os.system("p4 info")
user_name = CFG.alc_user
super_user = CFG.get_perforce_super_user()
if not check_for_user(user_name):
print(f"Creating Perforce User: {user_name}")
create_user(user_name=user_name, super_user=super_user)
os.system("p4 set P4USER={}".format(user_name))
if "__main__" == __name__:
# set logging debug level
logging.basicConfig(level=logging.DEBUG)
setup_perforce_environment_variables()