Split OciImageConfig's user into separate user/group fields
--user/--group are now handled as separate strings (ResolvedUser), so parse config.User's "<user>[:<group>]" the same way instead of leaving callers to split the combined spec themselves. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gv3s5jckJKzh6JkMoi2Akz
This commit is contained in:
+8
-1
@@ -368,7 +368,14 @@ std::optional<OciImageConfig> read_oci_image_config(const std::filesystem::path&
|
|||||||
try {
|
try {
|
||||||
json runtime_config = config_json.value("config", json::object());
|
json runtime_config = config_json.value("config", json::object());
|
||||||
|
|
||||||
result.user = runtime_config.value("User", "");
|
std::string user_spec = runtime_config.value("User", "");
|
||||||
|
auto colon_pos = user_spec.find(':');
|
||||||
|
if (colon_pos == std::string::npos) {
|
||||||
|
result.user = user_spec;
|
||||||
|
} else {
|
||||||
|
result.user = user_spec.substr(0, colon_pos);
|
||||||
|
result.group = user_spec.substr(colon_pos + 1);
|
||||||
|
}
|
||||||
|
|
||||||
json exposed_ports = runtime_config.value("ExposedPorts", json::object());
|
json exposed_ports = runtime_config.value("ExposedPorts", json::object());
|
||||||
if (exposed_ports.is_object()) {
|
if (exposed_ports.is_object()) {
|
||||||
|
|||||||
+2
-1
@@ -66,7 +66,8 @@ struct OciExposedPort {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct OciImageConfig {
|
struct OciImageConfig {
|
||||||
std::string user; // config.User, e.g. "git:git"; empty if unset
|
std::string user; // config.User's "<user>" part; empty if unset
|
||||||
|
std::string group; // config.User's optional ":<group>" part; empty if unset
|
||||||
std::vector<OciExposedPort> exposed_ports; // config.ExposedPorts keys, parsed "<port>/<proto>"
|
std::vector<OciExposedPort> exposed_ports; // config.ExposedPorts keys, parsed "<port>/<proto>"
|
||||||
std::vector<std::string> env; // config.Env, e.g. "PATH=..."
|
std::vector<std::string> env; // config.Env, e.g. "PATH=..."
|
||||||
std::vector<std::string> volumes; // config.Volumes keys, e.g. "/var/lib/mysql"
|
std::vector<std::string> volumes; // config.Volumes keys, e.g. "/var/lib/mysql"
|
||||||
|
|||||||
Reference in New Issue
Block a user