From 6be8552c8410ce3e5164cee521a852f635999104 Mon Sep 17 00:00:00 2001 From: rito528 <39003544+rito528@users.noreply.github.com> Date: Wed, 20 May 2026 17:41:42 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor(scripts):=20=E3=82=B9=E3=82=AF?= =?UTF-8?q?=E3=83=AA=E3=83=97=E3=83=88=E3=82=92=E3=82=B5=E3=83=96=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=83=AC=E3=82=AF=E3=83=88=E3=83=AA=E6=A7=8B=E9=80=A0?= =?UTF-8?q?=E3=81=AB=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 各スクリプトを専用サブディレクトリに分割し、default.nix と script.sh の固定ファイル名で統一することで可読性と拡張性を高める。 また default.nix では builtins.readDir によるサブディレクトリ自動検出を 導入し、新規スクリプト追加時に default.nix の編集が不要になるようにした。 Co-authored-by: Claude Sonnet 4.6 --- modules/scripts/default.nix | 10 +++-- .../default.nix} | 2 +- .../script.sh} | 0 .../scripts/switch-branch-with-refresh.nix | 44 ------------------- .../switch-branch-with-refresh/default.nix | 10 +++++ .../switch-branch-with-refresh/script.sh | 35 +++++++++++++++ 6 files changed, 52 insertions(+), 49 deletions(-) rename modules/scripts/{nix-init-env.nix => nix-init-env/default.nix} (80%) rename modules/scripts/{nix-init-env.sh => nix-init-env/script.sh} (100%) delete mode 100644 modules/scripts/switch-branch-with-refresh.nix create mode 100644 modules/scripts/switch-branch-with-refresh/default.nix create mode 100755 modules/scripts/switch-branch-with-refresh/script.sh diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix index 54d59f0..0c94154 100644 --- a/modules/scripts/default.nix +++ b/modules/scripts/default.nix @@ -1,7 +1,9 @@ { ... }: +let + dirs = builtins.attrNames ( + builtins.filterAttrs (_: type: type == "directory") (builtins.readDir ./.) + ); +in { - imports = [ - ./switch-branch-with-refresh.nix - ./nix-init-env.nix - ]; + imports = map (d: ./. + "/${d}") dirs; } diff --git a/modules/scripts/nix-init-env.nix b/modules/scripts/nix-init-env/default.nix similarity index 80% rename from modules/scripts/nix-init-env.nix rename to modules/scripts/nix-init-env/default.nix index f41fd3b..3e96627 100644 --- a/modules/scripts/nix-init-env.nix +++ b/modules/scripts/nix-init-env/default.nix @@ -8,7 +8,7 @@ pkgs.jq pkgs.coreutils ]; - text = builtins.readFile ./nix-init-env.sh; + text = builtins.readFile ./script.sh; }) ]; } diff --git a/modules/scripts/nix-init-env.sh b/modules/scripts/nix-init-env/script.sh similarity index 100% rename from modules/scripts/nix-init-env.sh rename to modules/scripts/nix-init-env/script.sh diff --git a/modules/scripts/switch-branch-with-refresh.nix b/modules/scripts/switch-branch-with-refresh.nix deleted file mode 100644 index bcdfba8..0000000 --- a/modules/scripts/switch-branch-with-refresh.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = [ - (pkgs.writeShellApplication { - name = "switch-branch-with-refresh"; - runtimeInputs = [ pkgs.git ]; - text = '' - if [ -z "''${1:-}" ]; then - echo "Usage: switch-branch-with-refresh " >&2 - exit 1 - fi - - current_branch=$(git branch --show-current) - - if [ -z "$current_branch" ]; then - echo "Error: Not on a branch (detached HEAD?)" >&2 - exit 1 - fi - - # 新ブランチを作成(現在のコミットをそのまま引き継ぐ) - if ! git switch -c "$1"; then - echo "Error: Failed to create branch '$1'." >&2 - exit 1 - fi - - # 元ブランチをリモートの状態にリセット - git fetch origin - git switch "$current_branch" - echo "Warning: This will reset '$current_branch' to origin/$current_branch with --hard." - read -r -p "Continue? [y/N] " confirm - if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then - echo "Aborted. Switching back to '$1'." - git switch "$1" - exit 1 - fi - git reset --hard "origin/$current_branch" - - # 新ブランチに移動して完了 - git switch "$1" - echo "Done. Commits are on '$1'. '$current_branch' reset to origin/$current_branch." - ''; - }) - ]; -} diff --git a/modules/scripts/switch-branch-with-refresh/default.nix b/modules/scripts/switch-branch-with-refresh/default.nix new file mode 100644 index 0000000..75d6be3 --- /dev/null +++ b/modules/scripts/switch-branch-with-refresh/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + home.packages = [ + (pkgs.writeShellApplication { + name = "switch-branch-with-refresh"; + runtimeInputs = [ pkgs.git ]; + text = builtins.readFile ./script.sh; + }) + ]; +} diff --git a/modules/scripts/switch-branch-with-refresh/script.sh b/modules/scripts/switch-branch-with-refresh/script.sh new file mode 100755 index 0000000..fb8899d --- /dev/null +++ b/modules/scripts/switch-branch-with-refresh/script.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +if [ -z "${1:-}" ]; then + echo "Usage: switch-branch-with-refresh " >&2 + exit 1 +fi + +current_branch=$(git branch --show-current) + +if [ -z "$current_branch" ]; then + echo "Error: Not on a branch (detached HEAD?)" >&2 + exit 1 +fi + +# 新ブランチを作成(現在のコミットをそのまま引き継ぐ) +if ! git switch -c "$1"; then + echo "Error: Failed to create branch '$1'." >&2 + exit 1 +fi + +# 元ブランチをリモートの状態にリセット +git fetch origin +git switch "$current_branch" +echo "Warning: This will reset '$current_branch' to origin/$current_branch with --hard." +read -r -p "Continue? [y/N] " confirm +if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then + echo "Aborted. Switching back to '$1'." + git switch "$1" + exit 1 +fi +git reset --hard "origin/$current_branch" + +# 新ブランチに移動して完了 +git switch "$1" +echo "Done. Commits are on '$1'. '$current_branch' reset to origin/$current_branch." From 8b69fc42bffcd08823462ddead4c7ca44dd45dd8 Mon Sep 17 00:00:00 2001 From: rito528 <39003544+rito528@users.noreply.github.com> Date: Wed, 20 May 2026 17:47:41 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix(scripts):=20builtins=20=E3=81=AB?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E3=81=97=E3=81=AA=E3=81=84=20filterAttrs=20?= =?UTF-8?q?=E3=82=92=20builtins.filter=20=E3=81=AB=E7=BD=AE=E3=81=8D?= =?UTF-8?q?=E6=8F=9B=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit builtins.filterAttrs は Nix に存在せず CI ビルドが失敗していたため、 builtins.filter と builtins.attrNames を組み合わせた実装に修正する。 Co-authored-by: Claude Sonnet 4.6 --- modules/scripts/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix index 0c94154..980a369 100644 --- a/modules/scripts/default.nix +++ b/modules/scripts/default.nix @@ -1,8 +1,7 @@ { ... }: let - dirs = builtins.attrNames ( - builtins.filterAttrs (_: type: type == "directory") (builtins.readDir ./.) - ); + entries = builtins.readDir ./.; + dirs = builtins.filter (name: entries.${name} == "directory") (builtins.attrNames entries); in { imports = map (d: ./. + "/${d}") dirs;