83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| README_DIRS=(
 | |
|     apps
 | |
|     libs
 | |
|     models
 | |
|     tools
 | |
|     .
 | |
| )
 | |
| 
 | |
| set -e
 | |
| 
 | |
| cargo build --manifest-path "scripts/modeltool/Cargo.toml" --release
 | |
| 
 | |
| MODELTOOL="$(realpath "scripts/modeltool/target/release/modeltool")"
 | |
| 
 | |
| function readme_model {
 | |
|     echo -e "\x1B[1m$1\x1B[0m" >&2
 | |
| 
 | |
|     pushd "$1" > /dev/null
 | |
|         cp README.md.in README.md
 | |
| 
 | |
|         echo >> README.md
 | |
|         echo "## Contents" >> README.md
 | |
|         echo >> README.md
 | |
|         "$MODELTOOL" . >> README.md
 | |
|     popd > /dev/null
 | |
| }
 | |
| 
 | |
| for dir in models/*/
 | |
| do
 | |
|     readme_model "${dir%/}"
 | |
| done
 | |
| 
 | |
| function readme_line {
 | |
|     echo -e "  \x1B[1m$1\x1B[0m" >&2
 | |
| 
 | |
|     name="$(basename "$1")"
 | |
|     description=""
 | |
| 
 | |
|     readme="$(find "$1" -maxdepth 1 -iname README.md)"
 | |
|     if [ -n "$readme" ]
 | |
|     then
 | |
|         # Get first line, removing the trailing pounds and spaces
 | |
|         description=" - $(head -n 1 "$readme" | sed -e 's/^[#[:space:]]*//')"
 | |
|     fi
 | |
| 
 | |
|     submodule="$(git submodule status "$1" 2> /dev/null | cut -d ' ' -f 3 || true)"
 | |
|     if [ "$submodule" == "$1" ]
 | |
|     then
 | |
|         # Link to submodule URL
 | |
|         origin="$(git -C "$1" remote get-url origin)"
 | |
|         echo "- [$name]($origin)$description"
 | |
|     else
 | |
|         # Link to directory
 | |
|         echo "- [$name](./$1)$description"
 | |
|     fi
 | |
| }
 | |
| 
 | |
| function readme_dir {
 | |
|     echo -e "\x1B[1m$1\x1B[0m" >&2
 | |
| 
 | |
|     pushd "$1" > /dev/null
 | |
|         cp README.md.in README.md
 | |
| 
 | |
|         echo >> README.md
 | |
|         echo "## Contents" >> README.md
 | |
|         echo >> README.md
 | |
|         for dir in */
 | |
|         do
 | |
|             if ! git check-ignore --quiet "${dir}"
 | |
|             then
 | |
|                 readme_line "${dir%/}" >> README.md
 | |
|             fi
 | |
|         done
 | |
|     popd > /dev/null
 | |
| }
 | |
| 
 | |
| for dir in "${README_DIRS[@]}"
 | |
| do
 | |
|     readme_dir "$dir"
 | |
| done
 |