css_enhanced_waf/devtools/macros/Perforce.VB
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

96 lines
6.4 KiB
VB.net
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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