1
1
# !/usr/bin/env pwsh
2
+ $S = [IO.Path ]::PathSeparator # path separator. WIN:';', UNIX:":"
3
+
2
4
$IDF_PATH = $PSScriptRoot
3
5
4
6
Write-Output " Setting IDF_PATH: $IDF_PATH "
5
- $env: IDF_PATH = $IDF_PATH
7
+ $env: IDF_PATH = $IDF_PATH
6
8
7
9
Write-Output " Adding ESP-IDF tools to PATH..."
8
- $OLD_PATH = $env: PATH.split ([ IO.Path ]::PathSeparator ) | Select-Object - Unique # array without duplicates
10
+ $OLD_PATH = $env: PATH.split ($S ) | Select-Object - Unique # array without duplicates
9
11
# using idf_tools.py to get $envars_array to set
10
12
$envars_raw = python $IDF_PATH / tools/ idf_tools.py export -- format key- value
11
13
if ($LASTEXITCODE -ne 0 ) { exit $LASTEXITCODE } # if error
@@ -14,40 +16,46 @@ $envars_array # will be filled like:
14
16
# [
15
17
# [vname1, vval1], [vname2, vval2], ...
16
18
# ]
17
- foreach ($line in $envars_raw )
18
- {
19
+ foreach ($line in $envars_raw ) {
19
20
$pair = $line.split (" =" ) # split in name, val
20
21
$var_name = $pair [0 ].Trim() # trim spaces on the ends of the name
21
22
$var_val = $pair [1 ].Trim() # trim spaces on the ends of the val
22
- $envars_array += ( , ($var_name , $var_val ))
23
+ $envars_array += ( , ($var_name , $var_val ))
23
24
}
24
25
25
- foreach ($pair in $envars_array ) # setting the values
26
- {
26
+ foreach ($pair in $envars_array ) {
27
+ # setting the values
27
28
$var_name = $pair [0 ].Trim() # trim spaces on the ends of the name
28
29
$var_val = $pair [1 ].Trim() # trim spaces on the ends of the val
29
- if ($var_name -eq " PATH" ){
30
+ if ($var_name -eq " PATH" ) {
30
31
# trim "%PATH%" or "`$PATH"
31
- if ($IsWindows ){
32
- $var_val = $var_val.Trim ([ IO.Path ]::PathSeparator + " %PATH%" )
33
- }else {
34
- $var_val = $var_val.Trim ([ IO.Path ]::PathSeparator + " `$ PATH" )
32
+ if ($IsWindows ) {
33
+ $var_val = $var_val.Trim ($S + " %PATH%" )
34
+ } else {
35
+ $var_val = $var_val.Trim ($S + " `$ PATH" )
35
36
}
36
37
# apply
37
- $env: PATH = $var_val + [ IO.Path ]::PathSeparator + $env: PATH
38
+ $env: PATH = $var_val + $S + $env: PATH
38
39
} else {
39
- New-Item - Path " env:$var_name " - Value " $var_val "
40
+ New-Item - Path " env:$var_name " - Value " $var_val " - Force
40
41
}
41
42
}
42
43
44
+ # Allow calling some IDF python tools without specifying the full path
45
+ # ${IDF_PATH}/tools is already added by 'idf_tools.py export'
46
+ $IDF_ADD_PATHS_EXTRAS = [IO.Path ]::Combine(${IDF_PATH} , " components" , " esptool_py" , " esptool" )
47
+ $IDF_ADD_PATHS_EXTRAS += ${S} + [IO.Path ]::Combine(${IDF_PATH} , " components" , " app_update" )
48
+ $IDF_ADD_PATHS_EXTRAS += ${S} + [IO.Path ]::Combine(${IDF_PATH} , " components" , " espcoredump" )
49
+ $IDF_ADD_PATHS_EXTRAS += ${S} + [IO.Path ]::Combine(${IDF_PATH} , " components" , " partition_table" )
50
+ $env: PATH = $IDF_ADD_PATHS_EXTRAS + $S + $env: PATH
51
+
43
52
# Compare Path's OLD vs. NEW
44
- $NEW_PATH = $env: PATH.split ([ IO.Path ]::PathSeparator ) | Select-Object - Unique # array without duplicates
53
+ $NEW_PATH = $env: PATH.split ($S ) | Select-Object - Unique # array without duplicates
45
54
$dif_Path = Compare-Object - ReferenceObject $OLD_PATH - DifferenceObject $NEW_PATH - PassThru
46
- if ($dif_Path -ne $null )
47
- {
55
+ if ($dif_Path -ne $null ) {
56
+ Write-Output " `n Added to PATH `n ------------- "
48
57
Write-Output $dif_Path
49
- }
50
- else {
58
+ } else {
51
59
Write-Output " No directories added to PATH:"
52
60
Write-Output $OLD_PATH
53
61
}
0 commit comments