66"""
77import os
88import java .io .File as JFile
9+ import java .io .BufferedReader as BufferedReader
10+ import java .io .InputStreamReader as InputStreamReader
11+ import java .io .IOException as IOException
912import java .lang .IllegalArgumentException as JIllegalArgumentException
13+ import java .lang .System as System
1014import java .net .URI as JURI
1115import java .net .URISyntaxException as JURISyntaxException
1216
@@ -45,12 +49,16 @@ class CommandLineArgUtil(object):
4549 ADMIN_USER_SWITCH = '-admin_user'
4650 # phony arg used as a key to store the password
4751 ADMIN_PASS_SWITCH = '-admin_pass'
52+ ADMIN_PASS_FILE_SWITCH = '-admin_pass_file'
53+ ADMIN_PASS_ENV_SWITCH = '-admin_pass_env'
4854 ARCHIVE_FILE_SWITCH = '-archive_file'
4955 SKIP_ARCHIVE_FILE_SWITCH = '-skip_archive'
5056 MODEL_FILE_SWITCH = '-model_file'
5157 DISCARD_CURRENT_EDIT_SWITCH = '-discard_current_edit'
5258 OPSS_WALLET_SWITCH = '-opss_wallet'
5359 OPSS_WALLET_PASSPHRASE = '-opss_wallet_passphrase'
60+ OPSS_WALLET_FILE_PASSPHRASE = '-opss_wallet_passphrase_file'
61+ OPSS_WALLET_ENV_PASSPHRASE = '-opss_wallet_passphrase_env'
5462 PREVIOUS_MODEL_FILE_SWITCH = '-prev_model_file'
5563 VARIABLE_FILE_SWITCH = '-variable_file'
5664 RCU_DB_SWITCH = '-rcu_db'
@@ -62,6 +70,8 @@ class CommandLineArgUtil(object):
6270 RCU_SCHEMA_PASS_SWITCH = '-rcu_schema_pass'
6371 # phony arg used as a key to store the encryption passphrase
6472 PASSPHRASE_SWITCH = '-passphrase'
73+ PASSPHRASE_ENV_SWITCH = '-passphrase_env'
74+ PASSPHRASE_FILE_SWITCH = '-passphrase_file'
6575 ENCRYPT_MANUAL_SWITCH = '-manual'
6676 # phony arg used as a key to store the password
6777 ONE_PASS_SWITCH = '-password'
@@ -230,10 +240,26 @@ def process_args(self, args, tool_type=TOOL_TYPE_DEFAULT, trailing_arg_count=0):
230240 value , idx = self ._get_arg_value (args , idx )
231241 self ._validate_admin_pass_arg (value )
232242 self ._add_arg (key , value )
243+ elif self .is_admin_pass_env_key (key ):
244+ env_var , idx = self ._get_arg_value (args , idx )
245+ value = self ._get_env_var_value (env_var )
246+ self ._add_arg (self .get_admin_pass_key (), value )
247+ elif self .is_admin_pass_file_key (key ):
248+ file_var , idx = self ._get_arg_value (args , idx )
249+ value = self ._get_from_file_value (file_var )
250+ self ._add_arg (self .get_admin_pass_key (), value )
233251 elif self .is_archive_file_key (key ):
234252 value , idx = self ._get_arg_value (args , idx )
235253 full_path = self ._validate_archive_file_arg (value )
236254 self ._add_arg (key , full_path , True )
255+ elif self .is_opss_passphrase_env (key ):
256+ env_var , idx = self ._get_arg_value (args , idx )
257+ value = self ._get_env_var_value (env_var )
258+ self ._add_arg (self .get_opss_passphrase_key (), value )
259+ elif self .is_opss_passphrase_file (key ):
260+ file_var , idx = self ._get_arg_value (args , idx )
261+ value = self ._get_from_file_value (file_var )
262+ self ._add_arg (self .get_opss_passphrase_key (), value )
237263 elif self .is_opss_passphrase_key (key ):
238264 value , idx = self ._get_arg_value (args , idx )
239265 self ._validate_opss_passphrase_arg (value )
@@ -281,6 +307,14 @@ def process_args(self, args, tool_type=TOOL_TYPE_DEFAULT, trailing_arg_count=0):
281307 value , idx = self ._get_arg_value (args , idx )
282308 self ._validate_passphrase_arg (value )
283309 self ._add_arg (key , value )
310+ elif self .is_passphrase_env_switch (key ):
311+ env_var , idx = self ._get_arg_value (args , idx )
312+ value = self ._get_env_var_value (env_var )
313+ self ._add_arg (self .get_passphrase_switch (), value )
314+ elif self .is_passphrase_file_switch (key ):
315+ file_var , idx = self ._get_arg_value (args , idx )
316+ value = self ._get_from_file_value (file_var )
317+ self ._add_arg (self .get_passphrase_switch (), value )
284318 elif self .is_one_pass_switch (key ):
285319 value , idx = self ._get_arg_value (args , idx )
286320 self ._validate_one_pass_arg (value )
@@ -663,6 +697,12 @@ def get_admin_pass_key(self):
663697 def is_admin_pass_key (self , key ):
664698 return self .ADMIN_PASS_SWITCH == key
665699
700+ def is_admin_pass_env_key (self , key ):
701+ return self .ADMIN_PASS_ENV_SWITCH == key
702+
703+ def is_admin_pass_file_key (self , key ):
704+ return self .ADMIN_PASS_FILE_SWITCH == key
705+
666706 def _validate_admin_pass_arg (self , value ):
667707 method_name = '_validate_admin_pass_arg'
668708
@@ -709,6 +749,14 @@ def is_opss_passphrase_key(self, key):
709749
710750 return self .OPSS_WALLET_PASSPHRASE == key
711751
752+ def is_opss_passphrase_env (self , key ):
753+
754+ return self .OPSS_WALLET_ENV_PASSPHRASE == key
755+
756+ def is_opss_passphrase_file (self , key ):
757+
758+ return self .OPSS_WALLET_FILE_PASSPHRASE == key
759+
712760 def _validate_opss_passphrase_arg (self , value ):
713761 method_name = '_validate_opss_passphrase_arg'
714762 if value is None or len (value ) == 0 :
@@ -721,6 +769,12 @@ def _validate_opss_passphrase_arg(self, value):
721769 def get_opss_wallet_key (self ):
722770 return self .OPSS_WALLET_SWITCH
723771
772+ def get_opss_wallet_env (self ):
773+ return self .OPSS_WALLET_ENV_SWITCH
774+
775+ def get_opss_wallet_file (self ):
776+ return self .OPSS_WALLET__SWITCH
777+
724778 def is_opss_wallet_key (self , key ):
725779 return self .OPSS_WALLET_SWITCH == key
726780
@@ -885,12 +939,45 @@ def _validate_rcu_schema_pass_arg(self, value):
885939 raise ex
886940 return
887941
942+ def _get_env_var_value (self , env_var ):
943+ _method_name = '_get_env_var_value'
944+ value = System .getenv (env_var )
945+ if not value :
946+ ex = exception_helper .create_cla_exception ('WLSDPLY-01649' , env_var )
947+ ex .setExitCode (self .ARG_VALIDATION_ERROR_EXIT_CODE )
948+ self ._logger .throwing (ex , class_name = self ._class_name , method_name = _method_name )
949+ raise ex
950+ return value
951+
952+ def _get_from_file_value (self , file_var ):
953+ _method_name = '_get_from_file_value'
954+ ifile = None
955+ try :
956+ stream = JFileUtils .getFileAsStream (file_var )
957+ ifile = BufferedReader (InputStreamReader (stream ))
958+ value = ifile .readLine ()
959+ ifile .close ()
960+ return value
961+ except IOException :
962+ if ifile :
963+ ifile .close ()
964+ ex = exception_helper .create_cla_exception ('WLSDPLY-01651' , file_var )
965+ ex .setExitCode (self .ARG_VALIDATION_ERROR_EXIT_CODE )
966+ self ._logger .throwing (ex , class_name = self ._class_name , method_name = _method_name )
967+ raise ex
968+
888969 def get_passphrase_switch (self ):
889970 return self .PASSPHRASE_SWITCH
890971
891972 def is_passphrase_switch (self , key ):
892973 return self .PASSPHRASE_SWITCH == key
893974
975+ def is_passphrase_env_switch (self , key ):
976+ return self .PASSPHRASE_ENV_SWITCH == key
977+
978+ def is_passphrase_file_switch (self , key ):
979+ return self .PASSPHRASE_FILE_SWITCH == key
980+
894981 def _validate_passphrase_arg (self , value ):
895982 method_name = '_validate_passphrase_switch'
896983
0 commit comments