Ignore:
Timestamp:
08/07/2026 04:43:07 PM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
ed5e7ab
Parents:
6248497
git-author:
roboburr <roboburr@…> (08/07/2026 04:43:06 PM)
git-committer:
roboburr <roboburr@…> (08/07/2026 04:43:07 PM)
Message:

De instance-naam is niet de site-slug, en vlagwaarden zijn geen argumenten

Vervolg op 6248497. Het instance-pad werkte, maar export-archive.mjs liz gaf
"onbekende site: liz" -- en liet je vervolgens raden.

## De naam van de instance is niet de slug van de site

De map onder de data-root en de systemd-unit heten liz; de SITE in die database
kan een andere slug hebben. Ze vallen vaak samen en soms niet, en dan stond je met
een foutmelding die niets prijsgaf.

Twee dingen veranderd:

  • de foutmelding zegt nu WAT er wel in die database staat, en als er helemaal geen sites in staan vraagt hij of DATABASE_PATH wel klopt
  • de site-slug is optioneel geworden. Staat er precies een site, dan is de keuze niet dubbelzinnig en hoef je hem niet te weten; hij meldt welke hij nam. Bij meerdere sites stopt hij en noemt ze.

node scripts/export-archive.mjs <instance> [site-slug]

## En een parseerfout die ik er zelf net in had gezet

args.filter(a => !a.startsWith('-')) pikt de WAARDE van een vlag op als
positioneel argument. Met liz --data-root /var/lib/klonkt werd /var/lib/klonkt
de site-slug. Gevonden bij het testen van het bovenstaande, en import-archive.mjs
had hem ook: daar zou het pad naar het archief verschoven zijn.

Nu een gedeelde splitsArgs() die weet welke vlaggen een waarde slikken.

Getoetst met een instance 'liz' waarvan de site 'lizzy' heet -- precies het geval
dat op productie omviel: zonder slug pakt hij lizzy en zegt dat, met de verkeerde
slug noemt hij wat er wel is, en met de juiste plus --out schrijft hij het archief.
Suite 577/577 onder UTC en Europe/Amsterdam.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ArchiveImportService.js

    r6248497 ra4fea5e  
    143143
    144144  const site = db.prepare('SELECT * FROM sites WHERE slug = ?').get(opts.slug);
    145   if (!site) throw new Error(`onbekende site: ${opts.slug}`);
     145  if (!site) {
     146    // De naam van de INSTANCE (de map, de unit) en de slug van de SITE in zijn
     147    // database zijn twee dingen. Ze vallen vaak samen en soms niet, en dan zat je
     148    // met een foutmelding die je liet raden. Zeg dus wat er wel in staat.
     149    let bestaand = [];
     150    try { bestaand = db.prepare('SELECT slug FROM sites ORDER BY rowid').all().map((r) => r.slug); } catch { /* geen sites-tabel */ }
     151    const wat = opts.slug ? `onbekende site: ${opts.slug}` : 'geen site opgegeven';
     152    throw new Error(bestaand.length
     153      ? `${wat}. In deze database staat: ${bestaand.join(', ')}`
     154      : `${wat}. In deze database staat geen enkele site -- wijst DATABASE_PATH naar de juiste?`);
     155  }
    146156  const eigenOrigin = (opts.origin || process.env.PUBLIC_BASE_URL || '').replace(/\/+$/, '');
    147157  rapport.origin = manifest.origin || null;
Note: See TracChangeset for help on using the changeset viewer.