github.com/Andyfoo/golang/x/sys@v0.0.0-20190901054642-57c1bf301704/windows/mkknownfolderids.bash (about)

     1  #!/bin/bash
     2  
     3  # Copyright 2019 The Go Authors. All rights reserved.
     4  # Use of this source code is governed by a BSD-style
     5  # license that can be found in the LICENSE file.
     6  
     7  set -e
     8  shopt -s nullglob
     9  
    10  knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)"
    11  [[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; }
    12  
    13  {
    14  	echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT."
    15  	echo
    16  	echo "package windows"
    17  	echo "type KNOWNFOLDERID GUID"
    18  	echo "var ("
    19  	while read -r line; do
    20  		[[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue
    21  		printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \
    22  			"${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \
    23  			$(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \
    24  			$(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" ))
    25  	done < "$knownfolders"
    26  	echo ")"
    27  } | gofmt > "zknownfolderids_windows.go"