Exemple #1
0
 static function status($pos, $len)
 {
     if (self::$in_file != self::$source_name) {
         if (self::$in_file != "") {
             self::clear_progress();
         }
         self::verbose("Loading " . self::$source_name . "...\n");
         self::$in_file = self::$source_name;
     }
     if (!self::$progress) {
         return;
     }
     $progress_size = 2;
     $min_width = 8 + 2 + $progress_size + 2 + 5 + 1;
     # "%"
     $min_filename_length = 3;
     # if there's no way to fit the progress bar on this screen, just return
     if ($min_width + $min_filename_length >= self::$width) {
         self::$progress = false;
         return;
     }
     $filename = self::$source_name;
     # if we can fit the entire filename on the line then we size the progress bar
     if ($min_width + strlen(self::$source_name) < self::$width - 1) {
         $progress_size = self::$width - ($min_width + strlen($filename) + 1);
     } else {
         $filename = substr($filename, 0, self::$width - ($min_width + 1));
     }
     $percent_per_file = 1 / self::$source_count;
     $already_done = (self::$source_index - 1) * $percent_per_file;
     $in_file = $len == 0 ? 1 : $pos / $len;
     $overall = $already_done + $percent_per_file * $in_file;
     $fill_count = floor($overall * $progress_size);
     $blank_count = ceil($progress_size - $fill_count);
     $fill = str_repeat("*", $fill_count);
     $blank = str_repeat("-", $blank_count);
     self::warn(sprintf("\rLoading %s [%s%s] %2.1f%%", $filename, $fill, $blank, $overall * 100));
 }