#[non_exhaustive]pub struct NodegroupBuilder { /* private fields */ }
Expand description
A builder for Nodegroup
.
Implementations§
Source§impl NodegroupBuilder
impl NodegroupBuilder
Sourcepub fn nodegroup_name(self, input: impl Into<String>) -> Self
pub fn nodegroup_name(self, input: impl Into<String>) -> Self
The name associated with an Amazon EKS managed node group.
Sourcepub fn set_nodegroup_name(self, input: Option<String>) -> Self
pub fn set_nodegroup_name(self, input: Option<String>) -> Self
The name associated with an Amazon EKS managed node group.
Sourcepub fn get_nodegroup_name(&self) -> &Option<String>
pub fn get_nodegroup_name(&self) -> &Option<String>
The name associated with an Amazon EKS managed node group.
Sourcepub fn nodegroup_arn(self, input: impl Into<String>) -> Self
pub fn nodegroup_arn(self, input: impl Into<String>) -> Self
The Amazon Resource Name (ARN) associated with the managed node group.
Sourcepub fn set_nodegroup_arn(self, input: Option<String>) -> Self
pub fn set_nodegroup_arn(self, input: Option<String>) -> Self
The Amazon Resource Name (ARN) associated with the managed node group.
Sourcepub fn get_nodegroup_arn(&self) -> &Option<String>
pub fn get_nodegroup_arn(&self) -> &Option<String>
The Amazon Resource Name (ARN) associated with the managed node group.
Sourcepub fn cluster_name(self, input: impl Into<String>) -> Self
pub fn cluster_name(self, input: impl Into<String>) -> Self
The name of your cluster.
Sourcepub fn set_cluster_name(self, input: Option<String>) -> Self
pub fn set_cluster_name(self, input: Option<String>) -> Self
The name of your cluster.
Sourcepub fn get_cluster_name(&self) -> &Option<String>
pub fn get_cluster_name(&self) -> &Option<String>
The name of your cluster.
Sourcepub fn version(self, input: impl Into<String>) -> Self
pub fn version(self, input: impl Into<String>) -> Self
The Kubernetes version of the managed node group.
Sourcepub fn set_version(self, input: Option<String>) -> Self
pub fn set_version(self, input: Option<String>) -> Self
The Kubernetes version of the managed node group.
Sourcepub fn get_version(&self) -> &Option<String>
pub fn get_version(&self) -> &Option<String>
The Kubernetes version of the managed node group.
Sourcepub fn release_version(self, input: impl Into<String>) -> Self
pub fn release_version(self, input: impl Into<String>) -> Self
If the node group was deployed using a launch template with a custom AMI, then this is the AMI ID that was specified in the launch template. For node groups that weren't deployed using a launch template, this is the version of the Amazon EKS optimized AMI that the node group was deployed with.
Sourcepub fn set_release_version(self, input: Option<String>) -> Self
pub fn set_release_version(self, input: Option<String>) -> Self
If the node group was deployed using a launch template with a custom AMI, then this is the AMI ID that was specified in the launch template. For node groups that weren't deployed using a launch template, this is the version of the Amazon EKS optimized AMI that the node group was deployed with.
Sourcepub fn get_release_version(&self) -> &Option<String>
pub fn get_release_version(&self) -> &Option<String>
If the node group was deployed using a launch template with a custom AMI, then this is the AMI ID that was specified in the launch template. For node groups that weren't deployed using a launch template, this is the version of the Amazon EKS optimized AMI that the node group was deployed with.
Sourcepub fn created_at(self, input: DateTime) -> Self
pub fn created_at(self, input: DateTime) -> Self
The Unix epoch timestamp at object creation.
Sourcepub fn set_created_at(self, input: Option<DateTime>) -> Self
pub fn set_created_at(self, input: Option<DateTime>) -> Self
The Unix epoch timestamp at object creation.
Sourcepub fn get_created_at(&self) -> &Option<DateTime>
pub fn get_created_at(&self) -> &Option<DateTime>
The Unix epoch timestamp at object creation.
Sourcepub fn modified_at(self, input: DateTime) -> Self
pub fn modified_at(self, input: DateTime) -> Self
The Unix epoch timestamp for the last modification to the object.
Sourcepub fn set_modified_at(self, input: Option<DateTime>) -> Self
pub fn set_modified_at(self, input: Option<DateTime>) -> Self
The Unix epoch timestamp for the last modification to the object.
Sourcepub fn get_modified_at(&self) -> &Option<DateTime>
pub fn get_modified_at(&self) -> &Option<DateTime>
The Unix epoch timestamp for the last modification to the object.
Sourcepub fn status(self, input: NodegroupStatus) -> Self
pub fn status(self, input: NodegroupStatus) -> Self
The current status of the managed node group.
Sourcepub fn set_status(self, input: Option<NodegroupStatus>) -> Self
pub fn set_status(self, input: Option<NodegroupStatus>) -> Self
The current status of the managed node group.
Sourcepub fn get_status(&self) -> &Option<NodegroupStatus>
pub fn get_status(&self) -> &Option<NodegroupStatus>
The current status of the managed node group.
Sourcepub fn capacity_type(self, input: CapacityTypes) -> Self
pub fn capacity_type(self, input: CapacityTypes) -> Self
The capacity type of your managed node group.
Sourcepub fn set_capacity_type(self, input: Option<CapacityTypes>) -> Self
pub fn set_capacity_type(self, input: Option<CapacityTypes>) -> Self
The capacity type of your managed node group.
Sourcepub fn get_capacity_type(&self) -> &Option<CapacityTypes>
pub fn get_capacity_type(&self) -> &Option<CapacityTypes>
The capacity type of your managed node group.
Sourcepub fn scaling_config(self, input: NodegroupScalingConfig) -> Self
pub fn scaling_config(self, input: NodegroupScalingConfig) -> Self
The scaling configuration details for the Auto Scaling group that is associated with your node group.
Sourcepub fn set_scaling_config(self, input: Option<NodegroupScalingConfig>) -> Self
pub fn set_scaling_config(self, input: Option<NodegroupScalingConfig>) -> Self
The scaling configuration details for the Auto Scaling group that is associated with your node group.
Sourcepub fn get_scaling_config(&self) -> &Option<NodegroupScalingConfig>
pub fn get_scaling_config(&self) -> &Option<NodegroupScalingConfig>
The scaling configuration details for the Auto Scaling group that is associated with your node group.
Sourcepub fn instance_types(self, input: impl Into<String>) -> Self
pub fn instance_types(self, input: impl Into<String>) -> Self
Appends an item to instance_types
.
To override the contents of this collection use set_instance_types
.
If the node group wasn't deployed with a launch template, then this is the instance type that is associated with the node group. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn set_instance_types(self, input: Option<Vec<String>>) -> Self
pub fn set_instance_types(self, input: Option<Vec<String>>) -> Self
If the node group wasn't deployed with a launch template, then this is the instance type that is associated with the node group. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn get_instance_types(&self) -> &Option<Vec<String>>
pub fn get_instance_types(&self) -> &Option<Vec<String>>
If the node group wasn't deployed with a launch template, then this is the instance type that is associated with the node group. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn subnets(self, input: impl Into<String>) -> Self
pub fn subnets(self, input: impl Into<String>) -> Self
Appends an item to subnets
.
To override the contents of this collection use set_subnets
.
The subnets that were specified for the Auto Scaling group that is associated with your node group.
Sourcepub fn set_subnets(self, input: Option<Vec<String>>) -> Self
pub fn set_subnets(self, input: Option<Vec<String>>) -> Self
The subnets that were specified for the Auto Scaling group that is associated with your node group.
Sourcepub fn get_subnets(&self) -> &Option<Vec<String>>
pub fn get_subnets(&self) -> &Option<Vec<String>>
The subnets that were specified for the Auto Scaling group that is associated with your node group.
Sourcepub fn remote_access(self, input: RemoteAccessConfig) -> Self
pub fn remote_access(self, input: RemoteAccessConfig) -> Self
If the node group wasn't deployed with a launch template, then this is the remote access configuration that is associated with the node group. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn set_remote_access(self, input: Option<RemoteAccessConfig>) -> Self
pub fn set_remote_access(self, input: Option<RemoteAccessConfig>) -> Self
If the node group wasn't deployed with a launch template, then this is the remote access configuration that is associated with the node group. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn get_remote_access(&self) -> &Option<RemoteAccessConfig>
pub fn get_remote_access(&self) -> &Option<RemoteAccessConfig>
If the node group wasn't deployed with a launch template, then this is the remote access configuration that is associated with the node group. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn ami_type(self, input: AmiTypes) -> Self
pub fn ami_type(self, input: AmiTypes) -> Self
If the node group was deployed using a launch template with a custom AMI, then this is CUSTOM
. For node groups that weren't deployed using a launch template, this is the AMI type that was specified in the node group configuration.
Sourcepub fn set_ami_type(self, input: Option<AmiTypes>) -> Self
pub fn set_ami_type(self, input: Option<AmiTypes>) -> Self
If the node group was deployed using a launch template with a custom AMI, then this is CUSTOM
. For node groups that weren't deployed using a launch template, this is the AMI type that was specified in the node group configuration.
Sourcepub fn get_ami_type(&self) -> &Option<AmiTypes>
pub fn get_ami_type(&self) -> &Option<AmiTypes>
If the node group was deployed using a launch template with a custom AMI, then this is CUSTOM
. For node groups that weren't deployed using a launch template, this is the AMI type that was specified in the node group configuration.
Sourcepub fn node_role(self, input: impl Into<String>) -> Self
pub fn node_role(self, input: impl Into<String>) -> Self
The IAM role associated with your node group. The Amazon EKS node kubelet
daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies.
Sourcepub fn set_node_role(self, input: Option<String>) -> Self
pub fn set_node_role(self, input: Option<String>) -> Self
The IAM role associated with your node group. The Amazon EKS node kubelet
daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies.
Sourcepub fn get_node_role(&self) -> &Option<String>
pub fn get_node_role(&self) -> &Option<String>
The IAM role associated with your node group. The Amazon EKS node kubelet
daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies.
Sourcepub fn labels(self, k: impl Into<String>, v: impl Into<String>) -> Self
pub fn labels(self, k: impl Into<String>, v: impl Into<String>) -> Self
Adds a key-value pair to labels
.
To override the contents of this collection use set_labels
.
The Kubernetes labels
applied to the nodes in the node group.
Only labels
that are applied with the Amazon EKS API are shown here. There may be other Kubernetes labels
applied to the nodes in this group.
Sourcepub fn set_labels(self, input: Option<HashMap<String, String>>) -> Self
pub fn set_labels(self, input: Option<HashMap<String, String>>) -> Self
The Kubernetes labels
applied to the nodes in the node group.
Only labels
that are applied with the Amazon EKS API are shown here. There may be other Kubernetes labels
applied to the nodes in this group.
Sourcepub fn get_labels(&self) -> &Option<HashMap<String, String>>
pub fn get_labels(&self) -> &Option<HashMap<String, String>>
The Kubernetes labels
applied to the nodes in the node group.
Only labels
that are applied with the Amazon EKS API are shown here. There may be other Kubernetes labels
applied to the nodes in this group.
Sourcepub fn taints(self, input: Taint) -> Self
pub fn taints(self, input: Taint) -> Self
Appends an item to taints
.
To override the contents of this collection use set_taints
.
The Kubernetes taints to be applied to the nodes in the node group when they are created. Effect is one of No_Schedule
, Prefer_No_Schedule
, or No_Execute
. Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. For more information, see Node taints on managed node groups.
Sourcepub fn set_taints(self, input: Option<Vec<Taint>>) -> Self
pub fn set_taints(self, input: Option<Vec<Taint>>) -> Self
The Kubernetes taints to be applied to the nodes in the node group when they are created. Effect is one of No_Schedule
, Prefer_No_Schedule
, or No_Execute
. Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. For more information, see Node taints on managed node groups.
Sourcepub fn get_taints(&self) -> &Option<Vec<Taint>>
pub fn get_taints(&self) -> &Option<Vec<Taint>>
The Kubernetes taints to be applied to the nodes in the node group when they are created. Effect is one of No_Schedule
, Prefer_No_Schedule
, or No_Execute
. Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. For more information, see Node taints on managed node groups.
Sourcepub fn resources(self, input: NodegroupResources) -> Self
pub fn resources(self, input: NodegroupResources) -> Self
The resources associated with the node group, such as Auto Scaling groups and security groups for remote access.
Sourcepub fn set_resources(self, input: Option<NodegroupResources>) -> Self
pub fn set_resources(self, input: Option<NodegroupResources>) -> Self
The resources associated with the node group, such as Auto Scaling groups and security groups for remote access.
Sourcepub fn get_resources(&self) -> &Option<NodegroupResources>
pub fn get_resources(&self) -> &Option<NodegroupResources>
The resources associated with the node group, such as Auto Scaling groups and security groups for remote access.
Sourcepub fn disk_size(self, input: i32) -> Self
pub fn disk_size(self, input: i32) -> Self
If the node group wasn't deployed with a launch template, then this is the disk size in the node group configuration. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn set_disk_size(self, input: Option<i32>) -> Self
pub fn set_disk_size(self, input: Option<i32>) -> Self
If the node group wasn't deployed with a launch template, then this is the disk size in the node group configuration. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn get_disk_size(&self) -> &Option<i32>
pub fn get_disk_size(&self) -> &Option<i32>
If the node group wasn't deployed with a launch template, then this is the disk size in the node group configuration. If the node group was deployed with a launch template, then this is null
.
Sourcepub fn health(self, input: NodegroupHealth) -> Self
pub fn health(self, input: NodegroupHealth) -> Self
The health status of the node group. If there are issues with your node group's health, they are listed here.
Sourcepub fn set_health(self, input: Option<NodegroupHealth>) -> Self
pub fn set_health(self, input: Option<NodegroupHealth>) -> Self
The health status of the node group. If there are issues with your node group's health, they are listed here.
Sourcepub fn get_health(&self) -> &Option<NodegroupHealth>
pub fn get_health(&self) -> &Option<NodegroupHealth>
The health status of the node group. If there are issues with your node group's health, they are listed here.
Sourcepub fn update_config(self, input: NodegroupUpdateConfig) -> Self
pub fn update_config(self, input: NodegroupUpdateConfig) -> Self
The node group update configuration.
Sourcepub fn set_update_config(self, input: Option<NodegroupUpdateConfig>) -> Self
pub fn set_update_config(self, input: Option<NodegroupUpdateConfig>) -> Self
The node group update configuration.
Sourcepub fn get_update_config(&self) -> &Option<NodegroupUpdateConfig>
pub fn get_update_config(&self) -> &Option<NodegroupUpdateConfig>
The node group update configuration.
Sourcepub fn node_repair_config(self, input: NodeRepairConfig) -> Self
pub fn node_repair_config(self, input: NodeRepairConfig) -> Self
The node auto repair configuration for the node group.
Sourcepub fn set_node_repair_config(self, input: Option<NodeRepairConfig>) -> Self
pub fn set_node_repair_config(self, input: Option<NodeRepairConfig>) -> Self
The node auto repair configuration for the node group.
Sourcepub fn get_node_repair_config(&self) -> &Option<NodeRepairConfig>
pub fn get_node_repair_config(&self) -> &Option<NodeRepairConfig>
The node auto repair configuration for the node group.
Sourcepub fn launch_template(self, input: LaunchTemplateSpecification) -> Self
pub fn launch_template(self, input: LaunchTemplateSpecification) -> Self
If a launch template was used to create the node group, then this is the launch template that was used.
Sourcepub fn set_launch_template(
self,
input: Option<LaunchTemplateSpecification>,
) -> Self
pub fn set_launch_template( self, input: Option<LaunchTemplateSpecification>, ) -> Self
If a launch template was used to create the node group, then this is the launch template that was used.
Sourcepub fn get_launch_template(&self) -> &Option<LaunchTemplateSpecification>
pub fn get_launch_template(&self) -> &Option<LaunchTemplateSpecification>
If a launch template was used to create the node group, then this is the launch template that was used.
Adds a key-value pair to tags
.
To override the contents of this collection use set_tags
.
Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.
Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.
Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.
Trait Implementations§
Source§impl Clone for NodegroupBuilder
impl Clone for NodegroupBuilder
Source§fn clone(&self) -> NodegroupBuilder
fn clone(&self) -> NodegroupBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for NodegroupBuilder
impl Debug for NodegroupBuilder
Source§impl Default for NodegroupBuilder
impl Default for NodegroupBuilder
Source§fn default() -> NodegroupBuilder
fn default() -> NodegroupBuilder
Source§impl PartialEq for NodegroupBuilder
impl PartialEq for NodegroupBuilder
impl StructuralPartialEq for NodegroupBuilder
Auto Trait Implementations§
impl Freeze for NodegroupBuilder
impl RefUnwindSafe for NodegroupBuilder
impl Send for NodegroupBuilder
impl Sync for NodegroupBuilder
impl Unpin for NodegroupBuilder
impl UnwindSafe for NodegroupBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);