1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
  
     | 
    
      #!/bin/sh
# Converts a changelog in md format to schelp format
# Usage: changelog_to_schelp.sh <input> <output> <version>
# Where <input> is in md format and <output> is in schelp
# If <version> is not provided, it will find the first match of 3.# in the file and use that
# You still have to add a related:: tag.
#
# Brian Heim, 2017-12-26
if [[ -z "$1" || -z "$2" ]]; then
    echo "Usage: changelog_to_schelp.sh <input> <output> <version>"
    echo "\t<input> must exist, <output> must not exist"
    echo "\tif <version> is not provided, this script will attempt to pull it from <input>"
    exit 1
elif [[ ! -e "$1" ]]; then
    echo "File '$1' does not exist"
    exit 1
elif [[ -e "$2" ]]; then
    echo "File '$2' exists"
    exit 1
fi
LOG=`cat "$1"`
VERSION="$3"
if [[ -z "$VERSION" ]]; then
    echo "No version provided, attempting to grab version from log"
    VERSION=`echo "$LOG" | grep -m 1 -o "[[:digit:]]\+\.[[:digit:]]\+"`
    echo "Found version: $VERSION"
fi
# header
echo "\
title:: News in $VERSION
summary:: A summary of news in SC $VERSION
categories:: News
" >> "$2"
# Section headers
LOG=`echo "$LOG" | perl -0777 -pe "s/([^\n]*)\n---*/section:: \1/igs"`
# `name` -> code::name::
LOG=`echo "$LOG" | sed "s/\\\`\([^\\\`]*\)\\\`/code:: \1 ::/g"`
# **bold** -> strong:: bold ::
LOG=`echo "$LOG" | sed "s/\*\*\([^\*]*\)\*\*/strong:: \1 ::/g"`
# turn links into plain text
LOG=`echo "$LOG" | sed "s/\[\([^]]*\)\]([^)]*)/\1/g"`
# remove parenthesized text with a # in it
LOG=`echo "$LOG" | sed "s/\s\+([0-9a-zA-Z, ]*#[#0-9a-zA-Z, ]\+)//g"`
echo "$LOG" >> "$2"
exit 0
 
     |