Skip to content

Commit 474fa4b

Browse files
committed
Add option to read environment variables from a file
Add option "environmentFile=..." that can be point to a separate file containing environment variables in ENV=VALUE pairs, which is normally used in /etc/default/ config files. Change-Id: If21d6c260d93f1ada309eb4e917b30e9c2daa877 Reviewed-by: Kari Oikarinen <[email protected]>
1 parent 5ab7fdb commit 474fa4b

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

main.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,25 @@ static int findFirstFreePort(Utils::PortList &range)
195195
return openServer(&s, range);
196196
}
197197

198+
bool readEnvs(Config *config)
199+
{
200+
QFile f(config->envFile);
201+
if (!f.open(QFile::ReadOnly)) {
202+
fprintf(stderr, "Could not read environment file: %s\n", qPrintable(config->envFile));
203+
return false;
204+
}
205+
206+
while (!f.atEnd()) {
207+
const auto line = f.readLine().simplified();
208+
if (!line.startsWith("#")) {
209+
const auto index = line.indexOf('=');
210+
config->env[line.left(index)] = line.mid(index + 1);
211+
}
212+
}
213+
f.close();
214+
return true;
215+
}
216+
198217
bool parseConfigFile(Config *config, const QString &fileName)
199218
{
200219
QFile f(fileName);
@@ -227,6 +246,8 @@ bool parseConfigFile(Config *config, const QString &fileName)
227246
config->debugInterface = Config::PublicDebugInterface;
228247
else
229248
qWarning() << "Unkonwn value for debuginterface:" << value;
249+
} else if (line.startsWith("environmentFile=")) {
250+
config->envFile = line.mid(16).simplified();
230251
}
231252
}
232253
f.close();
@@ -349,6 +370,8 @@ int main(int argc, char **argv)
349370
Config config;
350371
if (!parseConfigFile(&config, "/etc/appcontroller.conf"))
351372
fprintf(stderr, "Failed to parse config file.\n");
373+
if (!config.envFile.isEmpty())
374+
readEnvs(&config);
352375

353376
while (!args.isEmpty()) {
354377
const QString arg(args.takeFirst());

process.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ struct Config {
4242
QMap<QString,QString> env;
4343
QStringList args;
4444
DebugInterface debugInterface;
45+
QString envFile;
4546
};
4647

4748
class Process : public QObject

0 commit comments

Comments
 (0)