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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>The detail data for a template sync configuration.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct TemplateSyncConfig {
    /// <p>The template name.</p>
    pub template_name: ::std::string::String,
    /// <p>The template type.</p>
    pub template_type: crate::types::TemplateType,
    /// <p>The repository provider.</p>
    pub repository_provider: crate::types::RepositoryProvider,
    /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    pub repository_name: ::std::string::String,
    /// <p>The repository branch.</p>
    pub branch: ::std::string::String,
    /// <p>A subdirectory path to your template bundle version.</p>
    pub subdirectory: ::std::option::Option<::std::string::String>,
}
impl TemplateSyncConfig {
    /// <p>The template name.</p>
    pub fn template_name(&self) -> &str {
        use std::ops::Deref;
        self.template_name.deref()
    }
    /// <p>The template type.</p>
    pub fn template_type(&self) -> &crate::types::TemplateType {
        &self.template_type
    }
    /// <p>The repository provider.</p>
    pub fn repository_provider(&self) -> &crate::types::RepositoryProvider {
        &self.repository_provider
    }
    /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    pub fn repository_name(&self) -> &str {
        use std::ops::Deref;
        self.repository_name.deref()
    }
    /// <p>The repository branch.</p>
    pub fn branch(&self) -> &str {
        use std::ops::Deref;
        self.branch.deref()
    }
    /// <p>A subdirectory path to your template bundle version.</p>
    pub fn subdirectory(&self) -> ::std::option::Option<&str> {
        self.subdirectory.as_deref()
    }
}
impl TemplateSyncConfig {
    /// Creates a new builder-style object to manufacture [`TemplateSyncConfig`](crate::types::TemplateSyncConfig).
    pub fn builder() -> crate::types::builders::TemplateSyncConfigBuilder {
        crate::types::builders::TemplateSyncConfigBuilder::default()
    }
}

/// A builder for [`TemplateSyncConfig`](crate::types::TemplateSyncConfig).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct TemplateSyncConfigBuilder {
    pub(crate) template_name: ::std::option::Option<::std::string::String>,
    pub(crate) template_type: ::std::option::Option<crate::types::TemplateType>,
    pub(crate) repository_provider: ::std::option::Option<crate::types::RepositoryProvider>,
    pub(crate) repository_name: ::std::option::Option<::std::string::String>,
    pub(crate) branch: ::std::option::Option<::std::string::String>,
    pub(crate) subdirectory: ::std::option::Option<::std::string::String>,
}
impl TemplateSyncConfigBuilder {
    /// <p>The template name.</p>
    /// This field is required.
    pub fn template_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.template_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The template name.</p>
    pub fn set_template_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.template_name = input;
        self
    }
    /// <p>The template name.</p>
    pub fn get_template_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.template_name
    }
    /// <p>The template type.</p>
    /// This field is required.
    pub fn template_type(mut self, input: crate::types::TemplateType) -> Self {
        self.template_type = ::std::option::Option::Some(input);
        self
    }
    /// <p>The template type.</p>
    pub fn set_template_type(mut self, input: ::std::option::Option<crate::types::TemplateType>) -> Self {
        self.template_type = input;
        self
    }
    /// <p>The template type.</p>
    pub fn get_template_type(&self) -> &::std::option::Option<crate::types::TemplateType> {
        &self.template_type
    }
    /// <p>The repository provider.</p>
    /// This field is required.
    pub fn repository_provider(mut self, input: crate::types::RepositoryProvider) -> Self {
        self.repository_provider = ::std::option::Option::Some(input);
        self
    }
    /// <p>The repository provider.</p>
    pub fn set_repository_provider(mut self, input: ::std::option::Option<crate::types::RepositoryProvider>) -> Self {
        self.repository_provider = input;
        self
    }
    /// <p>The repository provider.</p>
    pub fn get_repository_provider(&self) -> &::std::option::Option<crate::types::RepositoryProvider> {
        &self.repository_provider
    }
    /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    /// This field is required.
    pub fn repository_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.repository_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    pub fn set_repository_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.repository_name = input;
        self
    }
    /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    pub fn get_repository_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.repository_name
    }
    /// <p>The repository branch.</p>
    /// This field is required.
    pub fn branch(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.branch = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The repository branch.</p>
    pub fn set_branch(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.branch = input;
        self
    }
    /// <p>The repository branch.</p>
    pub fn get_branch(&self) -> &::std::option::Option<::std::string::String> {
        &self.branch
    }
    /// <p>A subdirectory path to your template bundle version.</p>
    pub fn subdirectory(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.subdirectory = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>A subdirectory path to your template bundle version.</p>
    pub fn set_subdirectory(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.subdirectory = input;
        self
    }
    /// <p>A subdirectory path to your template bundle version.</p>
    pub fn get_subdirectory(&self) -> &::std::option::Option<::std::string::String> {
        &self.subdirectory
    }
    /// Consumes the builder and constructs a [`TemplateSyncConfig`](crate::types::TemplateSyncConfig).
    /// This method will fail if any of the following fields are not set:
    /// - [`template_name`](crate::types::builders::TemplateSyncConfigBuilder::template_name)
    /// - [`template_type`](crate::types::builders::TemplateSyncConfigBuilder::template_type)
    /// - [`repository_provider`](crate::types::builders::TemplateSyncConfigBuilder::repository_provider)
    /// - [`repository_name`](crate::types::builders::TemplateSyncConfigBuilder::repository_name)
    /// - [`branch`](crate::types::builders::TemplateSyncConfigBuilder::branch)
    pub fn build(self) -> ::std::result::Result<crate::types::TemplateSyncConfig, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::TemplateSyncConfig {
            template_name: self.template_name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "template_name",
                    "template_name was not specified but it is required when building TemplateSyncConfig",
                )
            })?,
            template_type: self.template_type.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "template_type",
                    "template_type was not specified but it is required when building TemplateSyncConfig",
                )
            })?,
            repository_provider: self.repository_provider.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "repository_provider",
                    "repository_provider was not specified but it is required when building TemplateSyncConfig",
                )
            })?,
            repository_name: self.repository_name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "repository_name",
                    "repository_name was not specified but it is required when building TemplateSyncConfig",
                )
            })?,
            branch: self.branch.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "branch",
                    "branch was not specified but it is required when building TemplateSyncConfig",
                )
            })?,
            subdirectory: self.subdirectory,
        })
    }
}