Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
6.4 KiB

5 years ago
<EFBFBD><EFBFBD>Imports EnvDTE
Imports System.Diagnostics
Public Module Perforce
Function FindInPath(ByVal exeName As String)
Dim env = System.Environment.GetEnvironmentVariable("Path")
Dim Paths = Split(env, ";")
Dim Element
Dim p4Filename = ""
For Each Element In Paths
If Right(Element, 1) <> "\" And Right(Element, 1) <> "/" Then
Element = Element + "\"
End If
If System.IO.File.Exists(Element + exeName) Then
Return Element + exeName
End If
Next
FindInPath = ""
End Function
Function StripLastDir(ByVal curPath As String)
Dim testPath = curPath.Replace("/", "\")
Dim lastIndex = testPath.LastIndexOf("\")
If lastIndex = -1 Then
Return ""
Else
Return Left(testPath, lastIndex)
End If
End Function
Function EZRunCommand(ByVal exeName As String, ByVal args As String, ByVal p4StartDir As String)
' Find the p4 command.
Dim p4Filename = FindInPath(exeName)
If p4Filename = "" Then
MsgBox("Can't find " + exeName + " in path.")
Return ""
End If
' Run p4 edit <filename>
Dim p = New System.Diagnostics.Process
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardError = True
p.StartInfo.Arguments = args
p.StartInfo.FileName = p4Filename
p.StartInfo.CreateNoWindow = True
p.StartInfo.WorkingDirectory = ""
p.Start()
Dim outputStr = p.StandardError.ReadToEnd()
p.WaitForExit()
If p.ExitCode <> 0 Then
MsgBox(outputStr)
Return False
Else
Return True
End If
End Function
Sub OutputDebugStr(ByVal str As String)
Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
' Create handles to the Output window and its panes.
Dim OW As OutputWindow = win.Object
Dim OWp As OutputWindowPane
' Add a new pane to the Output window.
Try
OWp = OW.OutputWindowPanes.Item("Build")
Catch e As System.Exception
OWp = OW.OutputWindowPanes.Add("Build")
End Try
' Add a line of text to the new pane.
OWp.OutputString(str + System.Environment.NewLine)
End Sub
Sub EditCurrentFile()
If EZRunCommand("p4.exe", "edit " + Chr(34) + ActiveDocument.FullName + Chr(34), ActiveDocument.FullName) Then
OutputDebugStr(ActiveDocument.FullName + " edited successfully.")
End If
End Sub
Sub AddCurrentFile()
If EZRunCommand("p4.exe", "add " + Chr(34) + ActiveDocument.FullName + Chr(34), ActiveDocument.FullName) Then
OutputDebugStr(ActiveDocument.FullName + " added successfully.")
End If
End Sub
Sub RevertCurrentFile()
If EZRunCommand("p4.exe", "revert " + Chr(34) + ActiveDocument.FullName + Chr(34), ActiveDocument.FullName) Then
OutputDebugStr(ActiveDocument.FullName + " reverted successfully.")
End If
End Sub
End Module