97 lines
6.4 KiB
Plaintext
97 lines
6.4 KiB
Plaintext
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
|