update importation command: add option --file

This commit is contained in:
Simon Vieille 2020-11-13 09:14:31 +01:00
parent 54772127a4
commit 7c1c2a7233
Signed by: deblan
GPG Key ID: 03383D15A1D31745
2 changed files with 32 additions and 7 deletions

View File

@ -76,7 +76,7 @@ In case of you want to delete the mailing:
$ php bin/console mailing:delete xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx $ php bin/console mailing:delete xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
``` ```
Finally, create a script run in a cron: Finally, create a script run in a cron:
``` ```
#!/bin/sh #!/bin/sh
@ -84,12 +84,19 @@ Finally, create a script run in a cron:
cd "/path/to/app" cd "/path/to/app"
find /var/lib/mailrss -name "foobar-*" | while read MAIL_FILE; do find /var/lib/mailrss -name "foobar-*" | while read MAIL_FILE; do
cat "MAIL_FILE" | php bin/console mail:import xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx MAILING_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
rm "MAIL_FILE" php bin/console mail:import "$MAILING_ID" -f "$MAIL_FILE" && rm "$MAIL_FILE"
done done
``` ```
You also can import a mail using stdin:
```
$ php bin/console mail:import "$MAILING_ID" < "$MAIL_FILE"
$ command | php bin/console mail:import "$MAILING_ID"
```
If you wan create another feed then: If you wan create another feed then:
* Create an aliase * Create an aliase

View File

@ -39,6 +39,7 @@ class MailImportCommand extends Command
{ {
$this $this
->setDescription('Import a mail into a mailing') ->setDescription('Import a mail into a mailing')
->addOption('file', 'f', InputOption::VALUE_REQUIRED, 'File')
->addArgument('mailing_id', InputArgument::OPTIONAL, 'ID of the mailing') ->addArgument('mailing_id', InputArgument::OPTIONAL, 'ID of the mailing')
; ;
} }
@ -47,6 +48,7 @@ class MailImportCommand extends Command
{ {
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);
$mailingId = $input->getArgument('mailing_id'); $mailingId = $input->getArgument('mailing_id');
$file = $input->getOption('file');
$mailing = $this->mailingRepo->find(['id' => $mailingId]); $mailing = $this->mailingRepo->find(['id' => $mailingId]);
@ -56,16 +58,32 @@ class MailImportCommand extends Command
return Command::FAILURE; return Command::FAILURE;
} }
$stdIn = file_get_contents('php://stdin'); if (empty($file)) {
$file = 'php://stdin';
if (empty($stdIn)) { $content = trim(file_get_contents($file));
$io->error('Standard input is empty');
if (empty($content)) {
$io->error('Standard input is empty');
return Command::FAILURE;
}
} elseif (file_exists($file) && is_readable($file) && is_file($file)) {
$content = trim(file_get_contents($file));
if (empty($content)) {
$io->error('File is empty');
return Command::FAILURE;
}
} else {
$io->error('No such file or is not readable');
return Command::FAILURE; return Command::FAILURE;
} }
$parser = new Parser(); $parser = new Parser();
$parser->setText($stdIn); $parser->setText($content);
$subject = $parser->getHeader('subject'); $subject = $parser->getHeader('subject');
$date = $parser->getHeader('date'); $date = $parser->getHeader('date');