From fde4d029a483b9233a9784335c4268fa0ba6f49d Mon Sep 17 00:00:00 2001
From: Cristiano Urban <cristiano.urban@inaf.it>
Date: Wed, 2 Jun 2021 13:47:30 +0200
Subject: [PATCH] Added bash-completion scripts for 'vos_data', 'vos_job' and
 'vos_storage' cli commands.

Signed-off-by: Cristiano Urban <cristiano.urban@inaf.it>
---
 client/Dockerfile                         | 10 +++++++++-
 client/config/bash_completion/vos_data    | 14 ++++++++++++++
 client/config/bash_completion/vos_job     | 20 ++++++++++++++++++++
 client/config/bash_completion/vos_storage | 14 ++++++++++++++
 4 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100644 client/config/bash_completion/vos_data
 create mode 100644 client/config/bash_completion/vos_job
 create mode 100644 client/config/bash_completion/vos_storage

diff --git a/client/Dockerfile b/client/Dockerfile
index 6260697..ad1b4c1 100644
--- a/client/Dockerfile
+++ b/client/Dockerfile
@@ -17,13 +17,16 @@ COPY *.py \
      vos_storage /usr/bin/vos_cli/
 RUN chmod -R 755 /usr/bin/vos_cli
 
+# Copy bash-completion scripts
+COPY config/bash_completion/* /usr/share/bash-completion/completions/
+
 # Copy configuration file
 RUN mkdir -p /etc/vos_cli
 COPY config/vos_cli.conf /etc/vos_cli/
 RUN chmod -R 755 /etc/vos_cli
 
 # Set the PAH environment variable
-ENV PATH "$PATH:/usr/bin/vos_cli"    
+ENV PATH "$PATH:/usr/bin/vos_cli"
     
 # Run commands as 'client' user
 USER client
@@ -31,5 +34,10 @@ USER client
 # Set up a workdir for the container
 WORKDIR /home/client/
 
+# Source bash-completion scripts
+RUN echo ". /usr/share/bash-completion/completions/vos_data" >> .bashrc && \
+    echo ". /usr/share/bash-completion/completions/vos_job" >> .bashrc && \
+    echo ". /usr/share/bash-completion/completions/vos_storage" >> .bashrc
+    
 # Install python dependencies
 RUN pip3.9 install --no-cache-dir redis tabulate
diff --git a/client/config/bash_completion/vos_data b/client/config/bash_completion/vos_data
new file mode 100644
index 0000000..9f7081a
--- /dev/null
+++ b/client/config/bash_completion/vos_data
@@ -0,0 +1,14 @@
+_vos_data()
+{
+  local cur prev opts
+  COMPREPLY=()
+  cur="${COMP_WORDS[COMP_CWORD]}"
+  prev="${COMP_WORDS[COMP_CWORD-1]}"
+  opts="cstore hstore"
+
+  if [[ ${cur} == ?store || ${COMP_CWORD} -eq 1 ]] ; then
+    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+    return 0
+  fi
+}
+complete -F _vos_data vos_data
diff --git a/client/config/bash_completion/vos_job b/client/config/bash_completion/vos_job
new file mode 100644
index 0000000..614748b
--- /dev/null
+++ b/client/config/bash_completion/vos_job
@@ -0,0 +1,20 @@
+_vos_job()
+{
+  local cur prev opts
+  COMPREPLY=()
+  cur="${COMP_WORDS[COMP_CWORD]}"
+  prev="${COMP_WORDS[COMP_CWORD-1]}"
+  opts="info list results"
+
+  if [[ ${cur} == info || ${cur} == results || ${COMP_CWORD} -eq 1 ]] ; then
+    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+    return 0
+  fi
+
+  if [[ ${prev} == list ]] ; then
+    status="completed error executing pending queued"
+    COMPREPLY=( $(compgen -W "${status}" -- ${cur}) )
+    return 0
+  fi
+}
+complete -F _vos_job vos_job
diff --git a/client/config/bash_completion/vos_storage b/client/config/bash_completion/vos_storage
new file mode 100644
index 0000000..5156a62
--- /dev/null
+++ b/client/config/bash_completion/vos_storage
@@ -0,0 +1,14 @@
+_vos_storage()
+{
+  local cur prev opts
+  COMPREPLY=()
+  cur="${COMP_WORDS[COMP_CWORD]}"
+  prev="${COMP_WORDS[COMP_CWORD-1]}"
+  opts="add del list"
+
+  if [[ ${cur} == add || ${cur} == del || ${cur} == list || ${COMP_CWORD} -eq 1 ]] ; then
+    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+    return 0
+  fi
+}
+complete -F _vos_storage vos_storage
-- 
GitLab