]> git.immae.eu Git - perso/Immae/Config/Ansible.git/commitdiff
Move bash functions to separate scripts
authorIsmaël Bouya <ismael.bouya@fretlink.com>
Wed, 21 Nov 2018 18:11:56 +0000 (19:11 +0100)
committerIsmaël Bouya <ismael.bouya@fretlink.com>
Wed, 21 Nov 2018 18:11:56 +0000 (19:11 +0100)
roles/contexts/fretlink/files/scripts/_fl_tmux_dev [new file with mode: 0644]
roles/contexts/fretlink/files/scripts/fl_getDump [new file with mode: 0644]
roles/contexts/fretlink/files/scripts/fl_tmux_dev [new file with mode: 0644]
roles/contexts/fretlink/files/scripts/fl_vpn [new file with mode: 0644]
roles/contexts/fretlink/tasks/main.yml
roles/shell/bash/templates/bashrc.j2
roles/tools/templates/tmux.conf.j2

diff --git a/roles/contexts/fretlink/files/scripts/_fl_tmux_dev b/roles/contexts/fretlink/files/scripts/_fl_tmux_dev
new file mode 100644 (file)
index 0000000..3cfe50a
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+_fl_tmux_dev() {
+  COMPREPLY=()
+  local cur="${COMP_WORDS[COMP_CWORD]}"
+  prefix="$HOME/workdir/"
+  local IFS=$'\n'
+  local items=($(IFS=' ' compgen -W "bash remote puppet" -- $cur) $(compgen -d $prefix$cur))
+  for item in ${items[@]}; do
+    [[ $item == $prefix.* ]] && continue
+    COMPREPLY+=("${item#$prefix}")
+  done
+}
+complete -o filenames -F _fl_tmux_dev fl_tmux_dev
diff --git a/roles/contexts/fretlink/files/scripts/fl_getDump b/roles/contexts/fretlink/files/scripts/fl_getDump
new file mode 100644 (file)
index 0000000..808dc01
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+s3cmd -c <(pass show Travail/Fretlink/S3) get "$1"
diff --git a/roles/contexts/fretlink/files/scripts/fl_tmux_dev b/roles/contexts/fretlink/files/scripts/fl_tmux_dev
new file mode 100644 (file)
index 0000000..ca89e27
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+type="${1:-bash}"
+if [ -n "$TMUX" ]; then
+  m=switch-client
+else
+  m=attach-session
+fi
+
+case "$type" in
+  "bash") start_dir="$HOME";;
+  "remote") start_dir="$HOME";;
+  "puppet") start_dir="/etc/puppetlabs/code"
+esac
+
+if tmux has-session -t "$type" 2>/dev/null; then
+  tmux $m -t "$type"
+else
+  if [ "$type" = "remote" ]; then
+    tmux new-session -d -c $start_dir -s "$type" mosh immae.eu \; \
+        $m -t "$type"
+  elif [ -n "$start_dir" ]; then
+    tmux new-session -d -c $start_dir -s "$type" \; \
+        $m -t "$type" \; \
+        new-window -c $start_dir
+  elif [ -d "$HOME/workdir/$type" ]; then
+    tmux new-session -d -c "$HOME/workdir/$type" -s "$type" \; \
+        $m -t "$type" \; \
+        send-keys "../start" C-m \; \
+        rename-window "running" \; \
+        new-window -c "$HOME/workdir/$type"
+  else
+    echo "Unknown session" >&2
+    exit 1
+  fi
+fi
diff --git a/roles/contexts/fretlink/files/scripts/fl_vpn b/roles/contexts/fretlink/files/scripts/fl_vpn
new file mode 100644 (file)
index 0000000..1d3bc36
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+TMPFILE=$(mktemp /tmp/openvpn.XXXXXX)
+
+trap "rm -f $TMPFILE" EXIT
+
+pass show Travail/Fretlink/OpenVPN >> $TMPFILE
+sudo openvpn $TMPFILE
index 4106bf1f6e0ba8d10b556ce97aa414c58c63fac2..ce69e02ee48ad4090f0be05d8a9177f41bcc64a9 100644 (file)
     scope: user
     name: remind@work.service
     enabled: true
