package com.airlock.iam.system.platform;

import java.util.Optional;
import java.util.Properties;

public record OperatingSystem(String name, String version, String architecture) {
   public static OperatingSystem currentOperatingSystem(Properties properties) {
      String name = properties.getProperty("os.name", "unknown operating system");
      String version = properties.getProperty("os.version");
      String architecture = properties.getProperty("os.arch");
      return new OperatingSystem(name, version, architecture);
   }

   public String asString() {
      return "%s%s%s"
         .formatted(
            this.name,
            Optional.ofNullable(this.version).map(v -> " " + v).orElse(""),
            Optional.ofNullable(this.architecture).map(a -> " (" + a + ")").orElse("")
         );
   }
}
