#!/bin/sh set -eu SLIC3R_CONFIG_BASE="${HOME}/.Slic3r" preprocess() { local printer="${1}" local filament="${2}" shift 2 local retraction_temperature= local wiping_temperature= local probing_temperature= local removal_bed_temperature= . "${SLIC3R_CONFIG_BASE}/filament/${filament}.rc" for gcode in 'before_layer' 'end' 'layer' 'start' 'toolchange'; do # TODO done } preprocess_all() { local rc= local filament= local gcode= local printers_seen= local printer= for rc in "${SLIC3R_CONFIG_BASE}/filament/"*'.rc'; do filament="${rc##*/}" filament="${filament%.rc}" printers_seen=' ' for gcode in "${SLIC3R_CONFIG_BASE}/printer/"*' - '*'.gcode'; do printer="${gcode##*/}" printer="${printer% - *.gcode}" case "${printers_seen}" in *" ${printer} "*) continue # Skip seen printers esac preprocess "${printer}" "${filament}" printers_seen="${printers_seen}${printer} " done done } main() { preprocess_all } main "${@}"