demangle.sh 900 B

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