]> Creatis software - cpPlugins.git/blob - appli/plugins/ExecutePipeline.cxx
128583d85f53396a24e8b8464ef08829aaba689f
[cpPlugins.git] / appli / plugins / ExecutePipeline.cxx
1 #include <iostream>
2 #include <cpPlugins/Utility.h>
3 #include <cpPlugins/Interface/Plugins.h>
4 #include <cpPlugins/Interface/Workspace.h>
5
6 int main( int argc, char* argv[] )
7 {
8   // Manage inputs
9   if( argc < 2 )
10   {
11     std::cerr
12       << "Usage: " << argv[ 0 ]
13       << " workspace [parameters]" << std::endl;
14     return( 1 );
15
16   } // fi
17
18   // Create interface and load library
19   cpPlugins::Interface::Plugins::Pointer interface =
20     cpPlugins::Interface::Plugins::New( );
21   try
22   {
23     interface->GuessPlugins( );
24   }
25   catch( std::exception& err )
26   {
27     std::cerr << "Error caught: " << err.what( ) << std::endl;
28     return( 1 );
29
30   } // yrt
31
32   // Workspace
33   cpPlugins::Interface::Workspace::Pointer workspace =
34     cpPlugins::Interface::Workspace::New( );
35   try
36   {
37     workspace->Load( argv[ 1 ] );
38   }
39   catch( std::exception& err )
40   {
41     std::cerr
42       << "Error loading workspace \"" << argv[ 1 ]
43       << "\": " << err.what( ) << std::endl;
44     return( 1 );
45
46   } // yrt
47     
48   // Read parameters
49   for( int i = 2; i < argc; ++i )
50   {
51     std::vector< std::string > tokens;
52     cpPlugins::Tokenize( tokens, argv[ i ], "@=" );
53     if( tokens.size( ) == 3 )
54     {
55       auto filter = workspace->GetFilter( tokens[ 1 ] );
56       if( filter != NULL )
57       {
58         auto params = filter->GetParameters( );
59         params->SetString( tokens[ 0 ], tokens[ 2 ], true );
60
61       } // fi
62
63     } // fi
64
65   } // rof
66
67   // Execute filter
68   workspace->PrintExecutionOn( );
69   try
70   {
71     workspace->Update( );
72   }
73   catch( std::exception& err )
74   {
75     std::cerr << std::endl << "********************************" << std::endl;
76     std::cerr << "Error caught: " << err.what( ) << std::endl;
77     std::cerr << "********************************" << std::endl;
78     return( 1 );
79
80   } // yrt
81   return( 0 );
82 }
83
84 // eof - $RCSfile$