Here's a quick bash script I wrote to parse through Keep's .json'ish format and convert to Pet's TOML format. Hopefully this helps someone else facing the same issue.
#! /bin/bash
###Leif Gregory <leif@devtek.org>
###Copy Keep's commands.json file to the same folder as this script and run it.
###It will output a file in the same folder called snippet.toml. Make a backup
###copy of your old snippet.toml and move the new one into its place. Run
###"pet list" and hopefully you'll get a clean output. If not, pet will tell
###you which line of snippet.toml the error is on. Compare it with the original
###commands.json file.
#Usage [scriptname]
#e.g. ./keep2pet
inputfile=./commands.json #Typically found in $HOME/.keep/
outputfile=./snippet.toml #Move this file to, typically, $HOME/.config/pet/
#Keep's commands.json starts with { and ends with } which the first and last
#sed take care of. The 2nd sed breaks up the single line with all commands
#and descriptions into one command and description per line. The delimiter is
#unfortunately a comma and I had lots of commas in my descriptions. So, it
#breaks on '", "' which means it removes the leading and trailing double quotes.
#The 3rd and 4th sed fixes those. Lastly, it writes all these lines to a temp
#file which gets removed at the end.
cat $inputfile | sed 's/^{\"//g' | sed 's/\", \"/\n/g' | sed 's/^/"/g' | sed 's/$/"/g' | sed 's/\"}$//g' > ./keep2pet-temp
while read -r line
do
#Now we're down to one command and description delimited by ": "
command=$(awk -F ": " '{print $1}' <<< $line)
description=$(awk -F ": " '{print $2}' <<< $line)
#Write each commands.json snippet to TOML format file
echo "
[[snippets]]
description = $description
command = $command
output = \"\"" >> "$outputfile"
done < keep2pet-temp
rm ./keep2pet-temp
This comment has been removed by a blog administrator.
ReplyDelete