Confluence bied een aantal macro's om bepaalde acties te automatiseren, denk hierbij aan het toevoegen van code blokken, HTML divs en inhoudsopgaven. Maar wat deze macro's niet blijken te kunnen is het aanpassen en/of toevoegen van grote hoeveelheden pagina's. Batch acties dus. Hiervoor is iets anders beschikbaar: de Confluence CLI

De Quaestor wiki heeft een aantal onderdelen waarbij sommige stukken tekst steeds terug komen, zoals de Quick Links onderaan een beschrijving van een attribute. Aangezien er 258 attributen en dus 258 artikelen staan waarin deze links moeten komen is dit een hoop werk om handmatig te doen. Ook komt het de precisie niet ten goede als dit met de hand wordt gedaan en moet de tekst mogelijk later weer aangepast worden. Bij dit soort situaties is de maker van de documentatie (en eigenlijk ook de gebruikers) gebaat bij een tool die dit middels een script in een keer kan doen. Confluence CLI lijkt deze mogelijkheid, en nog veel meer, te bieden

Werking

De CLI wordt geleverd met een aardig uitgebreide documentatie. Naast deze documentatie beschrijft deze blog hoe de installatie van CLI moet gebeuren. Hieronder in een notendop wat er moet gebeuren om de CLI werkend te krijgen.

  1. De CLI maakt gebruik van de Remote API mogelijkheid van Confluence. Dit moet eerst geactiveerd worden door een gebruiker met Admin rechten (een Space Admin kan dit niet doen) 
  2. Download en unzip dit archief op een logische plaats, C:/Confluence CLI bijvoorbeeld
  3. In de bijgeleverde batch file confluence.bat moeten de server, username en password worden ingevuld om connectie te kunnen maken met de Remote API van Confluence

  4. Nu kan deze batch file worden uitgevoerd met parameters die de acties beschrijven, bijvoorbeeld: --action removePage --space “DOCS” --title “IRC Chat Transcripts” --descendents verwijderd all child pages van het artikel met de naam 'IRC Chat Transcripts' binnen de space genaamd 'DOCS'
Dit is een basis actie die wordt uitgevoerd met de methods van de CLI. Het is echter ook mogelijk om een query los te laten op de Confluence database om zo een actie uit te voeren. Bijvoorbeeld:
 
confluence -a runFromSql --common "-a run --file appendPage.txt" --database confluence-3.5.13 --driver postgresql --sql "select '--findReplace \"@title@:''' || content.title || ''',@space@:' || spaces.spacekey || '\"' from content, spaces where content.title like '%title 1%' and content.spaceid = spaces.spaceid"

Waarin de file appendPage.txt CLI methods bevat voor het aanpassen van de pagina en de query wordt gebruikt om de pagina's te vinden die moeten worden aangepast. 


Bij mij werkte de bijgeleverde batch niet, ik kreeg een melding over een enviroment variable die niet bestond. Dit heb ik niet kunnen fixen, maar met een aangepaste batch is het uiteindelijk toch gelukt. In plaats van dit:
set java -jar “%dirPath%”/lib/confluence-cli-2.6.0.jar

Doe ik dit:

start javaw -jar “%dirPath%”/lib/confluence-cli-2.6.0.jar

Ik heb ergens het idee dat er een soort reporting moet zijn (als een actie mislukt bijvoorbeeld) maar dat heb ik niet. Mogelijk vanwege mijn aangepaste batch. 

EDIT 4-7-12

Er is nog een manier om de CLI werkend te krijgen en dat is gewoon de JAR loslaten op java.exe in de bin map van de java instalatie:

java -jar "%dirPath%"/lib/confluence-cli-2.7.0-SNAPSHOT.jar

Als de enviroment variable niet geset is is eerst een CD actie nodig om bij de bin map te komen:

cd C:\Program Files\Java\jdk1.6.0_24\jre\bin

De actie moet natuurlijk omgeschreven worden naar jouw java instalatie.

 

Voorbeelden

Extern script uitvoeren

In het voorbeeld hierboven wordt er al een voorbeeld van gegeven; het uitvoeren van een extern script middels de run actie. Als je meer dan 1 actie achter elkaar wilt uitvoeren moet je dit doen, want in de CMD kan je maar 1 actie tegelijk uitvoeren, hoogst onhandig in de meeste gevallen natuurlijk. Er veranderd wel iets aan de werkwijze, normaal gesproken gebruik je --action om een actie aan te duiden.

Met een extern script gebruik je niet --action maar --a.  Voorbeeld:

-a modifyPage --space "@space@" --title "@title@" --content "" --findReplaceRegex "(Quick).*?(links).*?(Function overview).*?(Attribute overview).*?(Constants overview).*?(Dimensions overview): " --noConvert

Dit staat in een aparte file. Met --a in plaats van --action wordt een actie aangeduid. 

 

 

  • No labels