demangle.sh 897 B

12345678910111213141516171819202122232425262728293031
  1. #!/bin/zsh
  2. # A `realpath` alternative using the default C implementation.
  3. filepath() {
  4. [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
  5. }
  6. REPO_ROOT="$(dirname $(dirname $(filepath $0)))"
  7. cd $REPO_ROOT
  8. # Get the language and input file path from the arguments
  9. language=${1:-"swift"}
  10. input_file=${2:-"$(dirname $(filepath $0))/demangle.txt"}
  11. echo "Demangling $input_file using $language mode"
  12. # Read each line of the input file
  13. while IFS= read -r line; do
  14. # Demangle the line using the appropriate tool based on the language
  15. if [[ $language == "swift" ]]; then
  16. xcrun swift-demangle "$line"
  17. elif [[ $language == "c++" ]]; then
  18. c++filt "$line"
  19. else
  20. echo "Invalid language: $language"
  21. echo "Usage: demangle.sh <language> <input file>"
  22. echo "language: swift or c++, [default]: swift"
  23. echo "input file: [default] demangle.txt"
  24. exit 1
  25. fi
  26. done < "$input_file"