private function infoModApi($output, $slug, $version)
 {
     displayServerInfo($output);
     $apiClient = new Client();
     $appConfig = solder_config();
     $apiResponse = $apiClient->get($appConfig->api . '/mod/' . $slug . '/' . $version)->json();
     if (isset($apiResponse['error'])) {
         throw new \Exception($apiResponse['error']);
     }
     $rows = array();
     foreach ($apiResponse as $key => $value) {
         if ($key == 'versions') {
             $rows[] = array("<info>{$key}</info>", implode($value, "\n"));
         } else {
             $rows[] = array("<info>{$key}</info>", mb_strimwidth($value, 0, 60, "..."));
         }
     }
     $output->writeln('');
     $output->writeln("<comment>Mod:</comment>");
     $table = new Table($output);
     $table->setRows($rows)->setStyle('compact')->render();
 }
 private function infoModpack($output, $modpackSlug, $modpackBuild)
 {
     $apiClient = new Client();
     $appConfig = solder_config();
     displayServerInfo($output);
     if ($modpackBuild == 'latest' || $modpackBuild == 'recommended') {
         $apiResponse = $apiClient->get($appConfig->api . '/modpack/' . $modpackSlug)->json();
         $modpackBuild = $apiResponse[$modpackBuild];
     }
     if ($modpackSlug == '' && $modpackBuild == '') {
         $apiUri = $appConfig->api . '/modpack';
     } elseif ($modpackSlug != '' && $modpackBuild == '') {
         $apiUri = $appConfig->api . '/modpack/' . $modpackSlug;
     } else {
         $apiUri = $appConfig->api . '/modpack/' . $modpackSlug . '/' . $modpackBuild;
     }
     $apiResponse = $apiClient->get($apiUri)->json();
     if (isset($apiResponse['error'])) {
         throw new \Exception($apiResponse['error']);
     }
     $rows = array();
     $mods = array();
     $modpacks = array();
     foreach ($apiResponse as $key => $value) {
         if ($key == 'mods') {
             foreach ($value as $mod) {
                 $mods[] = array("<info>{$mod['name']}</info>", $mod['version']);
             }
         } elseif ($key == 'modpacks') {
             foreach ($value as $slug => $build) {
                 $modpacks[] = array("<info>{$slug}</info>", $build);
             }
         } elseif (is_array($value)) {
             $rows[] = array("<info>{$key}</info>", implode($value, "\n"));
         } else {
             $rows[] = array("<info>{$key}</info>", mb_strimwidth($value, 0, 60, "..."));
         }
     }
     if ($modpackSlug == '' && $modpackBuild == '') {
         $output->writeln('');
         $output->writeln('<comment>Available Modpacks:</comment>');
         $table = new Table($output);
         $table->setRows($modpacks)->setStyle('compact')->render();
     }
     if ($modpackSlug != '' && $modpackBuild == '') {
         $output->writeln('');
         $output->writeln("<comment>Modpack:</comment>");
         $table = new Table($output);
         $table->setRows($rows)->setStyle('compact')->render();
     }
     if ($modpackBuild != '') {
         $output->writeln('');
         $output->writeln('<comment>Build:</comment>');
         $table = new Table($output);
         $table->setRows($rows)->setStyle('compact')->render();
         $output->writeln('');
         $output->writeln('<comment>Mods:</comment>');
         $table = new Table($output);
         $table->setRows($mods)->setStyle('compact')->render();
     }
 }