@include "_LpHelperFunctions.dsi"; @include "_Paths.dsi"; @include "_VersionChecks.dsi"; #-------------------------------------------------------- # Gets a boolean environment variable #-------------------------------------------------------- Sub(Bool) Ops_GetEnvBool(IN string $envName) { string $value; if (!GetEnv($envName, $value)) { return false; } return $value; } #-------------------------------------------------------- # Gets an integer environment variable #-------------------------------------------------------- Sub(Int) Ops_GetEnvInt(IN string $envName) { string $value; if (!GetEnv($envName, $value)) { return 0; } return $value; } #-------------------------------------------------------- # Gets a string environment variable #-------------------------------------------------------- Sub(String) Ops_GetEnvString(IN string $envName) { string $value; if (!GetEnv($envName, $value)) { return ""; } return $value; } #-------------------------------------------------------- # Get Ops resource path #-------------------------------------------------------- Sub Ops_GetResourcePath(REF string $resPath) { if (!GetEnv("Ops_ResDir", $resPath)) { string $dir; if (!_GetLpResourcesDirectory($dir)) { return false; } $resPath = "$dir/Ops"; _NormalizePath($resPath, _IsWindowsLocal()); SetEnv("Ops_ResDir", $resPath); } return true; } #-------------------------------------------------------- # Get path that Ops data directory #-------------------------------------------------------- Sub Ops_GetDataPath(REF string $dataDir) { if (!GetEnv("Ops_DataDir", $dataDir)) { string $dir; if (!_GetLpResourcesDirectory($dir)) { return false; } $dataDir = "$dir/Ops/Data"; _NormalizePath($dataDir, _IsWindowsLocal()); SetEnv("Ops_DataDir", $dataDir); } return true; } #-------------------------------------------------------- # Get path that Ops scripts are run out of #-------------------------------------------------------- Sub Ops_GetScriptsPath(REF string $scriptsDir) { if (!GetEnv("Ops_ScriptsDir", $scriptsDir)) { string $dir; if (!_GetLpResourcesDirectory($dir)) { return false; } $scriptsDir = "$dir/Ops/Scripts"; _NormalizePath($scriptsDir, _IsWindowsLocal()); SetEnv("Ops_ScriptsDir", $scriptsDir); } return true; } #-------------------------------------------------------- # Get system path #-------------------------------------------------------- Sub Ops_GetSystemPath(REF string $systemPath) { if (!GetEnv("Ops_SystemDir", $systemPath)) { Ops_GetSystemPaths(); if (!GetEnv("Ops_SystemDir", $systemPath)) { echo("Could not get system path", ERROR); return false; } } return true; } #-------------------------------------------------------- # Get temp path #-------------------------------------------------------- Sub Ops_GetTempPath(REF string $tempPath) { if (!GetEnv("Ops_TempDir", $tempPath)) { Ops_GetSystemPaths(); if (!GetEnv("Ops_TempDir", $tempPath)) { echo("Could not get temp path", ERROR); return false; } } return true; } #-------------------------------------------------------- # Get path that Ops tools are run out of #-------------------------------------------------------- Sub Ops_GetToolsPath(REF string $toolsDir) { if (!GetEnv("Ops_ToolsDir", $toolsDir)) { string $dir; if (!_GetLpResourcesDirectory($dir)) { return false; } $toolsDir = "$dir/Ops/Tools"; _NormalizePath($toolsDir, _IsWindowsLocal()); SetEnv("Ops_ToolsDir", $toolsDir); } return true; } #-------------------------------------------------------- # Get windows path #-------------------------------------------------------- Sub Ops_GetWindowsPath(REF string $windowsPath) { if (!GetEnv("Ops_WindowsDir", $windowsPath)) { Ops_GetSystemPaths(); if (!GetEnv("Ops_WindowsDir", $windowsPath)) { echo("Could not get windows path", ERROR); return false; } } return true; } #-------------------------------------------------------- # Get paths #-------------------------------------------------------- Sub Ops_GetSystemPaths() { @echo off; @record on; if (!`systempaths`) { echo("Could not get system paths", ERROR); return false; } @record off; string $dir; if (GetCmdData("TempDir::Location", $dir)) { _NormalizePath($dir, _IsWindows()); SetEnv("Ops_TempDir", $dir); } if (GetCmdData("WindowsDir::Location", $dir)) { _NormalizePath($dir, _IsWindows()); SetEnv("Ops_WindowsDir", $dir); } if (GetCmdData("SystemDir::Location", $dir)) { _NormalizePath($dir, _IsWindows()); SetEnv("Ops_SystemDir", $dir); } return true; } #-------------------------------------------------------- # Open the given text file in a viewer #-------------------------------------------------------- Sub Ops_PopupText(IN string $filename) { if (_IsUnixLocal()) { return `local run -command "perl -e \\"exec('emacs $filename')\\"" -redirect`; } else { return `local run -command "perl -e \\"exec('wordpad $filename')\\"" -redirect`; } } #-------------------------------------------------------- # Returns a rendom number less than 65535 in the variable $number #-------------------------------------------------------- Sub(Bool) Ops_GetRandomNumber(OUT string $number){ @record on; `local run -command "perl -e \\"print int(rand(65534));\\"" -redirect`; @record off; if(!(GetCmdData("ProcessOutput::output", $number))){ echo "bad GetCmdData"; return false; } return true; } #------------------------------------------------------------------------------- # Ops_RecordToolUse # Records the use of a tool # Params: # name - The name of the tool # version - The tool version # usage - Comma-separated list of ACCESSSED,DEPLOYED,DELETED # status - Successful|Unsuccessful # location - Name and full path to tool on box # comments - Any comments #------------------------------------------------------------------------------- Sub Ops_RecordToolUse(IN STRING $name, IN STRING $version, IN STRING $usage, IN STRING $status, IN STRING $location, IN STRING $comments) { if ($name == "") { echo "* No name given -- cannot record tool use"; return false; } string $usedToolDir = "UsedTools"; string $time; GetTimestamp($time); # replace any spaces in test @regex-global on; string $fixedName = $name; RegExSub(" ", "_", $fixedName); string $filename = "$fixedName\_$time.xml"; string $logDir; if (!_GetLpLogsDirectory($logDir)) { echo "* _RecordToolUse : Failed to get logs directory"; return false; } FileMkdir("$logDir/$usedToolDir"); # fix any reserved XML characters string $xmlName = $name; RegExSub("&", "&", $xmlName); RegExSub("<", "<", $xmlName); RegExSub(">", ">", $xmlName); string $xmlVersion = $version; RegExSub("&", "&", $xmlVersion); RegExSub("<", "<", $xmlVersion); RegExSub(">", ">", $xmlVersion); string $xmlUsage = " "; if (StrLen($usage) > 0) { $xmlUsage = $usage; RegExSub("&", "&", $xmlUsage); RegExSub("<", "<", $xmlUsage); RegExSub(">", ">", $xmlUsage); } string $xmlStatus = " "; if (StrLen($status) > 0) { $xmlStatus = $status; RegExSub("&", "&", $xmlStatus); RegExSub("<", "<", $xmlStatus); RegExSub(">", ">", $xmlStatus); } string $xmlLocation = " "; if (StrLen($location) > 0) { $xmlLocation = $location; RegExSub("&", "&", $xmlLocation); RegExSub("<", "<", $xmlLocation); RegExSub(">", ">", $xmlLocation); } string $xmlComments = ""; if (StrLen($comments) > 0) { $xmlComments = $comments; RegExSub("&", "&", $xmlComments); RegExSub("<", "<", $xmlComments); RegExSub(">", ">", $xmlComments); } string $lines; _AppendString($lines, '\n'); _AppendString($lines, '\n'); _AppendString($lines, ' $xmlName\n'); _AppendString($lines, ' $xmlVersion\n'); _AppendString($lines, ' $xmlUsage\n'); _AppendString($lines, ' $xmlStatus\n'); _AppendString($lines, ' $xmlLocation\n'); _AppendString($lines, ' $xmlComments\n'); _AppendString($lines, '\n'); if (!WriteFile("$logDir/$usedToolDir/$filename", false, $lines)) { echo "* _RecordToolUse : Failed to write tool use information"; return false; } return true; } # END _RecordToolUse