public static AppOptions ValidateAndCreate(AppOptionsRaw rawOptions) { if (!rawOptions.ClusterHostname.HasValue()) { return(new InvalidAppOptions("No ClusterHostname specified")); } var config = new AppOptions { SecureCluster = rawOptions.CertificateThumbprint.HasValue(), ClusterHostname = rawOptions.ClusterHostname.Value(), ClusterPort = OptionsHelper.GetIntOrDefaultValue(rawOptions.ClusterPort, 19080), CertificateThumbprint = OptionsHelper.GetStringOrDefaultValue(rawOptions.CertificateThumbprint, string.Empty), CertificateStore = OptionsHelper.GetEnumValueOrDefault(rawOptions.CertificateStore, StoreName.My), CertificateLocation = OptionsHelper.GetEnumValueOrDefault(rawOptions.CertificateLocation, StoreLocation.CurrentUser), Verbose = rawOptions.Verbose.HasValue() }; return(config); }