scripts voor programmeersessie activiteiten

Werken aan mijn repo's doe ik tegenwoordig op een standaard manier, met een script dat standaard een vaste set bestanden opent bijvoorbeeld. Dit wordt gestuurd door configuratiebestanden die ook weer met scripts bijgehouden kunnen worden:

binfab session.editconf <project>

definieer de variabelen en tools om in een sessie voor een gegeven repo te gebruiken. Dit opent het ".sessionrc" bestand

binfab session.edittestconf <project>

defineer de locaties van testscripts and te testen modules voor een gegeven repo. Dit opent het ".rurc" bestand

Momenteel komt een programmeersessie neer op het openstaan van een aantal VI(m) sessies voor groepen sourcefiles, FileFindR zoekvensters voor deze groepen, het open hebben van check-repo, een dtree met de repo-specifieke notities, en een (groot gemaakt) terminal venster om bv. unittests in uit te voeren. De groepen source files zijn gedefinieerd met namen die ook geëxporteerd worden als omgevingsvariabelen voor de openstaande terminal, zodat ik de tools opnieuw kan oproepen als ik ze per ongeluk sluit. Om dit alles op te zetten heb ik het volgende commando:

binfab session.start <project>

Wat dit ook doet is een bestandje wegschrijven met daarin de ids van de gestarte processen, dat maakt het mogelijk de sessie in één keer af te sluiten met

binfab session.end [<project>]

dat de betreffende processen killt. Ik heb ook een commando gemaakt om alleen maar te laten zien om welke processen het gaat:

binfab session.get-info [<project>]

Voor het geval om een of andere reden een bestandje met process ids is blijven hangen waardoor het lijkt alsof al een sessie bestaat voor een project heb ik een functie gemaakt om dit te verwijderen:

binfab session.delete <project>

Het is een beetje overbodig geworden doordat ik later bedacht om bij start een --force parameter mee te kunnen geven.

Het bruusk afbreken van processen vond ik naderhand toch een beetje rigoureus en het had het nadeel dat de commandohistorie van de terminal niet bewaard werd. Daarom heb ik een andere functie gemaakt:

binfab session.create <project>

die op basis van wat in .sessionrc staat een script maakt dat opgeslagen wordt als <project>.session en in een terminal gesourced kan worden. Dat heeft dan wel weer het nadeel dat de gestarte programma's stuk voor stuk met de hand moeten worden beëindigd.

In deze verzameling zit nog een functie die misschien meer in repo.py thuishoort:

binfab session.newproject

Om een nieuw (Python) software project te beginnen in een gestandaardiseerde structuur. Dit was bedoeld als een poging om iets te doen met het oog op packaging en kan tegenwoordig gedaan worden met allerlei andere tools (die ik geen van alle gebruik).