features_types=(chore feat style) changes_types=(refactor perf) fix_types=(fix revert) file="CHANGELOG.md" file_tmp="temp_log.txt" file_current_tmp="temp_current_log.txt" setType(){ echo "### $1" >> $file_tmp arr=("$@") echo "" > $file_current_tmp for i in "${arr[@]}" do git log --grep="$i" --oneline --no-merges --format="- %s %d by:%an" master..test >> $file_current_tmp done # remove duplicates sort -o $file_current_tmp -u $file_current_tmp cat $file_current_tmp >> $file_tmp echo "" >> $file_tmp # remove tmp current file [ -e $file_current_tmp ] && rm $file_current_tmp } echo "# Version XX.XX - XXXX-XX-XX" >> $file_tmp echo "" >> $file_tmp setType "Added 🆕" "${features_types[@]}" setType "Changed 📦" "${changes_types[@]}" setType "Fixed 🛠️" "${fix_types[@]}" cat $file >> $file_tmp mv $file_tmp $file