This repository was archived by the owner on Jan 31, 2025. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathDeploymentConfigurations.cpp
More file actions
104 lines (79 loc) · 3.39 KB
/
Copy pathDeploymentConfigurations.cpp
File metadata and controls
104 lines (79 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Copyright (c) 2020 The Orbit Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "SessionSetup/DeploymentConfigurations.h"
#include <absl/flags/flag.h>
#include <QChar>
#include <QCharRef>
#include <QCoreApplication>
#include <QDir>
#include <QProcessEnvironment>
#include <QString>
#include <optional>
#include "ClientFlags/ClientFlags.h"
static const char* const kSignatureExtension = ".asc";
static const char* const kPackageNameTemplate = "OrbitProfiler-%1.deb";
static const char* const kCollectorSubdirectory = "collector";
namespace {
std::optional<std::string> GetCollectorPath(const QProcessEnvironment& process_environment) {
constexpr const char* kEnvExecutablePath = "ORBIT_COLLECTOR_EXECUTABLE_PATH";
if (FLAGS_collector.IsSpecifiedOnCommandLine()) {
return absl::GetFlag(FLAGS_collector);
}
if (process_environment.contains(kEnvExecutablePath)) {
return process_environment.value(kEnvExecutablePath).toStdString();
}
return std::nullopt;
}
std::optional<std::string> GetCollectorRootPassword(
const QProcessEnvironment& process_environment) {
constexpr const char* kEnvRootPassword = "ORBIT_COLLECTOR_ROOT_PASSWORD";
if (FLAGS_collector_root_password.IsSpecifiedOnCommandLine()) {
return absl::GetFlag(FLAGS_collector_root_password);
}
if (process_environment.contains(kEnvRootPassword)) {
return process_environment.value(kEnvRootPassword).toStdString();
}
return std::nullopt;
}
} // namespace
namespace orbit_session_setup {
SignedDebianPackageDeployment::SignedDebianPackageDeployment() {
const auto version = []() {
auto ver = QCoreApplication::applicationVersion();
if (!ver.isEmpty() && ver[0] == 'v') {
ver = ver.mid(1);
}
return ver;
}();
const auto collector_directory =
QDir{QDir{QCoreApplication::applicationDirPath()}.absoluteFilePath(kCollectorSubdirectory)};
const auto deb_path =
collector_directory.absoluteFilePath(QString(kPackageNameTemplate).arg(version));
path_to_package = deb_path.toStdString();
path_to_signature = (deb_path + kSignatureExtension).toStdString();
}
DeploymentConfiguration FigureOutDeploymentConfiguration() {
if (absl::GetFlag(FLAGS_nodeploy)) {
return NoDeployment{};
}
constexpr const char* kEnvPackagePath = "ORBIT_COLLECTOR_PACKAGE_PATH";
constexpr const char* kEnvSignaturePath = "ORBIT_COLLECTOR_SIGNATURE_PATH";
constexpr const char* kEnvNoDeployment = "ORBIT_COLLECTOR_NO_DEPLOYMENT";
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
std::optional<std::string> collector_path = GetCollectorPath(env);
std::optional<std::string> collector_password = GetCollectorRootPassword(env);
if (collector_path.has_value() && collector_password.has_value()) {
return orbit_session_setup::BareExecutableAndRootPasswordDeployment{collector_path.value(),
collector_password.value()};
}
if (env.contains(kEnvPackagePath) && env.contains(kEnvSignaturePath)) {
return orbit_session_setup::SignedDebianPackageDeployment{
env.value(kEnvPackagePath).toStdString(), env.value(kEnvSignaturePath).toStdString()};
}
if (env.contains(kEnvNoDeployment)) {
return NoDeployment{};
}
return orbit_session_setup::SignedDebianPackageDeployment{};
}
} // namespace orbit_session_setup