5
5
6
6
function Invoke-TheUplifter42 ($options ) {
7
7
8
+ # include telemetry helper
9
+ . " $PSScriptRoot /Uplift.AppInsights.ps1"
10
+
8
11
# include core fucntions, then logger, and other utils
9
12
. " $PSScriptRoot /Invoke-Uplift-Core.ps1"
10
13
@@ -37,13 +40,28 @@ function Invoke-TheUplifter42($options) {
37
40
return ' 0.1.0'
38
41
}
39
42
43
+ $cmdElapsedMilliseconds = $null
44
+
45
+ $cmdStopwatch = [System.Diagnostics.Stopwatch ]::StartNew()
46
+ $cmdException = $null
47
+
48
+ $cmdName = " "
49
+ $cmdOptions = @ ()
50
+
51
+ $cmdCommandOptions = $null
52
+
40
53
try
41
54
{
42
55
$commandOptions = Invoke-CommandOptionsParse $options
56
+ $cmdCommandOptions = $commandOptions
57
+
43
58
$script :CommandOptions = $commandOptions
44
59
45
60
Write-DebugMessage " Running with options: `r`n $ ( $commandOptions | ConvertTo-Json - Depth 3 ) "
46
61
62
+ $cmdName = $commandOptions.First
63
+ $cmdOptions = $options
64
+
47
65
switch ($commandOptions.First )
48
66
{
49
67
" help" { return (Invoke-ActionHelp $commandOptions ) }
@@ -59,7 +77,60 @@ function Invoke-TheUplifter42($options) {
59
77
Write-ErrorMessage " General error: $ ( $_.Exception ) "
60
78
Write-ErrorMessage $_.Exception
61
79
80
+ $cmdException = $_
81
+
62
82
return 1
83
+ } finally {
84
+
85
+ $cmdStopwatch.Stop ()
86
+ $cmdElapsedMilliseconds = $cmdStopwatch.ElapsedMilliseconds
87
+
88
+ # update telemetry
89
+ try {
90
+ Confirm-UpliftUpliftAppInsightClient
91
+
92
+ # masked values
93
+ $maskedValues = @ (
94
+ [string ](Get-CommandOptionValue @ (" -r" , " -repository" ) $options )
95
+ )
96
+
97
+ $cmdCommandOptionValue = [String ]::Join(" " , $cmdOptions )
98
+
99
+ foreach ($maskedValue in $maskedValues ) {
100
+ if ([string ]::IsNullorEmpty($maskedValue ) -eq $True ) { continue ; }
101
+
102
+ $cmdCommandOptionValue = $cmdCommandOptionValue.Replace ($maskedValue , ' *****' )
103
+ }
104
+
105
+ $eventHash = @ {
106
+ " cmd_version" = (Get-UpliftVersion )
107
+ " cmd_name" = $cmdName
108
+ " cmd_elapsed" = $cmdElapsedMilliseconds
109
+ " cmd_options" = $cmdCommandOptionValue
110
+ }
111
+
112
+ if ($null -ne $cmdCommandOptions ) {
113
+ $eventHash [" cmd_option_first" ] = $cmdCommandOptions.First
114
+ $eventHash [" cmd_option_second" ] = $cmdCommandOptions.Second
115
+ $eventHash [" cmd_option_third" ] = $cmdCommandOptions.Third
116
+ }
117
+
118
+ $eventProps = New-UpliftAppInsighsProperties $eventHash
119
+
120
+ if ($null -ne $cmdException ) {
121
+ $eventProps.Add (" cmd_error" , $cmdException.ToString ())
122
+ }
123
+
124
+ New-UpliftTrackEvent " uplift-invoke" $eventProps
125
+
126
+ if ($null -ne $cmdException ) {
127
+ New-UpliftTrackException $cmdException.Exception $eventProps $null
128
+ }
129
+
130
+ } catch {
131
+ Write-WarnMessage " [!] Cannot use AppInsight, please report this error or use UPLF_NO_APPINSIGHT env variable to disable it."
132
+ Write-WarnMessage " [!] $_ "
133
+ }
63
134
}
64
135
}
65
136
0 commit comments