From 5985e08e1e81c70fa7d127e5c21fc4fa6125d4d8 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Tue, 4 Feb 2020 14:39:19 +0100
Subject: [PATCH] salvatore:ouvrager pour ouvrager completement chaque module
 un a un (au lieu de tout tirer, puis tout lire, puis tout ecrire puis tout
 pousser)

---
 spip-cli/SalvatoreOuvrager.php | 121 +++++++++++++++++++++++++++++++++
 1 file changed, 121 insertions(+)
 create mode 100644 spip-cli/SalvatoreOuvrager.php

diff --git a/spip-cli/SalvatoreOuvrager.php b/spip-cli/SalvatoreOuvrager.php
new file mode 100644
index 0000000..2ebe2c5
--- /dev/null
+++ b/spip-cli/SalvatoreOuvrager.php
@@ -0,0 +1,121 @@
+<?php
+
+/*
+    This file is part of Salvatore, the translation robot of Trad-lang (SPIP)
+
+    Salvatore is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    Trad-Lang is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with Trad-Lang; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+    Copyright 2003-2020
+        Florent Jugla <florent.jugla@eledo.com>,
+        Philippe Riviere <fil@rezo.net>,
+        Chryjs <chryjs!@!free!.!fr>,
+        kent1 <kent1@arscenic.info>
+        Cerdic <cedric@yterium.com>
+*/
+
+/**
+ * Prend les fichiers de langue de référence de salvatore/modules/ et les traite completement un a un
+ * pour les modules decrits dans le fichier traductions/traductions.txt
+ *
+ */
+
+
+use Spip\Cli\Console\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Helper\ProgressHelper;
+
+
+class SalvatoreOuvrager extends Command {
+	protected function configure(){
+		$this
+			->setName('salvatore:ouvrager')
+			->setDescription('Prend les fichiers de langue de référence de salvatore/modules/ et fait un traitement complet tirer/lire/ecrire/pousser de chaque module')
+			->addOption(
+				'traductions',
+				null,
+				InputOption::VALUE_REQUIRED,
+				'Chemin vers le fichier traductions.txt a utiliser [salvatore/traductions/traductions.txt]',
+				null
+			)
+			->addOption(
+				'module',
+				null,
+				InputOption::VALUE_REQUIRED,
+				'Un ou plusieurs modules à traiter (par defaut tous les modules du fichier de traduction seront traités)',
+				null
+			)
+			->addOption(
+				'force',
+				null,
+				InputOption::VALUE_NONE,
+				'Forcer la relecture du ou des modules et la mise a jour en base indépendament de la date de dernière mise a jour des fichiers',
+				null
+			)
+			->addOption(
+				'message',
+				null,
+				InputOption::VALUE_REQUIRED,
+				'Message de commit',
+				null
+			)
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output){
+		global $spip_racine;
+		global $spip_loaded;
+
+		include_spip('inc/salvatore');
+		include_spip('salvatore/tireur');
+		include_spip('salvatore/lecteur');
+		include_spip('salvatore/ecriveur');
+		include_spip('salvatore/pousseur');
+
+		salvatore_init(array($output, 'writeln'));
+
+
+		$output->writeln("<comment>=======================================</comment>");
+		$output->writeln("<comment>OUVRAGER [Traiter complètement les fichiers de reference de salvatore/modules/]</comment>");
+		$output->writeln("<comment>=======================================</comment>");
+
+
+		$traductions = $input->getOption('traductions');
+		$liste_trad = salvatore_charger_fichier_traductions($traductions);
+		$n = count($liste_trad);
+		$output->writeln("<info>$n modules dans le fichier traductions " . ($traductions ? $traductions : '') . "</info>");
+
+		$modules = $input->getOption('module');
+		if ($modules = trim($modules)) {
+			$liste_trad = salvatore_filtrer_liste_traductions($liste_trad, $modules);
+			$n = count($liste_trad);
+			$output->writeln("<info>$n modules à traiter : " . $modules . "</info>");
+		}
+
+		$force = $input->getOption('force');
+		$message = $input->getOption('message');
+
+		foreach ($liste_trad as $une_trad) {
+			salvatore_log("\n<comment>--- Module " . $une_trad['module'] . " | " . $une_trad['dir_module'] . " | " . $une_trad['url']."</comment>");
+			salvatore_tirer([$une_trad]);
+			salvatore_lire([$une_trad], $force);
+			salvatore_ecrire([$une_trad], $message ? $message : '');
+			salvatore_pousser([$une_trad]);
+		}
+	}
+}
+
-- 
GitLab