error("Source directory not found: {$sourcePath}");
return Command::FAILURE;
}
// Create destination directory
if (! File::isDirectory($publicPath)) {
File::makeDirectory($publicPath, 0755, true);
}
$copied = 0;
$skipped = 0;
$failed = 0;
foreach ($config['devices'] as $deviceSlug => $device) {
$deviceDir = "{$publicPath}/{$deviceSlug}";
if (! File::isDirectory($deviceDir)) {
File::makeDirectory($deviceDir, 0755, true);
}
foreach ($device['variants'] as $variantSlug => $variant) {
$extension = $device['format'];
$sourceFile = "{$sourcePath}/{$device['path']}/{$variant['file']}.{$extension}";
$destFile = "{$deviceDir}/{$variantSlug}.{$extension}";
if (! File::exists($sourceFile)) {
$this->warn("Source not found: {$sourceFile}");
$failed++;
continue;
}
if (File::exists($destFile) && ! $this->option('force')) {
$this->line("Skipping: {$deviceSlug}/{$variantSlug}.{$extension}");
$skipped++;
continue;
}
File::copy($sourceFile, $destFile);
$this->line("Copied: {$deviceSlug}/{$variantSlug}.{$extension}");
$copied++;
}
}
$this->newLine();
$this->info("Done! Copied: {$copied}, Skipped: {$skipped}, Failed: {$failed}");
return Command::SUCCESS;
}
}