Gitkeepを作成、及び削除をするshellを作った

はじめに


以下のようなディレクトリ構成のときに.gitkeepを作りたかったのです。

1
2
3
4
└── test
    ├── test1
    │   └── test2
    └── test3

ですが、これを手で一つ一つ用意するのは非常に面倒なわけでして・・・
ついカッとなって用意しました。

# chefお前のことだ!!
# Railsなんかはきっちり用意してくれてるのにね

コード本体


以下のコードをコピペして適当に実行権を与えたファイルにしてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash

function create() {
    dir=$1
    if [ ! -f "${dir}/.gitkeep" ]&&[ ! -z "${dir}" ]; then
        touch ${dir}/.gitkeep
        echo  "Create .gitkeep in `pwd`/${dir}"
    fi
}

function remove() {
    dir=$1
    if [ -f "${dir}/.gitkeep" ]&&[ ! -z "${dir}" ]; then
        rm ${dir}/.gitkeep
        echo  "Remove .gitkeep in `pwd`/${dir}"
    fi
}

function start() {
    command=$1
    for DIR in * ; do
        if [ -d "${DIR}" ]; then
            if [ "${command}" = "create" ]; then
                create $DIR;
            fi
            if [ "${command}" = "remove" ]; then
                remove $DIR;
            fi
            (cd "${DIR}"; start $command;)
        fi
    done
}

command=$1
if [ -z "${command}" ]; then
    command="create"
fi

if [ "${command}" != "remove" -a "${command}" != "create" ]; then
    echo "Usage : ./gitkeep.sh create or ./gitkeep.sh remove"
    exit 1
fi

if ! git rev-parse 2> /dev/null; then
    echo "Abort!!"
    echo "This directory is not git repository!!"
    exit 1
fi

start $command;

使い方


上記のコードをgittkeep.shとして保存していたと仮定した場合

.gitkeepファイル作成する場合は、以下のコマンド

1
$sh gitkeep.sh create

.gitkeepファイルを削除する場合は、以下のコマンド

1
$sh gitkeep.sh remove