diff options
| -rw-r--r-- | crates/shirabe/src/io/io_interface.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/crates/shirabe/src/io/io_interface.rs b/crates/shirabe/src/io/io_interface.rs index 0389b9a..1a6eb3f 100644 --- a/crates/shirabe/src/io/io_interface.rs +++ b/crates/shirabe/src/io/io_interface.rs @@ -1 +1,56 @@ //! ref: composer/src/Composer/IO/IOInterface.php + +use indexmap::IndexMap; +use shirabe_php_shim::PhpMixed; +use shirabe_external_packages::psr::log::logger_interface::LoggerInterface; +use crate::config::Config; + +pub trait IOInterface: LoggerInterface { + const QUIET: i64 = 1; + const NORMAL: i64 = 2; + const VERBOSE: i64 = 4; + const VERY_VERBOSE: i64 = 8; + const DEBUG: i64 = 16; + + fn is_interactive(&self) -> bool; + + fn is_verbose(&self) -> bool; + + fn is_very_verbose(&self) -> bool; + + fn is_debug(&self) -> bool; + + fn is_decorated(&self) -> bool; + + fn write(&self, messages: PhpMixed, newline: bool, verbosity: i64); + + fn write_error(&self, messages: PhpMixed, newline: bool, verbosity: i64); + + fn write_raw(&self, messages: PhpMixed, newline: bool, verbosity: i64); + + fn write_error_raw(&self, messages: PhpMixed, newline: bool, verbosity: i64); + + fn overwrite(&self, messages: PhpMixed, newline: bool, size: Option<i64>, verbosity: i64); + + fn overwrite_error(&self, messages: PhpMixed, newline: bool, size: Option<i64>, verbosity: i64); + + fn ask(&self, question: String, default: PhpMixed) -> PhpMixed; + + fn ask_confirmation(&self, question: String, default: bool) -> bool; + + fn ask_and_validate(&self, question: String, validator: Box<dyn Fn(PhpMixed) -> PhpMixed>, attempts: Option<i64>, default: PhpMixed) -> PhpMixed; + + fn ask_and_hide_answer(&self, question: String) -> Option<String>; + + fn select(&self, question: String, choices: Vec<String>, default: PhpMixed, attempts: PhpMixed, error_message: String, multiselect: bool) -> PhpMixed; + + fn get_authentications(&self) -> IndexMap<String, IndexMap<String, Option<String>>>; + + fn has_authentication(&self, repository_name: &str) -> bool; + + fn get_authentication(&self, repository_name: &str) -> IndexMap<String, Option<String>>; + + fn set_authentication(&self, repository_name: String, username: String, password: Option<String>); + + fn load_configuration(&self, config: &Config); +} |
