all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] catalog_shell: add exit command
@ 2020-07-15  9:40 Dominik Csapak
  2020-07-15 10:21 ` [pbs-devel] applied: " Wolfgang Bumiller
  0 siblings, 1 reply; 2+ messages in thread
From: Dominik Csapak @ 2020-07-15  9:40 UTC (permalink / raw)
  To: pbs-devel

it is nice to have a command to exit from the shell instead of
only allowing ctrl+d or ctrl+c

the api method is just for documentation/help purposes and does nothing
by itself, the real logic is directly in the read loop

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/backup/catalog_shell.rs | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/backup/catalog_shell.rs b/src/backup/catalog_shell.rs
index d59f738..99552cd 100644
--- a/src/backup/catalog_shell.rs
+++ b/src/backup/catalog_shell.rs
@@ -89,6 +89,10 @@ pub fn catalog_shell_cli() -> CommandLineInterface {
                 "find",
                 CliCommand::new(&API_METHOD_FIND_COMMAND).arg_param(&["pattern"]),
             )
+            .insert(
+                "exit",
+                CliCommand::new(&API_METHOD_EXIT),
+            )
             .insert_help(),
     )
 }
@@ -104,6 +108,14 @@ fn complete_path(complete_me: &str, _map: &HashMap<String, String>) -> Vec<Strin
     }
 }
 
+// just an empty wrapper so that it is displayed in help/docs, we check
+// in the readloop for 'exit' again break
+#[api(input: { properties: {} })]
+/// Exit the shell
+async fn exit() -> Result<(), Error> {
+    Ok(())
+}
+
 #[api(input: { properties: {} })]
 /// List the current working directory.
 async fn pwd_command() -> Result<(), Error> {
@@ -439,6 +451,9 @@ impl Shell {
             SHELL = Some(this as *mut Shell as usize);
         }
         while let Ok(line) = this.rl.readline(&this.prompt) {
+            if line == "exit" {
+                break;
+            }
             let helper = this.rl.helper().unwrap();
             let args = match cli::shellword_split(&line) {
                 Ok(args) => args,
-- 
2.20.1





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pbs-devel] applied: [PATCH proxmox-backup] catalog_shell: add exit command
  2020-07-15  9:40 [pbs-devel] [PATCH proxmox-backup] catalog_shell: add exit command Dominik Csapak
@ 2020-07-15 10:21 ` Wolfgang Bumiller
  0 siblings, 0 replies; 2+ messages in thread
From: Wolfgang Bumiller @ 2020-07-15 10:21 UTC (permalink / raw)
  To: Dominik Csapak; +Cc: pbs-devel

applied

On Wed, Jul 15, 2020 at 11:40:42AM +0200, Dominik Csapak wrote:
> it is nice to have a command to exit from the shell instead of
> only allowing ctrl+d or ctrl+c
> 
> the api method is just for documentation/help purposes and does nothing
> by itself, the real logic is directly in the read loop
> 
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
>  src/backup/catalog_shell.rs | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/src/backup/catalog_shell.rs b/src/backup/catalog_shell.rs
> index d59f738..99552cd 100644
> --- a/src/backup/catalog_shell.rs
> +++ b/src/backup/catalog_shell.rs
> @@ -89,6 +89,10 @@ pub fn catalog_shell_cli() -> CommandLineInterface {
>                  "find",
>                  CliCommand::new(&API_METHOD_FIND_COMMAND).arg_param(&["pattern"]),
>              )
> +            .insert(
> +                "exit",
> +                CliCommand::new(&API_METHOD_EXIT),
> +            )
>              .insert_help(),
>      )
>  }
> @@ -104,6 +108,14 @@ fn complete_path(complete_me: &str, _map: &HashMap<String, String>) -> Vec<Strin
>      }
>  }
>  
> +// just an empty wrapper so that it is displayed in help/docs, we check
> +// in the readloop for 'exit' again break
> +#[api(input: { properties: {} })]
> +/// Exit the shell
> +async fn exit() -> Result<(), Error> {
> +    Ok(())
> +}
> +
>  #[api(input: { properties: {} })]
>  /// List the current working directory.
>  async fn pwd_command() -> Result<(), Error> {
> @@ -439,6 +451,9 @@ impl Shell {
>              SHELL = Some(this as *mut Shell as usize);
>          }
>          while let Ok(line) = this.rl.readline(&this.prompt) {
> +            if line == "exit" {
> +                break;
> +            }
>              let helper = this.rl.helper().unwrap();
>              let args = match cli::shellword_split(&line) {
>                  Ok(args) => args,
> -- 
> 2.20.1
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-07-15 10:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-15  9:40 [pbs-devel] [PATCH proxmox-backup] catalog_shell: add exit command Dominik Csapak
2020-07-15 10:21 ` [pbs-devel] applied: " Wolfgang Bumiller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal