Implement dynamic padding on size print

This commit is contained in:
zawz 2020-06-02 11:32:11 +02:00
parent a514aa8b72
commit 20fa841a32
4 changed files with 44 additions and 38 deletions

View file

@ -22,9 +22,11 @@ std::pair<double, const char*> convertN(const long int size, unsigned int n);
std::pair<double, const char*> convertHReadable(const long int size); std::pair<double, const char*> convertHReadable(const long int size);
void print_separator(uint32_t length, ztd::color color, char sepchar='=');
void print_update(repo_update& ru, ztd::color color, bool dlsize=false, bool nisize=false, bool nusize=false); void print_update(repo_update& ru, ztd::color color, bool dlsize=false, bool nisize=false, bool nusize=false);
void print_update_sizes(repo_update& ru, ztd::color color, bool dlsize, bool nisize, bool cisize, bool notitle); void print_update_sizes(repo_update& ru, ztd::color color, bool dlsize, bool nisize, bool cisize, bool notitle, uint32_t padsize);
void print_size(long int size, bool printTitle=false, std::string title="", int padding=0, ztd::color color=ztd::color::none, unsigned int precision=2, unsigned int sizepow=2, const char* line_end="\n", int sizepad=-1); void print_size(long int size, bool printTitle=false, std::string title="", int padding=0, ztd::color color=ztd::color::none, unsigned int precision=2, unsigned int sizepow=2, const char* line_end="\n", int sizepad=-1);

View file

@ -1,4 +1,4 @@
#include <stdio.h> #include <cstdio>
#include <thread> #include <thread>

View file

