mirror of https://github.com/fafhrd91/actix-web
				
				
				
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/bin/sh
 | 
						|
 | 
						|
set -euo pipefail
 | 
						|
 | 
						|
bold="\033[1m"
 | 
						|
reset="\033[0m"
 | 
						|
 | 
						|
unreleased_for() {
 | 
						|
    DIR=$1
 | 
						|
 | 
						|
    CARGO_MANIFEST=$DIR/Cargo.toml
 | 
						|
 | 
						|
    # determine changelog file name
 | 
						|
    if [ -f "$DIR/CHANGES.md" ]; then
 | 
						|
        CHANGELOG_FILE=$DIR/CHANGES.md
 | 
						|
    elif [ -f "$DIR/CHANGELOG.md" ]; then
 | 
						|
        CHANGELOG_FILE=$DIR/CHANGELOG.md
 | 
						|
    else
 | 
						|
        echo "No changelog file found"
 | 
						|
        exit 1
 | 
						|
    fi
 | 
						|
 | 
						|
    # get current version
 | 
						|
    PACKAGE_NAME="$(sed -nE 's/^name ?= ?"([^"]+)"$/\1/ p' "$CARGO_MANIFEST" | head -n 1)"
 | 
						|
    CURRENT_VERSION="$(sed -nE 's/^version ?= ?"([^"]+)"$/\1/ p' "$CARGO_MANIFEST")"
 | 
						|
 | 
						|
    CHANGE_CHUNK_FILE="$(mktemp)"
 | 
						|
 | 
						|
    # get changelog chunk and save to temp file
 | 
						|
    cat "$CHANGELOG_FILE" |
 | 
						|
        # skip up to unreleased heading
 | 
						|
        sed '1,/Unreleased/ d' |
 | 
						|
        # take up to previous version heading
 | 
						|
        sed "/$CURRENT_VERSION/ q" |
 | 
						|
        # drop last line
 | 
						|
        sed '$d' \
 | 
						|
            >"$CHANGE_CHUNK_FILE"
 | 
						|
 | 
						|
    # if word count of changelog chunk is 0 then exit
 | 
						|
    if [ "$(wc -w "$CHANGE_CHUNK_FILE" | awk '{ print $1 }')" = "0" ]; then
 | 
						|
        return 0;
 | 
						|
    fi
 | 
						|
 | 
						|
    echo "${bold}# ${PACKAGE_NAME}${reset} since ${bold}v$CURRENT_VERSION${reset}"
 | 
						|
    cat "$CHANGE_CHUNK_FILE"
 | 
						|
}
 | 
						|
 | 
						|
files=$(fd --threads=1 --min-depth=2 --absolute-path 'CHANGE\w+.md')
 | 
						|
 | 
						|
for f in $files; do
 | 
						|
    unreleased_for $(dirname $f) || true
 | 
						|
done
 |