1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# Make a complete cfg for thorshammer package from a csv list
# accepted list delimiters: , or ;. Spaces ar not allowed! Replace all german umlauts
# with ue, oe, ae, ss to avoid problems with thorshammer package
#
$classPath="C:\Users\dpstory\Desktop\Test Folder\target\myClass"
$instrPath="C:\Users\dpstory\Desktop\Test Folder\target\_Thor"
# Example list:
# First Name|Last Name|Folder
# Anton;Müller;AM29914M
#\classMember{Anton}{Mueller}{AM299/instructor-name}
# Anton;Müller;*C:/.../AM299
#\classMember{Anton}{Mueller}*{C:/.../AM299/instructor-name}
#
If ( $args.Length -eq 0 ) {
Write-Host "A CSV file of the class members is required," `
"see documentation"
exit
} else {
$listName=$args[0]
if(Test-Path -Path ./$listName.csv) {
} else {
Write-Host "Cannot find the file `"$listName.csv`" in the current folder," `
"check the spelling, do not include the extension."
exit
}
}
get-content "$listName.csv" | foreach {
"\classMember{" + $_ `
+ "/_Thor}" `
-Replace ";", "}{" `
-Replace ",","}{" `
-Replace "{\*", "*{" } | Set-Content "convertedList.cfg"
# Store convertedList.cfg in a variable
$convertedListCfg = get-content .\convertedList.cfg -Raw
# function to replace umlauts
# https://www.datenteiler.de/powershell-umlaute-ersetzen/
function Replace-Umlaute ([string]$s) {
$UmlautObject = New-Object PSObject | Add-Member -MemberType NoteProperty -Name Name -Value $s -PassThru
# hash tables are by default case insensitive
# we have to create a new hash table object for case sensitivity
$characterMap = New-Object system.collections.hashtable
$characterMap.ä = "ae"
$characterMap.ö = "oe"
$characterMap.ü = "ue"
$characterMap.ß = "ss"
$characterMap.Ä = "Ae"
$characterMap.Ü = "Ue"
$characterMap.Ö = "Oe"
foreach ($property in "Name") {
foreach ($key in $characterMap.Keys) {
$UmlautObject.$property = $UmlautObject.$property -creplace $key,$characterMap[$key]
}
}
$UmlautObject
}
# replace umlauts in .cfg and make a correctedListCfg
$correctedListCfg = Replace-Umlaute "$convertedListCfg"
$correctedListCfg.Name
# Finally append correctedListCfg to desired
# cfg file, usually 00-class.cfg
add-content "00-class.cfg" "\classPath{$classPath)"
add-content "00-class.cfg" "\instrPath{$instrPath}"
add-content "00-class.cfg" $correctedListCfg.Name
Remove-Item convertedList.cfg
|