1111#include " services/network_instantiations/NetworkAdapter.hpp"
1212#include " services/tracer/GlobalTracer.hpp"
1313#include " services/tracer/TracerOnIoOutputInfrastructure.hpp"
14+ #include < cstdlib>
15+
16+ std::string Env (const char * name)
17+ {
18+ auto result = std::getenv (name);
19+ if (result != nullptr )
20+ return result;
21+ else
22+ return " " ;
23+ }
1424
1525int main (int argc, const char * argv[], const char * env[])
1626{
@@ -24,25 +34,35 @@ int main(int argc, const char* argv[], const char* env[])
2434
2535 try
2636 {
27- parser.ParseCLI (argc, argv);
37+ std::string firmwareArg = Env (" POSTMASTER_FIRMWARE" );
38+ std::string urlArg = Env (" POSTMASTER_IP" );
39+ std::string passwordArg = Env (" POSTMASTER_PASSWORD" );
40+
41+ if (firmwareArg.empty () && urlArg.empty ())
42+ {
43+ parser.ParseCLI (argc, argv);
44+ firmwareArg = args::get (firmwareArgument);
45+ urlArg = args::get (urlArgument);
46+ passwordArg = args::get (passwordArgument);
47+ }
2848
2949 static hal::TimerServiceGeneric timerService;
3050 static hal::SynchronousRandomDataGeneratorGeneric randomDataGenerator;
3151 static main_::TracerOnIoOutputInfrastructure tracer;
3252 static main_::NetworkAdapter network;
3353 static hal::FileSystemGeneric fileSystem;
3454
35- static auto firmware = firmwareArgument ? fileSystem.ReadBinaryFile (args::get (firmwareArgument) ) : std::vector<uint8_t >{};
55+ static auto firmware = !firmwareArg. empty () ? fileSystem.ReadBinaryFile (firmwareArg ) : std::vector<uint8_t >{};
3656
3757 static services::HttpClientConnectorWithNameResolverImpl<> connector (network.ConnectionFactoryWithNameResolver ());
38- static infra::BoundedString::WithStorage<512 > httpUrl{ args::get (urlArgument) };
39- static infra::BoundedString::WithStorage<512 > webSocketUrl{ args::get (urlArgument) };
40- static application::EchoWebSocketClientFactory webSocketFactory (webSocketUrl, 80 , network.ConnectionFactory (), tracer.tracer );
58+ static infra::BoundedString::WithStorage<512 > httpUrl{ urlArg };
59+ static infra::BoundedString::WithStorage<512 > webSocketUrl{ urlArg };
60+ static application::EchoWebSocketClientFactory webSocketFactory (webSocketUrl, services::PortFromUrl (webSocketUrl). ValueOr ( 80 ) , network.ConnectionFactory (), tracer.tracer );
4161 static services::HttpClientWebSocketInitiation webSocketInitiation (webSocketFactory, connector,
4262 webSocketFactory, randomDataGenerator, services::noAutoConnect);
43- static application::HttpClientAuthenticationDigest::WithMaxHeaders<10 > clientAuthentication{ args::get (passwordArgument) , randomDataGenerator };
63+ static application::HttpClientAuthenticationDigest::WithMaxHeaders<10 > clientAuthentication{ passwordArg , randomDataGenerator };
4464 static services::HttpClientAuthenticationConnector clientAuthenticationConnector{ connector, clientAuthentication };
45- static application::FlexHttpClient httpClient (httpUrl, 80 , clientAuthenticationConnector, firmware, webSocketInitiation, tracer.tracer );
65+ static application::FlexHttpClient httpClient (httpUrl, services::PortFromUrl (httpUrl). ValueOr ( 80 ) , clientAuthenticationConnector, firmware, webSocketInitiation, tracer.tracer );
4666
4767 network.ExecuteUntil ([&]()
4868 {
0 commit comments