@@ -26,7 +26,7 @@ use noelware_config::{
26
26
} ;
27
27
use remi_azure:: Credential ;
28
28
use serde:: { Deserialize , Serialize } ;
29
- use std:: { borrow:: Cow , path:: PathBuf , str:: FromStr } ;
29
+ use std:: { borrow:: Cow , env :: VarError , path:: PathBuf , str:: FromStr } ;
30
30
31
31
/// Represents the configuration for configuring
32
32
#[ derive( Debug , Clone , Serialize , Deserialize ) ]
@@ -65,8 +65,8 @@ impl TryFromEnv for Config {
65
65
} ) ) ,
66
66
67
67
"s3" => Ok ( Config :: S3 ( remi_s3:: S3StorageConfig {
68
- enable_signer_v4_requests : env ! ( "UME_STORAGE_S3_ENABLE_SIGNER_V4_REQUESTS" , to: bool ) ,
69
- enforce_path_access_style : env ! ( "UME_STORAGE_S3_ENFORCE_PATH_ACCESS_STYLE" , to: bool ) ,
68
+ enable_signer_v4_requests : env ! ( "UME_STORAGE_S3_ENABLE_SIGNER_V4_REQUESTS" , to: bool , or_else : false ) ,
69
+ enforce_path_access_style : env ! ( "UME_STORAGE_S3_ENFORCE_PATH_ACCESS_STYLE" , to: bool , or_else : false ) ,
70
70
default_object_acl : env ! ( "UME_STORAGE_S3_DEFAULT_OBJECT_ACL" , {
71
71
or_else: Some ( ObjectCannedAcl :: BucketOwnerFullControl ) ;
72
72
mapper: |val| ObjectCannedAcl :: from_str( val. as_str( ) ) . ok( ) ;
@@ -77,17 +77,21 @@ impl TryFromEnv for Config {
77
77
mapper: |val| BucketCannedAcl :: from_str( val. as_str( ) ) . ok( ) ;
78
78
} ) ,
79
79
80
- secret_access_key : env ! ( "UME_STORAGE_S3_SECRET_ACCESS_KEY" )
81
- . expect ( "required env variable [UME_STORAGE_S3_SECRET_ACCESS_KEY]" ) ,
80
+ secret_access_key : env ! ( "UME_STORAGE_S3_SECRET_ACCESS_KEY" ) . map_err ( |e| match e {
81
+ VarError :: NotPresent => eyre ! ( "you're required to add the [UME_STORAGE_S3_SECRET_ACCESS_KEY] environment variable" ) ,
82
+ VarError :: NotUnicode ( _) => eyre ! ( "wanted valid UTF-8 for env `UME_STORAGE_S3_SECRET_ACCESS_KEY`" )
83
+ } ) ?,
82
84
83
- access_key_id : env ! ( "UME_STORAGE_S3_ACCESS_KEY_ID" )
84
- . expect ( "required env variable [UME_STORAGE_S3_ACCESS_KEY_ID]" ) ,
85
+ access_key_id : env ! ( "UME_STORAGE_S3_ACCESS_KEY_ID" ) . map_err ( |e| match e {
86
+ VarError :: NotPresent => eyre ! ( "you're required to add the [UME_STORAGE_S3_ACCESS_KEY_ID] environment variable" ) ,
87
+ VarError :: NotUnicode ( _) => eyre ! ( "wanted valid UTF-8 for env `UME_STORAGE_S3_ACCESS_KEY_ID`" )
88
+ } ) ?,
85
89
86
90
app_name : env ! ( "UME_STORAGE_S3_APP_NAME" , is_optional: true ) ,
87
91
endpoint : env ! ( "UME_STORAGE_S3_ENDPOINT" , is_optional: true ) ,
88
92
prefix : env ! ( "UME_STORAGE_S3_PREFIX" , is_optional: true ) ,
89
93
region : env ! ( "UME_STORAGE_S3_REGION" , {
90
- or_else: Some ( Region :: new( Cow :: Owned ( "us-east-1" . to_owned ( ) ) ) ) ;
94
+ or_else: Some ( Region :: new( Cow :: Borrowed ( "us-east-1" ) ) ) ;
91
95
mapper: |val| Some ( Region :: new( Cow :: Owned ( val) ) ) ;
92
96
} ) ,
93
97
@@ -330,7 +334,20 @@ fn to_env_location() -> eyre::Result<azure_storage::CloudLocation> {
330
334
address : env ! ( "UME_STORAGE_AZURE_EMULATOR_ADDRESS" )
331
335
. context ( "missing required env [UME_STORAGE_AZURE_EMULATOR_ADDRESS]" ) ?,
332
336
333
- port : env ! ( "UME_STORAGE_AZURE_EMULATOR_PORT" , to: u16 ) ,
337
+ port : match env ! ( "UME_STORAGE_AZURE_EMULATOR_PORT" ) {
338
+ Ok ( res) => res. parse :: < u16 > ( ) ?,
339
+ Err ( VarError :: NotPresent ) => {
340
+ return Err ( eyre ! (
341
+ "missing `UME_STORAGE_AZURE_EMULATOR_PORT` environment variable"
342
+ ) )
343
+ }
344
+
345
+ Err ( VarError :: NotUnicode ( _) ) => {
346
+ return Err ( eyre ! (
347
+ "`UME_STORAGE_AZURE_EMULATOR_PORT` env was not in valid UTF-8"
348
+ ) )
349
+ }
350
+ } ,
334
351
} ) ,
335
352
336
353
"custom" => Ok ( azure_storage:: CloudLocation :: Custom {
0 commit comments