Skip to content

Instantly share code, notes, and snippets.

@susatthi
Last active April 22, 2022 02:34
Show Gist options
  • Save susatthi/1fa07960569757fe6d88b86c02ec34d4 to your computer and use it in GitHub Desktop.
Save susatthi/1fa07960569757fe6d88b86c02ec34d4 to your computer and use it in GitHub Desktop.
Flutter プロジェクトを作成して main.dart と pupspec.yaml のコメントを除去までしてくれるシェルスクリプト
#!/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