/mrsekut-p/プロジェクト生成系のコマンドがdirectoryごと作るのか分かりづらい問題
それなmiyamonz.icon*4
ディレクトリ指定系は、既存フォルダを指定できるものが多い
miyamonz.iconは、~/ghq/github.com/miyamonz/{ここに新規名} にフォルダ作るコマンドを自分で用意してる
そのコマンドで作成、cdしたあと
pnpm create viteして、名前は. を打ってやってた
.で現在ディレクトリ名を解釈してくれるコマンドが多い
.使うのなるほどmrsekut.icon
.でよしなに解釈してくれると嬉しいのだが、受け付けないコマンドもたまにある
そういうときは諦めて、
親階層に移動して、
いま作ったフォルダを消して、
createコマンドを打ち直してフォルダから新規作成をやり直してる
常にこういう実行をすればいいよ、というのを決められると良さそうmrsekut.icon
例えば、
$ mk aaa npm init -y
$ mk aaa npm create vite .
みたいに、常にmk 名前 生成系コマンドのように実行できるようにするとか
なるほど、どのコマンドが.を解釈できるかはそのコマンド次第だけど、mk側がそれを覚えてうまく吸収してくれると嬉しいかもmiyamonz.icon
↑これは/mrsekut-p/gpt-4.iconに書いてもらって実現できたが、
$ mk aaa npm create vite bbb
みたいに、両者で別の名前を指定した時にどうするか、とか考え出すと面倒
あるいは、mkdir後にcreateすることで./aaa/aaa/プロジェクト内容のようにディレクトリがネストしちゃうやつを解消するために、$ flatten aaaというスクリプトを作るとか
これも/mrsekut-p/gpt-4.iconで実現できたが、どっちかと言うとこっちのほうが良さそう
code:mk.sh
DIR_NAME=$1
echo "Usage: mk <directory> <command>"
exit 1
fi
# 作成対象ディレクトリの確認
echo "Error: Directory '$DIR_NAME' already exists."
exit 1
fi
# ディレクトリ作成して移動
mkdir -p "$DIR_NAME" && cd "$DIR_NAME" || exit 1
shift # コマンド部分を取得
# 実行コマンド保存
COMMAND="$@"
# コマンド実行
eval "$COMMAND"
# 後処理: 余分な階層が作られていれば移動する
# (カレントディレクトリ直下の唯一のサブディレクトリをチェック)
SUB_DIR=$(find . -mindepth 1 -maxdepth 1 -type d | head -n 1)
mv "$SUB_DIR"/* . && rmdir "$SUB_DIR"
fi
code:flatten.sh
# ネストされた同名ディレクトリをフラット化
TARGET_DIR=$1
echo "Usage: flatten <directory>"
exit 1
fi
# 指定されたディレクトリが存在するか確認
echo "Error: Directory '$TARGET_DIR' does not exist."
exit 1
fi
# ネストされたサブディレクトリのパスを計算
NESTED_DIR="$TARGET_DIR/$(basename "$TARGET_DIR")"
echo "Flattening '$NESTED_DIR' into '$TARGET_DIR'..."
# tmps
TEMP_PARENT_DIR=$(dirname "$TARGET_DIR")
TEMP_DIR_NAME="temp-$(basename "$TARGET_DIR")"
TEMP_DIR="$TEMP_PARENT_DIR/$TEMP_DIR_NAME"
mv "$NESTED_DIR" "$TEMP_DIR" || exit 1
rmdir "$TARGET_DIR" || exit 1
mv "$TEMP_DIR" "$TARGET_DIR" || exit 1
echo "Flattening completed."
else
echo "No nested directory found for '$TARGET_DIR'."
fi