GetStream / vg

Virtualgo: Easy and powerful workspace based development for go
MIT License
1.32k stars 45 forks source link

vg auto-activate works incorrectly #45

Open ssergiienko opened 5 years ago

ssergiienko commented 5 years ago

Case 1: Destroyed environments are re-created again with cd

[host]xyz_proj$ vg init
...
(xyz_proj) [host]xyz_proj$ vg destroy
[host]xyz_proj$ cd any_other_folder
[host]any_other_folder$ cd xyz_proj
Creating workspace "xyz_proj" with global fallback import mode
Activating "xyz_proj"
(xyz_proj) [host]xyz_proj$

I've managed to fix the problem with new condition to activate function:

__vg_auto_activate() {
    activation_root=$PWD
    while [ "$activation_root" != "" ]; do
        if [ -f "$activation_root/.virtualgo" ]; then
            new_virtualgo_name=$(cat "$activation_root/.virtualgo")
            if [ "" = "$VIRTUALGO" ] || [ "$new_virtualgo_name" != "$VIRTUALGO" ]; then
                # that's what I added
                if [[ -d "$HOME/.virtualgo/$new_virtualgo_name" ]];then   # <=========
                vg activate "$new_virtualgo_name"
                fi
            fi
            return

Also, I think that vg destroy should do vg unlink automatically

Case 2: Activate in child folder of folder that is linked to some vg environment will create new environment instead of activating parent.

src is a child folder of goenv:

(goenv) [host]src$ vg deactivate
Deactivating goenv
[host]src$ vg activate
Creating workspace "src" with global fallback import mode
Activating src