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
 |