MCPcopy Create free account
hub / github.com/dropbox/dbxcli / parseShareLinkUpdateOptions

Function parseShareLinkUpdateOptions

cmd/share_link_update.go:150–218  ·  view source on GitHub ↗
(cmd *cobra.Command)

Source from the content-addressed store, hash-verified

148}
149
150func parseShareLinkUpdateOptions(cmd *cobra.Command) (shareLinkUpdateOptions, error) {
151 expiresChanged := cmd.Flags().Changed("expires")
152 removeExpiration, err := cmd.Flags().GetBool("remove-expiration")
153 if err != nil {
154 return shareLinkUpdateOptions{}, err
155 }
156 allowDownload, err := cmd.Flags().GetBool("allow-download")
157 if err != nil {
158 return shareLinkUpdateOptions{}, err
159 }
160 disallowDownload, err := cmd.Flags().GetBool("disallow-download")
161 if err != nil {
162 return shareLinkUpdateOptions{}, err
163 }
164 audienceChanged := cmd.Flags().Changed("audience")
165 password, err := sharedLinkPasswordFromFlags(cmd)
166 if err != nil {
167 return shareLinkUpdateOptions{}, err
168 }
169 removePassword, err := localBoolFlag(cmd, "remove-password")
170 if err != nil {
171 return shareLinkUpdateOptions{}, err
172 }
173
174 if expiresChanged && removeExpiration {
175 return shareLinkUpdateOptions{}, invalidArgumentsErrorWithDetails("`--expires` and `--remove-expiration` cannot be used together", flagsErrorDetails("expires", "remove-expiration"))
176 }
177 if allowDownload && disallowDownload {
178 return shareLinkUpdateOptions{}, invalidArgumentsErrorWithDetails("`--allow-download` and `--disallow-download` cannot be used together", flagsErrorDetails("allow-download", "disallow-download"))
179 }
180 if password.set && removePassword {
181 return shareLinkUpdateOptions{}, invalidArgumentsErrorWithDetails("password-setting flags and `--remove-password` cannot be used together", flagsErrorDetails("password", "password-prompt", "password-file", "remove-password"))
182 }
183 if !expiresChanged && !removeExpiration && !allowDownload && !disallowDownload && !audienceChanged && !password.set && !removePassword {
184 return shareLinkUpdateOptions{}, invalidArgumentsErrorWithDetails("at least one shared link setting flag is required", flagsErrorDetails("expires", "remove-expiration", "allow-download", "disallow-download", "audience", "password", "password-prompt", "password-file", "remove-password"))
185 }
186
187 var expires *time.Time
188 if expiresChanged {
189 value, err := cmd.Flags().GetString("expires")
190 if err != nil {
191 return shareLinkUpdateOptions{}, err
192 }
193 parsed, err := time.Parse(time.RFC3339, value)
194 if err != nil {
195 return shareLinkUpdateOptions{}, invalidArgumentsErrorfWithDetails("invalid --expires %q: use RFC3339 timestamp", flagValueErrorDetails("expires", value), value)
196 }
197 expires = &parsed
198 }
199
200 var audience *sharing.LinkAudience
201 if audienceChanged {
202 parsed, err := shareLinkAudienceFlag(cmd)
203 if err != nil {
204 return shareLinkUpdateOptions{}, err
205 }
206 audience = parsed
207 }

Callers 1

shareLinkUpdateFunction · 0.85

Calls 7

localBoolFlagFunction · 0.85
flagsErrorDetailsFunction · 0.85
flagValueErrorDetailsFunction · 0.85
shareLinkAudienceFlagFunction · 0.85

Tested by

no test coverage detected