38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| find . -type f \( -name "*.cpp" -o -name "*.hpp" \) -print0 | while IFS= read -r -d '' file; do
 | |
|   scope=false
 | |
|   ref=false
 | |
|   if grep -Eq "Scope\s*<" "$file"; then
 | |
|     scope=true
 | |
|     sed -i -E 's/(Scope)(\s*<)/memory::\1\2/g' "$file"
 | |
|   fi
 | |
|   if grep -Eq "Ref\s*<" "$file"; then
 | |
|     ref=true
 | |
|     sed -i -E 's/(Ref)(\s*<)/memory::\1\2/g' "$file"
 | |
|   fi
 | |
|   if grep -Eq "\bcreate_scope\b" "$file"; then
 | |
|     scope=true
 | |
|     sed -i -E 's/\b(create_scope)\b/memory::\1/g' "$file"
 | |
|   fi
 | |
|   if grep -Eq "\bcreate_ref\b" "$file"; then
 | |
|     ref=true
 | |
|     sed -i -E 's/\b(create_ref)\b/memory::\1/g' "$file"
 | |
|   fi
 | |
|   if $scope || $ref; then
 | |
|     includes=""
 | |
|     $scope && includes+="#include <memory/scope.hpp>\n"
 | |
|     $ref && includes+="#include <memory/reference.hpp>\n"
 | |
|     tmp=$(mktemp)
 | |
|     if [[ "$file" =~ \.hpp$ ]] && pragma_line=$(grep -En -m1 '^#pragma once' "$file" | cut -d: -f1); then
 | |
|       insert_line=$((pragma_line + 2))
 | |
|     else
 | |
|       insert_line=1
 | |
|     fi
 | |
|     head -n $((insert_line - 1)) "$file" > "$tmp"
 | |
|     echo -e "$includes" >> "$tmp"
 | |
|     tail -n +$insert_line "$file" >> "$tmp"
 | |
|     mv "$tmp" "$file"
 | |
|     clang-format -i "$file"
 | |
|   fi
 | |
| done
 |