67 lines
2.3 KiB
Bash
Executable File
67 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
|
# #
|
|
# Conversor de TXT antigo para MD - Pedro T. R. Pinheiro - 22JAN22 #
|
|
# --------- -- --- ------ ---- -- - ----- -- -- -------- - ------- #
|
|
# #
|
|
# Este conversor transforma arquivos de texto puro por mim escritos #
|
|
# no passado em formato Markdown, para que possam ser corretamente #
|
|
# arquivados neste repositório. Provavelmente só é útil para mim, mas #
|
|
# seguramente pode ser adaptado a outros usos. #
|
|
# -- #
|
|
# Old TXT to MD converter: converts my old plain text files into the #
|
|
# Markdown format, so they can correctly archived in this repository. #
|
|
# Probably useful only to me, though it surely can be adapted to suit #
|
|
# the needs of different people. #
|
|
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
|
|
|
author="Pedro T. R. Pinheiro"
|
|
file=$1
|
|
|
|
if [ ! -f $file ]; then
|
|
echo "$file: No such file or directory."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -r $file ]; then
|
|
echo "$file: Can't stat."
|
|
exit 2
|
|
fi
|
|
|
|
# Metadata
|
|
encoding=`file --mime-encoding ${file} | cut -d" " -f2`
|
|
lastMod=`stat -c %y ${file}`
|
|
presentDate=`date --rfc-3339=seconds`
|
|
title=`cat ${file} | head -1`
|
|
titleUnicode=`echo -ne ${title} | iconv -f ${encoding}`
|
|
|
|
# File contents
|
|
content=`cat ${file}`
|
|
contentUnicode=`echo -ne "${content}" | iconv -f ${encoding}`
|
|
# Lines can't be longer than 72 (-w 72), nor can
|
|
# words be broken (-s, only breaks on white space)
|
|
contentWraped=`echo "${contentUnicode}" | fold -w 72 -s`
|
|
|
|
yamlHeader=`cat << EOF
|
|
---
|
|
author: ${author}
|
|
title: ${titleUnicode}
|
|
date: "${lastMod}"
|
|
comment: "Original file written in ${encoding}, at ${lastMod}.
|
|
Converted to Markdown at ${presentDate}"
|
|
origDate: "${lastMod}"
|
|
convDate: "${presentDate}"
|
|
---
|
|
EOF`
|
|
|
|
output="${yamlHeader}\n\n${contentWraped}\n"
|
|
|
|
# Filename
|
|
# Not really useful to all people... Strong implies there's
|
|
# a ".txt" suffix to the filename.
|
|
baseName=`basename $file`
|
|
destFile=`echo $baseName | sed "s/.txt/.md/g"`
|
|
|
|
echo -ne "$output" > $destFile
|