vagrant get / vagrant put作った

  • 6
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

この前のやつ(すっごい早いvagrant ssh)もおまけでついてきます。

使い方は

  • vagrant put /etc/profile で VMのホームディレクトリにファイルをコピーする。
  • vagrant get /etc/profile でVMのファイルをカレントディレクトリにコピーする

(vagrant ssh などの vagrant のサブコマンドの互換性は完全には保たれていないかもしれない。こまったら/usr/bin/vagrantでなんとかなるのであまり十分にデバグしておりません)。

.bashrc
vagrant() {
    require_vagrantfile() {
        if [ ! -r Vagrantfile ]
        then
            $VAGRANT $@
            return 1
        fi
        return 0
    }

    VAGRANT=`which vagrant`
    CONFIG=".vagrant/vagrant_ssh_config"
    ORIGINAL_DIR=`pwd`

    pushd . > /dev/null
    until [ -f Vagrantfile -o $PWD = '/' ]
    do
        cd ..
    done

    case "x$1" in
        'xup' )
            if require_vagrantfile $@ && $VAGRANT $@
            then
                $VAGRANT ssh-config > $CONFIG &
            fi
            ;;
        'xget' )
            if require_vagrantfile $@
            then
                scp -F $CONFIG default:$2 $ORIGINAL_DIR/
            fi
            ;;
        'xput' )
            if require_vagrantfile $@
            then
                if [[ $2 == /* ]]
                then
                    SRC=$2
                else
                    SRC=$ORIGINAL_DIR/$2
                fi
                scp -F $CONFIG $SRC default:
            fi
            ;;

        'xssh' )
            if require_vagrantfile $@
            then
                if [ -f $CONFIG ]
                then
                    ssh -F $CONFIG default
                else
                    $VAGRANT ssh
                fi
            fi
            ;;
        * )
            popd > /dev/null
            $VAGRANT $@
            return
            ;;
    esac
    popd > /dev/null
}