Add optional SUBMIT_OPENER hook to the submit target#135
Conversation
The 'make s' submit step now delegates to an executable $SUBMIT_OPENER (default ~/.local/bin/submit-opener) when one is present, and otherwise opens the submit page exactly as before. This lets an individual swap in a personal opener without editing this shared file. Also gitignore .local/bin/ where such an opener is installed.
| @submit_url=$$(printf '%s\n' "$(TASK_URL)" | sed 's|/tasks/\(.*\)|/submit?taskScreenName=\1|'); \ | ||
| $(OPEN) "$$submit_url" | ||
| @echo "提出ページを開きました。Ctrl+V (Cmd+V) でコードを貼り付けて提出してください" | ||
| if [ -x "$(SUBMIT_OPENER)" ]; then \ |
There was a problem hiding this comment.
SUBMIT_OPENER のパスにスペースが含まれる場合の問題
$(HOME) が /home/user name のようにスペースを含む環境では、[ -x "$(SUBMIT_OPENER)" ] の展開結果が [ -x /home/user name/.local/bin/submit-opener ] となり、シェルの単語分割によって引数が複数に分かれてテストが失敗します。また "$(SUBMIT_OPENER)" の二重引用符はMakeの展開後に付くため、Make変数展開時点ではクォートされていません。
より堅牢にするには、変数をシェル変数に一度代入してからクォートする方法が有効です:
submit_url=$$(...); \
opener="$(SUBMIT_OPENER)"; \
if [ -x "$$opener" ]; then \
"$$opener" "$$submit_url" "$(SRC_FILE)"; \
else \
$(OPEN) "$$submit_url"; \
echo "提出ページを開きました。..."; \
fiただし、$(HOME) にスペースが含まれる環境は稀であるため、優先度はMEDIUMとします。
|
レビュー指摘( 1. 現コードは既にスペースに対して安全(指摘の前提が本コードには当てはまらない) 実機検証( スペース入りパスでも正しくフック分岐に入り、フォールバックに落ちません。委譲時の 2. 運用環境では 以上より、堅牢性・運用の両面で追加対応は不要と考えます。指摘自体も「 |
概要
make s(AtCoder: SUBMIT codeタスク)の「提出ページを開く」処理に、任意で差し替え可能な拡張点を追加する。実行可能な
$SUBMIT_OPENERが配置されていればそちらにsubmit_urlとSRC_FILEを渡して委譲し、無ければ従来どおり$(OPEN)で提出ページを開く。動機
共有ファイルである
lib/.support/makefileを各自が編集せずに、「提出ページの開き方」を個人の好みで差し替えられるようにする。デフォルト(opener 未配置)の挙動は完全に従来どおりで、既存ユーザーへの影響はない。変更点
lib/.support/makefile:s:ターゲットにSUBMIT_OPENERフックを追加(未配置時は現状維持).gitignore: opener の配置先.local/bin/を追加後方互換性
~/.local/bin/submit-openerを置かない限り挙動は不変。OSC52 クリップボードコピーや提出ページ URL の組み立ても従来のまま。