Last active
June 24, 2024 05:04
-
-
Save Atsumi3/be3eba299fbbd11a3c35e2ffba6b3099 to your computer and use it in GitHub Desktop.
Dart/Flutterのライブラリ作成でexportファイルの生成を楽にするためのスクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# 以下のようなディレクトリ構成で作成されているプロジェクト用 | |
# pubspec.yaml | |
# lib/src/aaa/bbb.dart | |
if [ ! -f pubspec.yaml ]; then | |
echo "このスクリプトはDartパッケージのルートディレクトリで実行してください。pubspec.yamlが見つかりません。" | |
exit 1 | |
fi | |
if [ ! -d lib/src ]; then | |
echo "このスクリプトはDartパッケージのルートディレクトリで実行してください。lib/srcフォルダが見つかりません。" | |
exit 1 | |
fi | |
### 変数定義 ### | |
PACKAGE_NAME=$(cat pubspec.yaml | grep name | awk '{print $2}') | |
# エクスポート先のファイルを指定します | |
EXPORT_FILE="$PACKAGE_NAME.dart" | |
# エクスポート先の相対パスを指定します | |
EXPORT_PATH="lib/$EXPORT_FILE" | |
# 含めないファイル名を一覧にします | |
EXCLUDE_FILES=( | |
"$EXPORT_FILE" | |
".freezed.dart" | |
".g.dart" | |
) | |
# 含めないディレクトリ名を一覧にします | |
EXCLUDE_DIRS=() | |
### スクリプト実行 ### | |
# エクスポート先のファイルが存在する場合は.bakファイルを作成し削除します | |
if [ -f $EXPORT_PATH ]; then | |
mv $EXPORT_PATH $EXPORT_PATH.bak | |
echo "$EXPORT_PATH が存在するため、$EXPORT_PATH.bak にリネームしました。" | |
fi | |
# エクスポート先のファイルを作成します | |
touch $EXPORT_PATH | |
# lib/src ディレクトリ以下のすべてのDartファイルを探索し、エクスポート用のファイルに書き込みます | |
find lib/src -type f -name "*.dart" | while read file; do | |
# 特定ファイルは除外します | |
for exclude_file in ${EXCLUDE_FILES[@]}; do | |
if [[ $file == *$exclude_file ]]; then | |
continue 2 | |
fi | |
done | |
# 特定ディレクトリは除外します | |
for exclude_dir in ${EXCLUDE_DIRS[@]}; do | |
if [[ $file == *$exclude_dir* ]]; then | |
continue 2 | |
fi | |
done | |
# 先頭の ./lib/ を削除します | |
file=${file#lib/} | |
# エクスポート用のファイルに書き込みます | |
echo "export '$file';" >> $EXPORT_PATH | |
done | |
echo "すべてのDartファイルが $EXPORT_FILE にエクスポートされました。" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment