aboutsummaryrefslogtreecommitdiff
path: root/src/viewerplainpct.cpp
blob: 9988ca7b01c5c6916ed82153b5ce87fa646bd69a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "viewerplainpct.h"
#include "perform.h"
#include "plugger.h"
#include "math.h"

PluginInterface2( plainpct, ViewerPlainPct, Viewer, "Mike Buland", 0, 1 );

ViewerPlainPct::ViewerPlainPct() :
	bRunClean( true )
{
}

ViewerPlainPct::~ViewerPlainPct()
{
}

void ViewerPlainPct::beginCommand( Action::eAction nAct, const std::string &sTarget )
{
	Cmd cmd;
	if( sCmd.empty() )
		cmd.nLevel = 0;
	else
		cmd.nLevel = sCmd.front().nLevel+1;
	
	cmd.bCmdClean = true;
	cmd.sTarget = sTarget;

	sCmd.push_front( cmd );
}

void ViewerPlainPct::endCommand()
{
	if( sCmd.front().bCmdClean == false )
		printf("\n");
	sCmd.pop_front();
	if(sCmd.empty())
		iCC++;
}

void ViewerPlainPct::indent()
{
	if( sCmd.empty() ) return;
	int jmax = sCmd.front().nLevel;
	for( int j = 0; j < jmax; j++ )
	{
		printf("  ");
	}
}

void ViewerPlainPct::printHead()
{
	if( sCmd.front().bCmdClean == true )
	{
		bRunClean = false;
		sCmd.front().bCmdClean = false;
		indent();
		if(sCmd.size() > 1)
			printf("--- %s ---\n", sCmd.front().sTarget.c_str() );
		else
			printf("--- [%d/%d] %s ---\n", iCC, iTC, sCmd.front().sTarget.c_str() );
	}
}

void ViewerPlainPct::printPerform(const char *sRule, const char *sTarget)
{
	int iPct = (int)round(
			((double)sCmd.front().iCP/(double)sCmd.front().iTP)*100.0
			);
	if(sCmd.size() > 1)
		printf( "[%3d%%] %8s: %s\n", iPct, sRule, sTarget );
	else
		printf( "[%3d%%] %8s: %s\n", iPct, sRule, sTarget );
}

void ViewerPlainPct::beginRequiresCheck( bool bCached, const std::string &sName )
{
	printHead();
	indent();
	printPerform("deps", sName.c_str());
}

void ViewerPlainPct::endRequiresCheck()
{
	sCmd.front().iCP++;
}

void ViewerPlainPct::skipRequiresCheck( bool bCached, const std::string &sName )
{
	sCmd.front().iCP++;
}

void ViewerPlainPct::beginPerform( Perform *pPerform )
{
	printHead();
	indent();
	printPerform(pPerform->getRule().c_str(), pPerform->getTarget().c_str());
}

void ViewerPlainPct::endPerform()
{
	sCmd.front().iCP++;
}

void ViewerPlainPct::skipPerform( Perform *pPerform )
{
	sCmd.front().iCP++;
}

void ViewerPlainPct::beginPerforms( int nCount )
{
	sCmd.front().iTP = nCount*2;
	sCmd.front().iCP = 1;
}

void ViewerPlainPct::beginAction( const std::string &sName, int nCommands )
{
	iTC = nCommands;
	iCC = 1;
}

void ViewerPlainPct::endAction()
{
	if( bRunClean == true )
	{
		printf("Nothing to be done.\n\n");
	}
}