progressBar = $this->output->createProgressBar($steps); $this->progressBar->setFormat(" %current%/%max% [%bar%] %message%\n %detail%"); $this->progressBar->setMessage('시작 중...'); $this->progressBar->setMessage('', 'detail'); $this->progressBar->start(); return function (?string $step, string $message): void { if ($step !== null) { // 단계 전환: bar advance + 상세 초기화 $this->progressBar->setMessage($message); $this->progressBar->setMessage('', 'detail'); $this->progressBar->advance(); } else { // 상세 갱신: 현재 파일명 전광판 표시 $this->progressBar->setMessage("\u{2192} ".$message, 'detail'); $this->progressBar->display(); } }; } /** * 프로그레스바를 완료합니다. */ protected function finishProgress(): void { if ($this->progressBar) { $this->progressBar->setMessage('', 'detail'); $this->progressBar->finish(); $this->newLine(); } } }