]> Creatis software - cpPlugins.git/blob - appli/plugins/ExecutePipeline.cxx
623b74e02d90ed07f1dcc89a89bc4c5a391598b1
[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->AddEnvironments( "." );
24     interface->LoadPaths( "." );
25     interface->LoadEnvironments( );
26     interface->GuessPlugins( );
27   }
28   catch( std::exception& err )
29   {
30     std::cerr << "Error caught: " << err.what( ) << std::endl;
31     return( 1 );
32
33   } // yrt
34
35   // Workspace
36   cpPlugins::Interface::Workspace::Pointer workspace =
37     cpPlugins::Interface::Workspace::New( );
38   try
39   {
40     workspace->Load( argv[ 1 ] );
41   }
42   catch( std::exception& err )
43   {
44     std::cerr
45       << "Error loading workspace \"" << argv[ 1 ]
46       << "\": " << err.what( ) << std::endl;
47     return( 1 );
48
49   } // yrt
50     
51   // Read parameters
52   for( int i = 2; i < argc; ++i )
53   {
54     std::vector< std::string > tokens;
55     cpPlugins::Tokenize( tokens, argv[ i ], "@=" );
56     if( tokens.size( ) == 3 )
57     {
58       auto filter = workspace->GetFilter( tokens[ 1 ] );
59       if( filter != NULL )
60       {
61         auto params = filter->GetParameters( );
62         params->SetString( tokens[ 0 ], tokens[ 2 ], true );
63
64       } // fi
65
66     } // fi
67
68   } // rof
69
70   // Execute filter
71   workspace->PrintExecutionOn( );
72   try
73   {
74     workspace->Execute( );
75   }
76   catch( std::exception& err1 )
77   {
78     std::cerr << std::endl << "********************************" << std::endl;
79     std::cerr << "Error caught: " << err1.what( ) << std::endl;
80     std::cerr << "********************************" << std::endl;
81     return( 1 );
82   }
83   catch( itk::ExceptionObject& err2 )
84   {
85     std::cerr << std::endl << "********************************" << std::endl;
86     std::cerr << "Error caught: " << err2 << std::endl;
87     std::cerr << "********************************" << std::endl;
88     return( 1 );
89   }
90   catch( ... )
91   {
92     std::cerr << std::endl << "********************************" << std::endl;
93     std::cerr << "Unknown error caught." << std::endl;
94     std::cerr << "********************************" << std::endl;
95     return( 1 );
96
97   } // yrt
98   return( 0 );
99 }
100
101 // eof - $RCSfile$