split up project manager
authorBenjamin Doumenc <big.clop@gmail.com>
Thu, 11 Jul 2013 15:04:31 +0000 (17:04 +0200)
committerBenjamin Doumenc <big.clop@gmail.com>
Thu, 11 Jul 2013 15:04:31 +0000 (17:04 +0200)
bash/bashject [new file with mode: 0644]
bash/customBashrc

diff --git a/bash/bashject b/bash/bashject
new file mode 100644 (file)
index 0000000..dff79d6
--- /dev/null
@@ -0,0 +1,156 @@
+
+# Project manager
+
+# This project manager allows you to have a quick to switch between several different work environments
+# Each project config is stored on a centralized file
+# Each project contains a local bash configuration, sourced when setting it
+#  
+# Usage:
+#    - Add a project with 'addProject name path'
+#    - Enter a project with 'setProject name'
+#    - Customize his environment with 'editProject name' (or editing his ${PRJ_PATH}/${PRJ_FILE})
+#
+# Exported vars:
+#    - PRJ_NAME: name of the project
+#    - PRJ_PATH: path to the root of the project
+#  
+# Exported functions
+#    - addProject name path     # Adds a project
+#    - setProject name          # Enter a project
+#    - getProjectNames          # Echoes all projects, separated by whitespaces
+#    - getProjectList           # Echoes all projects, separated by newlines (useful with dmenu, for example)
+#    - getProjectPath name      # Echoes a project's path
+#    - sourceProject name       # Source the project file of the specified project (useful to handle common envs)
+#    - cdProject                # cd to the current project root path
+#
+# Configuration (to override values, define them before sourcing this file)
+#    - PRJ_STORE                # File in which we store all projects configuration (default: ${HOME}/work/.projects)
+#    - PRJ_FILE                 # Name of the project file, created at his root and sourced on setProject (default: '.prj_env')
+#    - PRJ_CHANGE_PROMPT        # 1 to change the prompt to '[ $PRJ_NAME ] PS1' > on setProject (default: 1)
+#
+#
+
+OLD_PS1="$PS1"
+
+# Configuration
+
+PRJ_STORE=${PRJ_STORE:-${HOME}/work/.projects} # File in which we store all projects configuration
+PRJ_FILE=${PRJ_FILE:-".prj_env"}               # Name of the project file, created at his root and sourced on setProject
+PRJ_CHANGE_PROMPT=${PRJ_CHANGE_PROMPT:-1}      # 1 to change the prompt to [ $PRJ_NAME ] PS1 > on setProject
+
+# Real stuff
+addProject() {
+    if [ "$#" -eq "2" ]; then
+        local name=$1
+        local path=$(readlink -f $2)
+        echo "$name $path" >> ${PRJ_STORE}
+        if [ ! -f ${path}/${PRJ_FILE} ]; then
+            echo "Creating ${path}/${PRJ_FILE}"
+            echo "# Project ${name} " > ${path}/${PRJ_FILE}
+        fi
+    else
+        echo "Usage: addProject name path"
+    fi
+}
+
+getProjectNames() {
+    local NAMES=""
+    if [ -f ${PRJ_STORE} ]; then
+        while read name path; do
+            NAMES="$NAMES $name"
+        done < ${PRJ_STORE}
+        echo ${NAMES}
+    fi
+    return 0
+}
+
+getProjectList() {
+    local NAMES=""
+    if [ -f ${PRJ_STORE} ]; then
+        while read name path; do
+            echo $name
+        done < ${PRJ_STORE}
+    fi
+    return 0
+}
+
+_failedPath() {
+    echo "No project named '$1'."
+    echo "Similar projects: "
+    for name in $(compgen -W "$(getProjectNames)" -- $1); do
+        echo "  - $name"
+    done
+}
+
+getProjectPath() {
+    if [ -f ${PRJ_STORE} ]; then
+        while read name path; do
+            if [ "$1" = "$name" ]; then
+                echo $path
+                return 0
+            fi
+        done < ${PRJ_STORE}
+    fi
+    return 1
+}
+
+sourceProject() {
+    local path=$(getProjectPath $1)
+    if [ ! -z "$path" ]; then
+        source $path/${PRJ_FILE}
+        return 0
+    else
+        _failedPath $1
+    fi
+    return 1
+}
+
+editProject() {
+    local path=$(getProjectPath $1)
+    if [ ! -z "$path" ]; then
+        ${EDITOR} $path/${PRJ_FILE}
+        return 0
+    else
+        _failedPath $1
+    fi
+    return 1
+}
+
+setProject() {
+    # Find dir
+    PRJ_NAME=$1
+    PRJ_DIR=$(getProjectPath $PRJ_NAME)
+    if [ ! -z "$PRJ_DIR" ]; then
+        export PRJ_DIR
+        export PRJ_NAME
+        cd $PRJ_DIR
+        source $PRJ_DIR/${PRJ_FILE}
+        if [ "1" -eq "$PRJ_CHANGE_PROMPT" ]; then 
+            export PS1="[$PRJ_NAME] $OLD_PS1"
+        fi
+    else
+        _failedPath $PRJ_NAME
+    fi
+}
+
+# Define autocompletion functions 
+_project ()
+{
+        local cur
+        _get_comp_words_by_ref cur
+        COMPREPLY=()
+        local NAMES=$(getProjectNames)
+        COMPREPLY=( $(compgen -W "$(getProjectNames)" -- ${cur}) ) 
+        return 0
+} 
+
+complete -F _project setProject
+complete -F _project sourceProject
+complete -F _project editProject
+
+# HELPERS
+function cdProject() {
+       cd $PRJ_DIR
+}
+
+
index 06acdff..b2eae85 100644 (file)
@@ -1,152 +1,3 @@
-
-# Project manager
-
-# This project manager allows you to have a quick to switch between several different work environments
-# Each project config is stored on a centralized file
-# Each project contains a local bash configuration, sourced when setting it
-#  
-# Usage:
-#    - Add a project with 'addProject name path'
-#    - Enter a project with 'setProject name'
-#    - Customize his environment with 'editProject name' (or editing his ${PRJ_PATH}/${PRJ_FILE})
-#
-# Exported vars:
-#    - PRJ_NAME: name of the project
-#    - PRJ_PATH: path to the root of the project
-#  
-# Exported functions
-#    - addProject name path     # Adds a project
-#    - setProject name          # Enter a project
-#    - getProjectNames          # Echoes all projects, separated by whitespaces
-#    - getProjectList           # Echoes all projects, separated by newlines (useful with dmenu, for example)
-#    - getProjectPath name      # Echoes a project's path
-#    - sourceProject name       # Source the project file of the specified project (useful to handle common envs)
-#    - cdProject                # cd to the current project root path
-#
-# Configuration (to override values, define them before sourcing this file)
-#    - PRJ_STORE                # File in which we store all projects configuration (default: ${HOME}/work/.projects)
-#    - PRJ_FILE                 # Name of the project file, created at his root and sourced on setProject (default: '.prj_env')
-#    - PRJ_CHANGE_PROMPT        # 1 to change the prompt to '[ $PRJ_NAME ] PS1' > on setProject (default: 1)
-#
-#
-
-OLD_PS1="$PS1"
-
-# Configuration
-
-PRJ_STORE=${PRJ_STORE:-${HOME}/work/.projects} # File in which we store all projects configuration
-PRJ_FILE=${PRJ_FILE:-".prj_env"}               # Name of the project file, created at his root and sourced on setProject
-PRJ_CHANGE_PROMPT=${PRJ_CHANGE_PROMPT:-1}      # 1 to change the prompt to [ $PRJ_NAME ] PS1 > on setProject
-
-# Real stuff
-addProject() {
-    if [ "$#" -eq "2" ]; then
-        local name=$1
-        local path=$(readlink -f $2)
-        echo "$name $path" >> ${PRJ_STORE}
-        if [ ! -f ${path}/${PRJ_FILE} ]; then
-            echo "Creating ${path}/${PRJ_FILE}"
-            echo "# Project ${name} " > ${path}/${PRJ_FILE}
-        fi
-    else
-        echo "Usage: addProject name path"
-    fi
-}
-
-getProjectNames() {
-    local NAMES=""
-    while read name path; do
-        NAMES="$NAMES $name"
-    done < ${PRJ_STORE}
-    echo ${NAMES}
-    return 0
-}
-
-getProjectList() {
-    local NAMES=""
-    while read name path; do
-        echo $name
-    done < ${PRJ_STORE}
-    return 0
-}
-
-_failedPath() {
-    echo "No project named '$1'."
-    echo "Similar projects: "
-    for name in $(compgen -W "$(getProjectNames)" -- $1); do
-        echo "  - $name"
-    done
-}
-
-getProjectPath() {
-    while read name path; do
-        if [ "$1" = "$name" ]; then
-            echo $path
-            return 0
-        fi
-    done < ${PRJ_STORE}
-    return 1
-}
-
-sourceProject() {
-    local path=$(getProjectPath $1)
-    if [ ! -z "$path" ]; then
-        source $path/${PRJ_FILE}
-        return 0
-    else
-        _failedPath $1
-    fi
-    return 1
-}
-
-editProject() {
-    local path=$(getProjectPath $1)
-    if [ ! -z "$path" ]; then
-        ${EDITOR} $path/${PRJ_FILE}
-        return 0
-    else
-        _failedPath $1
-    fi
-    return 1
-}
-
-setProject() {
-    # Find dir
-    PRJ_NAME=$1
-    PRJ_DIR=$(getProjectPath $PRJ_NAME)
-    if [ ! -z "$PRJ_DIR" ]; then
-        export PRJ_DIR
-        export PRJ_NAME
-        cd $PRJ_DIR
-        source $PRJ_DIR/${PRJ_FILE}
-        if [ "1" -eq "$PRJ_CHANGE_PROMPT" ]; then 
-            export PS1="[$PRJ_NAME] $OLD_PS1"
-        fi
-    else
-        _failedPath $PRJ_NAME
-    fi
-}
-
-# Define autocompletion functions 
-_project ()
-{
-        local cur
-        _get_comp_words_by_ref cur
-        COMPREPLY=()
-        local NAMES=$(getProjectNames)
-        COMPREPLY=( $(compgen -W "$(getProjectNames)" -- ${cur}) ) 
-        return 0
-} 
-
-complete -F _project setProject
-complete -F _project sourceProject
-complete -F _project editProject
-
-# HELPERS
-function cdProject() {
-       cd $PRJ_DIR
-}
-
 # Python startup file
 export PYTHONSTARTUP=$HOME/.pythonrc