+- name: scripts
+  block:
+    - name: completion directory
+      file:
+        state: directory
+        path: $XDG_DATA_HOME/bash_completion
+    - name: scripts
+      copy:
+        mode: 0755
+        src: "scripts/{{ item }}"
+        dest: "$HOME/.local/bin/{{ item }}"
+      loop:
+        - fl_tmux_dev
+        - fl_vpn
+        - fl_getDump
+    - name: completion scripts
+      copy:
+        src: "scripts/_{{ item }}"
+        dest: "$XDG_DATA_HOME/bash_completion/_{{ item }}"
+      loop:
+        - fl_tmux_dev
index bf5acfafcb3dc3f695a59cae8712b3d06f4c4dd5..0dc80c0962da9f074424121615fb2dcf9e0cbf0b 100644 (file)
@@ -33,16 +33,17 @@ alias info='info -v active-link-style=yellow,bold -v link-style=yellow'
 
 [[ -f /usr/share/stgit/completion/stgit-completion.bash ]] && . /usr/share/stgit/completion/stgit-completion.bash
 
+if [[ -d "$XDG_DATA_HOME/bash_completion" ]]; then
+  for i in $XDG_DATA_HOME/bash_completion/*; do
+    [[ -f "$i" && -r "$i" ]] && . "$i"
+  done
+fi
+
 {% if role.get(profile) == "fretlink" %}
 ##### Some Fretlink aliases
-alias getDump='s3cmd -c <(pass show Travail/Fretlink/S3) get '
-
-function vpn() {
-  TMPFILE=$(mktemp /tmp/openvpn.XXXXXX)
-  pass show Travail/Fretlink/OpenVPN >> $TMPFILE
-  sudo openvpn $TMPFILE
-  rm -f $TMPFILE
-}
+alias vpn=fl_vpn
+alias tmux_dev=fl_tmux_dev
+complete -o filenames -F _fl_tmux_dev tmux_dev
 
 function dev_prompt() {
   if [ -n "$FRETLINK_ENV" ]; then
@@ -50,56 +51,6 @@ function dev_prompt() {
   fi
 }
 
-function tmux_dev() {
-  type="${1:-bash}"
-  if [ -n "$TMUX" ]; then
-    m=switch-client
-  else
-    m=attach-session
-  fi
-
-  case "$type" in
-    "bash") start_dir="$HOME";;
-    "remote") start_dir="$HOME";;
-    "puppet") start_dir="/etc/puppetlabs/code"
-  esac
-
-  if tmux has-session -t "$type" 2>/dev/null; then
-    tmux $m -t "$type"
-  else
-    if [ "$type" = "remote" ]; then
-      tmux new-session -d -c $start_dir -s "$type" mosh immae.eu \; \
-          $m -t "$type"
-    elif [ -n "$start_dir" ]; then
-      tmux new-session -d -c $start_dir -s "$type" \; \
-          $m -t "$type" \; \
-          new-window -c $start_dir
-    elif [ -d "$HOME/workdir/$type" ]; then
-      tmux new-session -d -c "$HOME/workdir/$type" -s "$type" \; \
-          $m -t "$type" \; \
-          send-keys "../start" C-m \; \
-          rename-window "running" \; \
-          new-window -c "$HOME/workdir/$type"
-    else
-      echo "Unknown session" >&2
-      false
-    fi
-  fi
-}
-
-_tmux_dev() {
-  COMPREPLY=()
-  local cur="${COMP_WORDS[COMP_CWORD]}"
-  prefix="$HOME/workdir/"
-  local IFS=$'\n'
-  local items=($(IFS=' ' compgen -W "bash remote puppet" -- $cur) $(compgen -d $prefix$cur))
-  for item in ${items[@]}; do
-    [[ $item == $prefix.* ]] && continue
-    COMPREPLY+=("${item#$prefix}")
-  done
-}
-complete -o filenames -F _tmux_dev tmux_dev
-
 if [ -n "$TMUX" ]; then
   TMUX_SESSION_NAME=$(tmux display-message -p "#S")
   export HISTFILE="$XDG_STATE_HOME/bash/tmux_${TMUX_SESSION_NAME}_history"
index 03133360a838f23b2146f3345500c138da928612..07e88b96feef00a49adde38016cbb6ed8a90b83a 100644 (file)
@@ -37,7 +37,7 @@ bind-key -T off F12 set-option -u prefix \; set-option -u key-table \; set-optio
 bind-key -T off C-M-PageDown switch-client -n
 bind-key -T off C-M-PageUp switch-client -p
 
-bind-key Tab command-prompt -p "which session?" "run-shell \"bash -i -c 'tmux_dev %1'\""
+bind-key Tab command-prompt -p "which session?" "run-shell \"fl_tmux_dev %1\""
 
 # même hack que sur screen lorsqu'on veut profiter du scroll du terminal
 # (xterm ...)