Hyppää sisältöön

Automaatioskripti: Journal-pohjien hallinta

Tämä sivu dokumentoi Bash-skriptin, jota käytettiin journal/-kansion aihekohtaisten oppimispäiväkirjapohjien dynaamiseen luomiseen ja metadatan hallintaan.

Skriptin tarkoitus

Skriptin tavoitteena oli automatisoida toistuva dokumentointityö ja varmistaa, että jokainen teknologia-aihe saa yhtenäisen metadata-blokin sekä rakenteen ilman, että yleistason esittelysivut (Phase-tasot) ylikirjoitetaan.

Tekninen toteutus

    #!/bin/bash

    # Kohdistetaan haku vain syvän tason aiheisiin (mindepth 3)
    # Ohittaa juuren ja phase-tasojen yleiskuvaukset.
    find . -mindepth 3 -name "index.md" | while read -r file; do

        # 1. Tunnistetaan Scene-numero polun perusteella
        parent_path=$(echo "$file" | cut -d'/' -f2)
        scene_num="?"
        case $parent_path in
            prologue) scene_num="I" ;;
            script)   scene_num="II" ;;
            suspense) scene_num="III" ;;
            finale)   scene_num="IV" ;;
        esac

        # 2. Haetaan aiheen nimi kansiorakenteesta
        topic_name=$(basename "$(dirname "$file")")
        today_iso=$(date +%Y-%m-%d)
        today_fi=$(date +%d.%m.%Y)

        # 3. Kirjoitetaan dynaaminen Markdown-sisältö
        cat <<EOF > "$file"
    ---
    title: "Scene \$scene_num, \$topic_name"
    scene: "\$scene_num"
    topic: "\$topic_name"
    date: \$today_iso
    status: "aloittamatta"
    prior_learning: false
    ---

    # PÄIVÄKIRJA: \$topic_name
    **Päivämäärä:** \`\$today_fi\`
    **Tuotantovaihe:** Scene \$scene_num
    **Tila:** Aloittamatta

    ### Luokitus
    * **Suunnittelu** – tavoitteet ja rajaukset määritelty
    * **Käynnissä** – aktiivinen opiskelu
    * **Arviointi** – itsearviointi ja puutteet
    * **Valmis** – kokonaisuus dokumentoitu

    ---

    ### Keskeiset opit
    - *Kirjaa tähän tärkeimmät oivallukset.*

    ### Tuotantomuistiinpanot
    **Haaste:** *Mitä ongelmia ilmeni?*
    **Ratkaisu:** *Miten ne ratkaistiin?*

    EOF

        echo "Päivitetty: \$file"
    done

Keskeiset mekanismit

  • find -mindepth 3: Rajaa suorituksen siten, että journal/index.md (syvyys 1) ja journal/prologue/index.md (syvyys 2) säilyvät koskemattomina yleiskuvauksina.
  • case-rakenne: Muuntaa kansion nimen (prologue) loogiseksi Scene-numeroksi (I).
  • Dynaaminen Metadata: Generoi ISO-standardin mukaisen päivämäärän automaatiota varten ja suomalaisen päivämäärän luettavuutta varten.

Tämä automaatio vähensi manuaalista copy-paste-työtä merkittävästi ja varmisti, että MkDocs-sivuston haku ja navigaatio toimivat ennustettavasti metadatan ansiosta.