macOS で admin.site.register の一覧を作るスクリプト
使い方
$ # models.py のみの場合 $ sh print_imports.sh my_app/models.py $ sh print_admin_site_registers.sh my_app/models.py $ $ # models ディレクトリ配下に model を分割、記述している場合 $ sh print_imports.sh my_app/models $ sh print_admin_site_registers.sh my_app/models
スクリプト
いずれも "class" と言う文字が行頭にあることが前提。
1) print_imports.sh
import を自動で書くスクリプト。
path=${1} find ${path} -name "*.py" | while read file_path do class_names=$(cat $file_path | grep ^class | sed -e "s/(.*//" | awk '{print $2}') echo "${class_names}" | while read class_name do if test "${class_name}" = ""; then continue; fi import="from ${file_path} import ${class_name}" import=$(echo ${import} | sed -e "s|//|.|g") import=$(echo ${import} | sed -e "s|/|.|g") import=$(echo ${import} | sed -e "s|.py||") echo $import done done
2) print_admin_site_registers.sh
path=${1} find ${path} -name "*.py" | while read file_path do cat $file_path | grep ^class | sed -e "s/(.*//" | awk '{printf("admin.site.register(%s)\n",$2)}' done
なんで Python じゃなくて shell で作ったんだろう orz