|
6 | 6 | import re |
7 | 7 | from pathlib import Path |
8 | 8 |
|
9 | | -DEFAULT_SOURCE = Path(__file__).resolve().parents[2] / 'knowledge-base' / 'gstack' |
10 | 9 | REPO_ROOT = Path(__file__).resolve().parents[1] |
11 | 10 | MAPPINGS_PATH = REPO_ROOT / 'mappings' / 'skills.json' |
12 | 11 | SKILLS_DIR = REPO_ROOT / 'skills' |
@@ -61,7 +60,7 @@ def write_status(source_root: Path) -> Path: |
61 | 60 | lines = [ |
62 | 61 | '# gstack sync status', |
63 | 62 | '', |
64 | | - f'Source: `{source_root}`', |
| 63 | + f'Source: external gstack checkout `{source_root.name}`', |
65 | 64 | '', |
66 | 65 | '| gstack skill | codex skill | category | status |', |
67 | 66 | '|---|---|---|---|' |
@@ -129,14 +128,18 @@ def install_links(target_dir: Path) -> list[str]: |
129 | 128 | def main() -> None: |
130 | 129 | parser = argparse.ArgumentParser(description='Sync and scaffold Codex skills from gstack.') |
131 | 130 | parser.add_argument('command', choices=['status', 'scaffold-new', 'install']) |
132 | | - parser.add_argument('--source', type=Path, default=DEFAULT_SOURCE) |
| 131 | + parser.add_argument('--source', type=Path) |
133 | 132 | parser.add_argument('--target', type=Path, default=Path.home() / '.codex' / 'skills') |
134 | 133 | args = parser.parse_args() |
135 | 134 |
|
136 | 135 | if args.command == 'status': |
| 136 | + if args.source is None: |
| 137 | + parser.error('--source is required for status') |
137 | 138 | out = write_status(args.source) |
138 | 139 | print(out) |
139 | 140 | elif args.command == 'scaffold-new': |
| 141 | + if args.source is None: |
| 142 | + parser.error('--source is required for scaffold-new') |
140 | 143 | created = scaffold_new(args.source) |
141 | 144 | write_status(args.source) |
142 | 145 | for path in created: |
|
0 commit comments