setName('files:put')
->setDescription('Write contents of a file')
->addArgument('input', InputArgument::REQUIRED, "Source local path, use - to read from STDIN")
->addArgument('file', InputArgument::REQUIRED, "Target Nextcloud file path to write to or fileid of existing file");
}
public function execute(InputInterface $input, OutputInterface $output): int {
$fileOutput = $input->getArgument('file');
$inputName = $input->getArgument('input');
$node = $this->fileUtils->getNode($fileOutput);
if ($node instanceof Folder) {
$output->writeln("$fileOutput is a folder");
return self::FAILURE;
}
if (!$node and is_numeric($fileOutput)) {
$output->writeln("$fileOutput not found");
return self::FAILURE;
}
$source = ($inputName === null || $inputName === '-') ? STDIN : fopen($inputName, 'r');
if (!$source) {
$output->writeln("Failed to open $inputName");
return self::FAILURE;
}
if ($node instanceof File) {
$target = $node->fopen('w');
if (!$target) {
$output->writeln("Failed to open $fileOutput");
return self::FAILURE;
}
stream_copy_to_stream($source, $target);
} else {
$this->rootFolder->newFile($fileOutput, $source);
}
return self::SUCCESS;
}
}