diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2006-09-12 18:19:05 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2006-09-12 18:19:05 +0000 |
| commit | 9d9f75e6da9885e256097a2eabd0ccb951a40651 (patch) | |
| tree | 45f9e83c080e0243aad34cfdfe969e31677d14e0 /src | |
| parent | 58f477bd5c5f9a61d4a4072d452856b180b1c172 (diff) | |
| download | build-9d9f75e6da9885e256097a2eabd0ccb951a40651.tar.gz build-9d9f75e6da9885e256097a2eabd0ccb951a40651.tar.bz2 build-9d9f75e6da9885e256097a2eabd0ccb951a40651.tar.xz build-9d9f75e6da9885e256097a2eabd0ccb951a40651.zip | |
Fixed the viewers, and some other good goo.
Diffstat (limited to 'src')
| -rw-r--r-- | src/action.h | 5 | ||||
| -rw-r--r-- | src/build.cpp | 12 | ||||
| -rw-r--r-- | src/build.h | 2 | ||||
| -rw-r--r-- | src/main.cpp | 35 | ||||
| -rw-r--r-- | src/targetfile.cpp | 4 | ||||
| -rw-r--r-- | src/viewer.cpp | 10 | ||||
| -rw-r--r-- | src/viewer.h | 4 | ||||
| -rw-r--r-- | src/viewerfactory.cpp | 2 | ||||
| -rw-r--r-- | src/viewerpercent.cpp | 114 | ||||
| -rw-r--r-- | src/viewerpercent.h | 36 | ||||
| -rw-r--r-- | src/viewerplain.cpp | 2 | ||||
| -rw-r--r-- | src/viewerplain.h | 2 |
12 files changed, 205 insertions, 23 deletions
diff --git a/src/action.h b/src/action.h index 4f9a88e..0e08192 100644 --- a/src/action.h +++ b/src/action.h | |||
| @@ -33,6 +33,11 @@ public: | |||
| 33 | bool isEnded(); | 33 | bool isEnded(); |
| 34 | void next(); | 34 | void next(); |
| 35 | 35 | ||
| 36 | int size() | ||
| 37 | { | ||
| 38 | return lCmds.size(); | ||
| 39 | } | ||
| 40 | |||
| 36 | eAction getAct(); | 41 | eAction getAct(); |
| 37 | std::string getWhat(); | 42 | std::string getWhat(); |
| 38 | 43 | ||
diff --git a/src/build.cpp b/src/build.cpp index 13a2aee..88d1207 100644 --- a/src/build.cpp +++ b/src/build.cpp | |||
| @@ -10,7 +10,6 @@ Build::Build() : | |||
| 10 | pView( NULL ), | 10 | pView( NULL ), |
| 11 | bCacheUpdated( false ) | 11 | bCacheUpdated( false ) |
| 12 | { | 12 | { |
| 13 | pView = ViewerFactory::getInstance().instantiate("plain"); | ||
| 14 | } | 13 | } |
| 15 | 14 | ||
| 16 | Build::~Build() | 15 | Build::~Build() |
| @@ -29,6 +28,11 @@ Build::~Build() | |||
| 29 | } | 28 | } |
| 30 | } | 29 | } |
| 31 | 30 | ||
| 31 | void Build::setView( const std::string &sView ) | ||
| 32 | { | ||
| 33 | pView = ViewerFactory::getInstance().instantiate( sView.c_str() ); | ||
| 34 | } | ||
| 35 | |||
| 32 | void Build::setCache( const std::string &sFileName ) | 36 | void Build::setCache( const std::string &sFileName ) |
| 33 | { | 37 | { |
| 34 | sCacheName = sFileName; | 38 | sCacheName = sFileName; |
| @@ -70,6 +74,8 @@ void Build::execAction( const std::string &sWhat ) | |||
| 70 | 74 | ||
| 71 | Action *pAct = mAction[sWhat]; | 75 | Action *pAct = mAction[sWhat]; |
| 72 | 76 | ||
| 77 | pView->beginAction( sWhat, pAct->size() ); | ||
| 78 | |||
| 73 | for( pAct->begin(); !pAct->isEnded(); pAct->next() ) | 79 | for( pAct->begin(); !pAct->isEnded(); pAct->next() ) |
| 74 | { | 80 | { |
| 75 | if( mTarget.find( pAct->getWhat() ) == mTarget.end() ) | 81 | if( mTarget.find( pAct->getWhat() ) == mTarget.end() ) |
| @@ -79,7 +85,7 @@ void Build::execAction( const std::string &sWhat ) | |||
| 79 | sWhat.c_str() | 85 | sWhat.c_str() |
| 80 | ); | 86 | ); |
| 81 | Target *pTarget = mTarget[pAct->getWhat()]; | 87 | Target *pTarget = mTarget[pAct->getWhat()]; |
| 82 | pView->beginCommand( pAct->getAct(), pAct->getWhat(), 0 ); | 88 | pView->beginCommand( pAct->getAct(), pAct->getWhat() ); |
| 83 | switch( pAct->getAct() ) | 89 | switch( pAct->getAct() ) |
| 84 | { | 90 | { |
| 85 | case Action::actCheck: | 91 | case Action::actCheck: |
| @@ -93,6 +99,8 @@ void Build::execAction( const std::string &sWhat ) | |||
| 93 | pView->endCommand(); | 99 | pView->endCommand(); |
| 94 | } | 100 | } |
| 95 | 101 | ||
| 102 | pView->endAction(); | ||
| 103 | |||
| 96 | return; | 104 | return; |
| 97 | } | 105 | } |
| 98 | 106 | ||
diff --git a/src/build.h b/src/build.h index 1477938..e0f60ec 100644 --- a/src/build.h +++ b/src/build.h | |||
| @@ -67,6 +67,8 @@ public: | |||
| 67 | return mTarget; | 67 | return mTarget; |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | void setView( const std::string &sView ); | ||
| 71 | |||
| 70 | void setCache( const std::string &sFileName ); | 72 | void setCache( const std::string &sFileName ); |
| 71 | bool getCached( const std::string &sID, int nTime, StringList &lOut ); | 73 | bool getCached( const std::string &sID, int nTime, StringList &lOut ); |
| 72 | void updateCache( const std::string &sID, FunctionList &lFunc, StringList &lOut ); | 74 | void updateCache( const std::string &sID, FunctionList &lFunc, StringList &lOut ); |
diff --git a/src/main.cpp b/src/main.cpp index 712213b..fa1608f 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
| @@ -12,7 +12,8 @@ public: | |||
| 12 | Param() : | 12 | Param() : |
| 13 | sFile("build.conf"), | 13 | sFile("build.conf"), |
| 14 | sCache(".build.cache"), | 14 | sCache(".build.cache"), |
| 15 | bDebug( false ) | 15 | bDebug( false ), |
| 16 | sView("plain") | ||
| 16 | { | 17 | { |
| 17 | addHelpBanner("Build r?\n\n"); | 18 | addHelpBanner("Build r?\n\n"); |
| 18 | addParam("file", 'f', &sFile, | 19 | addParam("file", 'f', &sFile, |
| @@ -24,7 +25,7 @@ public: | |||
| 24 | addParam("cache", &sCache, | 25 | addParam("cache", &sCache, |
| 25 | "Set an alternative cache file." ); | 26 | "Set an alternative cache file." ); |
| 26 | addParam('d', &bDebug, | 27 | addParam('d', &bDebug, |
| 27 | "Print out a debug dump of the read build.conf", "true" ); | 28 | "Print out a debug dump of the build.conf", NULL, "true" ); |
| 28 | addParam("help", mkproc(ParamProc::help), | 29 | addParam("help", mkproc(ParamProc::help), |
| 29 | "This help"); | 30 | "This help"); |
| 30 | //pViewer = new ViewerPlain; | 31 | //pViewer = new ViewerPlain; |
| @@ -48,6 +49,7 @@ public: | |||
| 48 | 49 | ||
| 49 | int procViewPercent( int argc, char *argv[] ) | 50 | int procViewPercent( int argc, char *argv[] ) |
| 50 | { | 51 | { |
| 52 | sView = "percent"; | ||
| 51 | //delete pViewer; | 53 | //delete pViewer; |
| 52 | //pViewer = new ViewerPercent; | 54 | //pViewer = new ViewerPercent; |
| 53 | } | 55 | } |
| @@ -60,6 +62,7 @@ public: | |||
| 60 | 62 | ||
| 61 | std::string sCache; | 63 | std::string sCache; |
| 62 | std::string sFile; | 64 | std::string sFile; |
| 65 | std::string sView; | ||
| 63 | StaticString sAction; | 66 | StaticString sAction; |
| 64 | //Viewer *pViewer; | 67 | //Viewer *pViewer; |
| 65 | bool bDebug; | 68 | bool bDebug; |
| @@ -79,6 +82,19 @@ int main( int argc, char *argv[] ) | |||
| 79 | { | 82 | { |
| 80 | pBuild = bld.load( prm.sFile.c_str() ); | 83 | pBuild = bld.load( prm.sFile.c_str() ); |
| 81 | pBuild->setCache( prm.sCache ); | 84 | pBuild->setCache( prm.sCache ); |
| 85 | pBuild->setView( prm.sView ); | ||
| 86 | if( prm.bDebug ) | ||
| 87 | { | ||
| 88 | printf("\n\n----------\nDebug dump\n----------\n"); | ||
| 89 | bld.debugDump(); | ||
| 90 | } | ||
| 91 | else | ||
| 92 | { | ||
| 93 | if( prm.sAction > 0 ) | ||
| 94 | pBuild->execAction( prm.sAction.getString() ); | ||
| 95 | else | ||
| 96 | pBuild->execAction(""); | ||
| 97 | } | ||
| 82 | } | 98 | } |
| 83 | catch( BuildException &e ) | 99 | catch( BuildException &e ) |
| 84 | { | 100 | { |
| @@ -87,21 +103,6 @@ int main( int argc, char *argv[] ) | |||
| 87 | return 1; | 103 | return 1; |
| 88 | } | 104 | } |
| 89 | 105 | ||
| 90 | //if( prm.bDebug ) | ||
| 91 | //{ | ||
| 92 | // printf("\n\n----------\nDebug dump\n----------\n"); | ||
| 93 | // bld.debugDump(); | ||
| 94 | //} | ||
| 95 | //else | ||
| 96 | { | ||
| 97 | if( prm.sAction > 0 ) | ||
| 98 | pBuild->execAction( prm.sAction.getString() ); | ||
| 99 | else | ||
| 100 | pBuild->execAction(""); | ||
| 101 | } | ||
| 102 | //printf("\n\n----------\nDebug dump\n----------\n"); | ||
| 103 | //pBuild->debugDump(); | ||
| 104 | |||
| 105 | delete pBuild; | 106 | delete pBuild; |
| 106 | } | 107 | } |
| 107 | 108 | ||
diff --git a/src/targetfile.cpp b/src/targetfile.cpp index dd0de9e..ddb1c18 100644 --- a/src/targetfile.cpp +++ b/src/targetfile.cpp | |||
| @@ -23,6 +23,8 @@ void TargetFile::check( Build &bld ) | |||
| 23 | pRule->setTarget( getName() ); | 23 | pRule->setTarget( getName() ); |
| 24 | StringList lFinal = pRule->execute( bld, getInput(), lPerf ); | 24 | StringList lFinal = pRule->execute( bld, getInput(), lPerf ); |
| 25 | 25 | ||
| 26 | bld.getView()->beginPerforms( lPerf.size() ); | ||
| 27 | |||
| 26 | for( PerformList::iterator i = lPerf.begin(); i != lPerf.end(); i++ ) | 28 | for( PerformList::iterator i = lPerf.begin(); i != lPerf.end(); i++ ) |
| 27 | { | 29 | { |
| 28 | time_t tTarget = getTime( bld, (*i)->getTarget() ); | 30 | time_t tTarget = getTime( bld, (*i)->getTarget() ); |
| @@ -53,6 +55,8 @@ void TargetFile::check( Build &bld ) | |||
| 53 | } | 55 | } |
| 54 | } | 56 | } |
| 55 | } | 57 | } |
| 58 | |||
| 59 | bld.getView()->endPerforms(); | ||
| 56 | } | 60 | } |
| 57 | 61 | ||
| 58 | void TargetFile::clean( Build &bld ) | 62 | void TargetFile::clean( Build &bld ) |
diff --git a/src/viewer.cpp b/src/viewer.cpp index 51acc3b..5998316 100644 --- a/src/viewer.cpp +++ b/src/viewer.cpp | |||
| @@ -16,7 +16,15 @@ void Viewer::endAction() | |||
| 16 | { | 16 | { |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | void Viewer::beginCommand( Action::eAction nAct, const std::string &sTarget, int nPerforms ) | 19 | void Viewer::beginCommand( Action::eAction nAct, const std::string &sTarget ) |
| 20 | { | ||
| 21 | } | ||
| 22 | |||
| 23 | void Viewer::beginPerforms( int nCount ) | ||
| 24 | { | ||
| 25 | } | ||
| 26 | |||
| 27 | void Viewer::endPerforms() | ||
| 20 | { | 28 | { |
| 21 | } | 29 | } |
| 22 | 30 | ||
diff --git a/src/viewer.h b/src/viewer.h index 93cebb7..86410f0 100644 --- a/src/viewer.h +++ b/src/viewer.h | |||
| @@ -16,8 +16,10 @@ public: | |||
| 16 | virtual void beginAction( const std::string &sName, int nCommands ); | 16 | virtual void beginAction( const std::string &sName, int nCommands ); |
| 17 | virtual void endAction(); | 17 | virtual void endAction(); |
| 18 | 18 | ||
| 19 | virtual void beginCommand( Action::eAction nAct, const std::string &sTarget, int nPerforms ); | 19 | virtual void beginCommand( Action::eAction nAct, const std::string &sTarget ); |
| 20 | virtual void endCommand(); | 20 | virtual void endCommand(); |
| 21 | virtual void beginPerforms( int nCount ); | ||
| 22 | virtual void endPerforms(); | ||
| 21 | 23 | ||
| 22 | virtual void beginRequiresCheck( bool bCached, const std::string &sName ); | 24 | virtual void beginRequiresCheck( bool bCached, const std::string &sName ); |
| 23 | virtual void endRequiresCheck(); | 25 | virtual void endRequiresCheck(); |
diff --git a/src/viewerfactory.cpp b/src/viewerfactory.cpp index 3778c37..3dbc232 100644 --- a/src/viewerfactory.cpp +++ b/src/viewerfactory.cpp | |||
| @@ -1,10 +1,12 @@ | |||
| 1 | #include "viewerfactory.h" | 1 | #include "viewerfactory.h" |
| 2 | 2 | ||
| 3 | extern struct PluginInfo plain; | 3 | extern struct PluginInfo plain; |
| 4 | extern struct PluginInfo percent; | ||
| 4 | 5 | ||
| 5 | ViewerFactory::ViewerFactory() | 6 | ViewerFactory::ViewerFactory() |
| 6 | { | 7 | { |
| 7 | registerBuiltinPlugin( &plain ); | 8 | registerBuiltinPlugin( &plain ); |
| 9 | registerBuiltinPlugin( &percent ); | ||
| 8 | } | 10 | } |
| 9 | 11 | ||
| 10 | ViewerFactory::~ViewerFactory() | 12 | ViewerFactory::~ViewerFactory() |
diff --git a/src/viewerpercent.cpp b/src/viewerpercent.cpp new file mode 100644 index 0000000..289c900 --- /dev/null +++ b/src/viewerpercent.cpp | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | #include "viewerpercent.h" | ||
| 2 | #include "perform.h" | ||
| 3 | #include "plugger.h" | ||
| 4 | |||
| 5 | PluginInterface2( percent, ViewerPercent, Viewer, "Mike Buland", 0, 1 ); | ||
| 6 | |||
| 7 | ViewerPercent::ViewerPercent() : | ||
| 8 | nWidth( 15 ) | ||
| 9 | { | ||
| 10 | } | ||
| 11 | |||
| 12 | ViewerPercent::~ViewerPercent() | ||
| 13 | { | ||
| 14 | } | ||
| 15 | |||
| 16 | void ViewerPercent::beginAction( const std::string &sName, int nCommands ) | ||
| 17 | { | ||
| 18 | nTotalCommands = nCommands; | ||
| 19 | nCurCommand = 0; | ||
| 20 | } | ||
| 21 | |||
| 22 | void ViewerPercent::endAction() | ||
| 23 | { | ||
| 24 | } | ||
| 25 | |||
| 26 | void ViewerPercent::beginCommand( Action::eAction nAct, const std::string &sTarget ) | ||
| 27 | { | ||
| 28 | this->sTarget = sTarget; | ||
| 29 | nCurCommand++; | ||
| 30 | } | ||
| 31 | |||
| 32 | void ViewerPercent::endCommand() | ||
| 33 | { | ||
| 34 | printf("\n"); | ||
| 35 | } | ||
| 36 | |||
| 37 | void ViewerPercent::beginPerforms( int nCount ) | ||
| 38 | { | ||
| 39 | nTotalPerforms = nCount; | ||
| 40 | nCurPerform = 0; | ||
| 41 | nLastLen = 0; | ||
| 42 | } | ||
| 43 | |||
| 44 | void ViewerPercent::endPerforms() | ||
| 45 | { | ||
| 46 | int nLen = printf("\r[%2d/%-2d] %s [", | ||
| 47 | nCurCommand, nTotalCommands, | ||
| 48 | sTarget.c_str() ); | ||
| 49 | for( int j = 0; j < nWidth; j++ ) | ||
| 50 | { | ||
| 51 | fputc('#', stdout ); | ||
| 52 | } | ||
| 53 | nLen += nWidth; | ||
| 54 | nLen += printf("] 100%%"); | ||
| 55 | |||
| 56 | if( nLastLen > nLen ) | ||
| 57 | { | ||
| 58 | int jmax = nLastLen-nLen; | ||
| 59 | for( int j = 0; j < jmax; j++ ) | ||
| 60 | { | ||
| 61 | fputc(' ', stdout ); | ||
| 62 | } | ||
| 63 | } | ||
| 64 | nLastLen = 0; | ||
| 65 | |||
| 66 | fflush( stdout ); | ||
| 67 | } | ||
| 68 | |||
| 69 | void ViewerPercent::beginRequiresCheck( bool bCached, const std::string &sName ) | ||
| 70 | { | ||
| 71 | } | ||
| 72 | |||
| 73 | void ViewerPercent::endRequiresCheck() | ||
| 74 | { | ||
| 75 | } | ||
| 76 | |||
| 77 | void ViewerPercent::beginPerform( Perform *pPerform ) | ||
| 78 | { | ||
| 79 | nCurPerform++; | ||
| 80 | int nLen = printf("\r[%2d/%-2d] %s [", | ||
| 81 | nCurCommand, nTotalCommands, | ||
| 82 | sTarget.c_str() ); | ||
| 83 | int jmax = nCurPerform*nWidth/nTotalPerforms; | ||
| 84 | for( int j = 0; j < jmax; j++ ) | ||
| 85 | { | ||
| 86 | fputc('#', stdout ); | ||
| 87 | } | ||
| 88 | jmax = nWidth-jmax; | ||
| 89 | for( int j = 0; j < jmax; j++ ) | ||
| 90 | { | ||
| 91 | fputc(' ', stdout ); | ||
| 92 | } | ||
| 93 | nLen += nWidth; | ||
| 94 | nLen += printf("] %-2d%% %s", | ||
| 95 | nCurPerform*100/nTotalPerforms, | ||
| 96 | pPerform->getTarget().c_str() ); | ||
| 97 | |||
| 98 | if( nLastLen > nLen ) | ||
| 99 | { | ||
| 100 | jmax = nLastLen-nLen; | ||
| 101 | for( int j = 0; j < jmax; j++ ) | ||
| 102 | { | ||
| 103 | fputc(' ', stdout ); | ||
| 104 | } | ||
| 105 | } | ||
| 106 | nLastLen = nLen; | ||
| 107 | |||
| 108 | fflush( stdout ); | ||
| 109 | } | ||
| 110 | |||
| 111 | void ViewerPercent::endPerform() | ||
| 112 | { | ||
| 113 | } | ||
| 114 | |||
diff --git a/src/viewerpercent.h b/src/viewerpercent.h new file mode 100644 index 0000000..96412cb --- /dev/null +++ b/src/viewerpercent.h | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | #ifndef VIEWER_PERCENT_H | ||
| 2 | #define VIEWER_PERCENT_H | ||
| 3 | |||
| 4 | #include <stdint.h> | ||
| 5 | |||
| 6 | #include "viewer.h" | ||
| 7 | |||
| 8 | class ViewerPercent : public Viewer | ||
| 9 | { | ||
| 10 | public: | ||
| 11 | ViewerPercent(); | ||
| 12 | virtual ~ViewerPercent(); | ||
| 13 | |||
| 14 | virtual void beginCommand( Action::eAction nAct, const std::string &sTarget ); | ||
| 15 | virtual void endCommand(); | ||
| 16 | |||
| 17 | virtual void beginRequiresCheck( bool bCached, const std::string &sName ); | ||
| 18 | virtual void endRequiresCheck(); | ||
| 19 | virtual void beginPerform( Perform *pPerform ); | ||
| 20 | virtual void endPerform(); | ||
| 21 | virtual void beginPerforms( int nCount ); | ||
| 22 | virtual void endPerforms(); | ||
| 23 | virtual void beginAction( const std::string &sName, int nCommands ); | ||
| 24 | virtual void endAction(); | ||
| 25 | |||
| 26 | private: | ||
| 27 | int nTotalCommands; | ||
| 28 | int nCurCommand; | ||
| 29 | int nTotalPerforms; | ||
| 30 | int nCurPerform; | ||
| 31 | std::string sTarget; | ||
| 32 | int nLastLen; | ||
| 33 | int nWidth; | ||
| 34 | }; | ||
| 35 | |||
| 36 | #endif | ||
diff --git a/src/viewerplain.cpp b/src/viewerplain.cpp index b6f2095..5690215 100644 --- a/src/viewerplain.cpp +++ b/src/viewerplain.cpp | |||
| @@ -12,7 +12,7 @@ ViewerPlain::~ViewerPlain() | |||
| 12 | { | 12 | { |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | void ViewerPlain::beginCommand( Action::eAction nAct, const std::string &sTarget, int nPerforms ) | 15 | void ViewerPlain::beginCommand( Action::eAction nAct, const std::string &sTarget ) |
| 16 | { | 16 | { |
| 17 | printf("--- %s ---\n", sTarget.c_str() ); | 17 | printf("--- %s ---\n", sTarget.c_str() ); |
| 18 | } | 18 | } |
diff --git a/src/viewerplain.h b/src/viewerplain.h index 6e37c28..978d50b 100644 --- a/src/viewerplain.h +++ b/src/viewerplain.h | |||
| @@ -11,7 +11,7 @@ public: | |||
| 11 | ViewerPlain(); | 11 | ViewerPlain(); |
| 12 | virtual ~ViewerPlain(); | 12 | virtual ~ViewerPlain(); |
| 13 | 13 | ||
| 14 | virtual void beginCommand( Action::eAction nAct, const std::string &sTarget, int nPerforms ); | 14 | virtual void beginCommand( Action::eAction nAct, const std::string &sTarget ); |
| 15 | virtual void endCommand(); | 15 | virtual void endCommand(); |
| 16 | 16 | ||
| 17 | virtual void beginRequiresCheck( bool bCached, const std::string &sName ); | 17 | virtual void beginRequiresCheck( bool bCached, const std::string &sName ); |