@ -1,7 +1,10 @@
#include "package_man.hpp" #include "package_man.hpp"
#include <stdio.h> #include <cstdio>
#include <signal.h> #include <csignal>
#include <cmath>
#include <algorithm>
#include "fetch.hpp" #include "fetch.hpp"
#include "print.hpp" #include "print.hpp"
@ -20,17 +23,35 @@ bool exec_find(const std::string& name)
return which != ""; return which != "";
} }
uint32_t req_pad_size(repo_update& ru)
{
int pd, pi, pn;
pd=std::max(0.0, log10(ru.download_size) - 3*size_index);
pi=std::max(0.0, log10(ru.new_install_size) - 3*size_index);
pn=std::max(0.0, log10(ru.net_size) - 3*size_index + (ru.net_size<0?1:0));
return std::ceil(std::max(std::max(pd, pi), pn)) + (size_index>0?7:2);
}
void repo_print_process(repo_update& ru, ztd::color cl, bool print_size=true) void repo_print_process(repo_update& ru, ztd::color cl, bool print_size=true)
{ {
//only if there are packages //only if there are packages
if(ru.packages.size() > 0) if(opt_plistraw)
print_listraw(repo);
else if(ru.packages.size() > 0)
{ {
//list //list
if( opt_plist ) if( opt_plist )
print_update(ru, cl, print_size && opt_pdownload, print_size && opt_pinstall, print_size && opt_pnet); print_update(ru, cl, print_size && opt_pdownload, print_size && opt_pinstall, print_size && opt_pnet);
// raw list
uint32_t padsize=req_pad_size(ru);
if( opt_plist && print_size )
print_separator(padsize+22, cl);
padsize -= size_index>0 ? 3 : 1;
//sizes //sizes
if( print_size ) if( print_size )
print_update_sizes(ru, cl, opt_pdownload, opt_pinstall, opt_pnet, opt_notitles); print_update_sizes(ru, cl, opt_pdownload, opt_pinstall, opt_pnet, opt_notitles, padsize);
} }
} }
@ -78,11 +99,6 @@ int pacman_process(bool yay)
repo_print_process(repo, ztd::color::b_white); repo_print_process(repo, ztd::color::b_white);
if(opt_plistraw)
{
print_listraw(repo);
}
if(opt_update) if(opt_update)
{ {
signal(SIGINT, SIG_IGN); signal(SIGINT, SIG_IGN);
@ -101,11 +117,6 @@ int pacman_process(bool yay)
{ {
repo_print_process(aur, ztd::color::b_cyan, false); repo_print_process(aur, ztd::color::b_cyan, false);
if(opt_plistraw)
{
print_listraw(aur);
}
if(opt_update) if(opt_update)
{ {
signal(SIGINT, SIG_IGN); signal(SIGINT, SIG_IGN);
@ -176,11 +187,6 @@ int apt_process()
repo_print_process(repo, ztd::color::b_white); repo_print_process(repo, ztd::color::b_white);
if(opt_plistraw)
{
print_listraw(repo);
}
if(opt_update) if(opt_update)
{ {
signal(SIGINT, SIG_IGN); signal(SIGINT, SIG_IGN);

View file

@ -1,7 +1,7 @@
#include "print.hpp" #include "print.hpp"
#include <iostream> #include <iostream>
#include <math.h> #include <cmath>
#include <ztd/shell.hpp> #include <ztd/shell.hpp>
@ -54,6 +54,14 @@ static const char* p_color(const ztd::color c)
return ""; return "";
} }
void print_separator(uint32_t length, ztd::color color, char sepchar)
{
std::string sep;
for(uint32_t i=0 ; i<length ; i++)
sep += sepchar;
std::cout << p_color(color) << sep << p_color(no_color) << std::endl;
}
void print_update(repo_update& ru, ztd::color color, bool dlsize, bool nisize, bool nusize) void print_update(repo_update& ru, ztd::color color, bool dlsize, bool nisize, bool nusize)
{ {
if(ru.packages.size() > 0) if(ru.packages.size() > 0)
@ -82,28 +90,18 @@ void print_update(repo_update& ru, ztd::color color, bool dlsize, bool nisize, b
print_size(it.net_size, true, "", 0, ztd::color::none, 2, size_index, "", (int) std::max(log10(ru.max_net_size) - 3*size_index + 0 , 0.0) + 5 ); print_size(it.net_size, true, "", 0, ztd::color::none, 2, size_index, "", (int) std::max(log10(ru.max_net_size) - 3*size_index + 0 , 0.0) + 5 );
printf("\n"); printf("\n");
} }
std::cout << p_color(color);
std::cout << "================================";
std::cout << p_color(no_color);
std::cout << std::endl;
} }
} }
void print_update_sizes(repo_update& ru, ztd::color color, bool dlsize, bool nisize, bool nusize, bool notitle) void print_update_sizes(repo_update& ru, ztd::color color, bool dlsize, bool nisize, bool nusize, bool notitle, uint32_t padsize)
{ {
bool separator = !notitle && (dlsize || nisize || nusize) ;
if(dlsize) if(dlsize)
print_size(ru.download_size, !notitle, "Total Download Size:", size_print_padding, color, 2, size_index); print_size(ru.download_size, !notitle, "Total Download Size:", size_print_padding, color, 2, size_index, "\n", padsize);
if(nisize) if(nisize)
print_size(ru.new_install_size, !notitle, "Total Install Size:", size_print_padding, color, 2, size_index); print_size(ru.new_install_size, !notitle, "Total Install Size:", size_print_padding, color, 2, size_index, "\n", padsize);
if(nusize) if(nusize)
print_size(ru.net_size, !notitle, "Net Upgrade Size:", size_print_padding, color, 2, size_index); print_size(ru.net_size, !notitle, "Net Upgrade Size:", size_print_padding, color, 2, size_index, "\n", padsize);
if(!notitle && (dlsize || nisize || nusize))
{
std::cout << p_color(color);
std::cout << "================================";
std::cout << p_color(no_color);
std::cout <<std::endl;
}
} }
void print_size(long int size, bool printTitle, std::string title, int padding, ztd::color color, unsigned int precision, unsigned int sizepow, const char* line_end, int sizepad) void print_size(long int size, bool printTitle, std::string title, int padding, ztd::color color, unsigned int precision, unsigned int sizepow, const char* line_end, int sizepad)
@ -118,7 +116,7 @@ void print_size(long int size, bool printTitle, std::string title, int padding,
if(sizepow == 0) if(sizepow == 0)
{ {
precision = 0; precision = 0;
sizepad = 9; // sizepad = 9;
} }
if(!printTitle) if(!printTitle)
{ {