Last active
April 22, 2022 02:34
-
-
Save susatthi/1fa07960569757fe6d88b86c02ec34d4 to your computer and use it in GitHub Desktop.
Flutter プロジェクトを作成して main.dart と pupspec.yaml のコメントを除去までしてくれるシェルスクリプト
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 -e | |
# 導入方法 | |
# | |
# cd ~/<your working directory> | |
# git clone https://gist.github.com/susatthi/1fa07960569757fe6d88b86c02ec34d4 scripts | |
# sh ./scripts/flutter_create.sh -h | |
# コマンドの使用方法を出力して終了する | |
function usage() { | |
cat <<EOM | |
このスクリプトを実行すると Flutter プロジェクトを作成してコメントを除去してくれます。 | |
使い方は下記の通りです。 | |
Usage: $(basename "$0") <output directory> [OPTION]... | |
-h, --help ヘルプを表示します。 | |
--org Flutter プロジェクトの組織名を設定します。デフォルトは com.example です。 | |
--project-name Flutter プロジェクトのプロジェクト名を設定します。 | |
dart パッケージ名([a-z0-9_].)として正しい必要があります。 | |
デフォルトは <output directory> です。 | |
EOM | |
exit 2 | |
} | |
# 処理する | |
function perform() { | |
# PARAM_PROJECT_NAME が未設定なら PARAM_OUTPUT_DIRECTORY と同じ値にする | |
if [ -z ${PARAM_PROJECT_NAME} ]; then | |
PARAM_PROJECT_NAME=${PARAM_OUTPUT_DIRECTORY} | |
fi | |
echo " -> PARAM_OUTPUT_DIRECTORY = ${PARAM_OUTPUT_DIRECTORY}" | |
echo " -> PARAM_ORG = ${PARAM_ORG}" | |
echo " -> PARAM_PROJECT_NAME = ${PARAM_PROJECT_NAME}" | |
# flutter create を実行する | |
flutter create ${PARAM_OUTPUT_DIRECTORY} --org ${PARAM_ORG} --project-name ${PARAM_PROJECT_NAME} | |
# プロジェクトルートに移動 | |
CURRENT_DIR=$(pwd) | |
cd ${CURRENT_DIR}/${PARAM_OUTPUT_DIRECTORY} | |
# pubspec.yaml のコメントを除去 | |
sed -i.bak -e '/^ *#.*$/d' pubspec.yaml | |
sed -i.bak -e 's/#.*$//g' pubspec.yaml | |
rm pubspec.yaml.bak | |
# main.dart のコメントを除去 | |
sed -i.bak -e '/^ *\/\/.*$/d' lib/main.dart | |
sed -i.bak -e 's/\/\/.*$//g' lib/main.dart | |
rm lib/main.dart.bak | |
# 元のディレクトリに戻る | |
cd ${CURRENT_DIR} | |
} | |
# 第1引数が無い、もしくはハイフン始まりなら usage を表示して終了する | |
if [[ $# == 0 || $1 =~ ^\-.* ]]; then | |
usage | |
fi | |
# 第1引数を `flutter create` の引数 `<output directory>` の値に設定する | |
PARAM_OUTPUT_DIRECTORY=$1 | |
shift | |
# 組織名の初期値 | |
PARAM_ORG=com.example | |
# プロジェクト名の初期値 | |
PARAM_PROJECT_NAME= | |
# オプションをパースする | |
while getopts hop-: opt; do | |
[[ "$opt" = - ]] && opt="-$OPTARG" | |
# echo "opt=-$opt, arg=${!OPTIND}" | |
case "-$opt" in | |
--org) | |
PARAM_ORG=${!OPTIND} | |
shift | |
;; | |
--project-name) | |
PARAM_PROJECT_NAME=${!OPTIND} | |
shift | |
;; | |
-h | --help | *) | |
# -h、--helpの場合、もしくは定義したパラメータ以外の場合の実行内容 | |
usage | |
;; | |
esac | |
done | |
# 処理実行 | |
perform | |
# 正常終了 | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment