git-repokit 0.9.11__tar.gz → 0.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {git_repokit-0.9.11/git_repokit.egg-info → git_repokit-0.10.1}/PKG-INFO +6 -5
- {git_repokit-0.9.11 → git_repokit-0.10.1}/README.md +5 -4
- {git_repokit-0.9.11 → git_repokit-0.10.1/git_repokit.egg-info}/PKG-INFO +6 -5
- {git_repokit-0.9.11 → git_repokit-0.10.1}/git_repokit.egg-info/SOURCES.txt +13 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/pyproject.toml +1 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/__version__.py +1 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/branch_utils.py +4 -2
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/common_kit.py +66 -5
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/config.py +2 -3
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/defaults.py +6 -4
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/guardrails.py +1 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/hooks/pre-commit-template +2 -2
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/layers.py +9 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/repo_manager.py +92 -78
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/hooks/pre-commit.template +2 -2
- git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/ck3/.repokit-common.toml +28 -0
- git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/ck3/mod/descriptor.mod +6 -0
- git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/clausewitz/mod/localisation/english/__RK_SNAKE___l_english.yml +2 -0
- git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/descriptor.mod +9 -0
- git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/thumbnail.png +0 -0
- git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/jomini/mod/localization/english/__RK_SNAKE___l_english.yml +2 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.repokit-common.toml +4 -3
- git_repokit-0.10.1/repokit/templates/layers/languages/paradox/.gitattributes.rkappend +12 -0
- git_repokit-0.10.1/repokit/templates/layers/languages/paradox/.repokit-common.toml +29 -0
- git_repokit-0.10.1/repokit/templates/layers/languages/paradox/VERSION +1 -0
- git_repokit-0.10.1/repokit/templates/layers/languages/paradox/docs/modding.md +34 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/manifest.toml +113 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/vault.py +8 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_directory_profiles.py +24 -14
- git_repokit-0.10.1/tests/test_languages_setting.py +79 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layers.py +39 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layers_claude_plugin.py +3 -3
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layers_cli.py +5 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layers_compositions.py +29 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layers_js_ts.py +3 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layers_vscode.py +9 -1
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_new_default.py +11 -0
- git_repokit-0.10.1/tests/test_paradox.py +177 -0
- git_repokit-0.10.1/tests/test_private_branch_create.py +338 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_vault_bootstrap.py +20 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/LICENSE +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/MANIFEST.in +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/git_repokit.egg-info/dependency_links.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/git_repokit.egg-info/entry_points.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/git_repokit.egg-info/requires.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/git_repokit.egg-info/top_level.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/__init__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/__main__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/__init__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/__init__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/analyzer.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/backend.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/cache.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/parsers.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/__init__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/cli.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/openai_compat.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/prompt_file.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/_vendor/ailib/types.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/auth_integration.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/badges.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/cli.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/directory_analyzer.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/directory_profiles.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/git_config.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/github_create.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/github_setup.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/history_cleaner.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/history_protection.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/hooks/pre-commit-guardrails +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/0bsd.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/LICENSES.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/__init__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/agpl-3.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/all-rights-reserved.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/apache-2.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/bsd-2-clause.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/bsd-3-clause.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/bsl-1.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/cc-by-4.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/cc-by-sa-4.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/cc0-1.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/epl-2.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/gpl-2.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/gpl-3.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/isc.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/lgpl-2.1.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/lgpl-3.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/mit.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/mpl-2.0.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/proprietary-evaluation.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/licenses/unlicense.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/readme_blocks.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/remote_integration.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/template_engine.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/ai/claude/CLAUDE-nested.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/ai/claude/CLAUDE.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/ai/claude/instructions/step1_context_rebuilder.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/ai/claude/instructions/step2_dev_workflow_process.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/ai/claude/instructions/step3_context_bridge.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/common/CHANGELOG.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/common/CONTRIBUTING.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/common/README.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/common/gitattributes.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/common/gitignore.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/FUNDING.yml.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/ROADMAP.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/dependabot.yml.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/one-offs-README.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/platform-support.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/pull_request_template.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/release-template.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/settings.json.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/extras/stale.yml.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/github/CODEOWNERS.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/github/ISSUE_TEMPLATE/bug-report.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/github/ISSUE_TEMPLATE/feature-request.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/github/issues/notes.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/github/issues/roadmap.md.template +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/any/claude-plugin/.claude-plugin/marketplace.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/.claude-plugin/plugin.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/README.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.github/workflows/ci-c-cpp.yml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.repokit-common.toml.rkappend +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/tasks.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakeLists.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakePresets.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/cmake/GenerateStamp.cmake +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/src/main.cpp +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/tests/test_version.cpp +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/vcpkg.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/Makefile +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/build.bat +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/src/__RK_SNAKE__.c +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/tasks.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.sln +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.vcxproj +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/src/main.cpp +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.repokit-common.toml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/hooks.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/scripts/session-start.mjs +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/tests/manifest.test.js +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node/.repokit-common.toml.rkappend +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node/package.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/.github/workflows/release.yml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/package.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/src/index.ts +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/tests/index.test.ts +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/script/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/script/__RK_PROJECT__.js +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/script/tests/version.test.js +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/ts/package.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/ts/tsconfig.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/.github/workflows/ci-python.yml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/.repokit-common.toml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/VERSION +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/hooks.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/run-hook.mjs +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/session_start.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/tests/test_manifest.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/.github/workflows/release.yml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__init__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__main__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/_version.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/cli.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/pyproject.toml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/tests/conftest.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/tests/test_version.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/.github/workflows/ci-python.yml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/.repokit-common.toml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/VERSION +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/__RK_PROJECT__.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/tests/test_version.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/setuppy/requirements.txt +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/setuppy/setup.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/.gitignore.rkappend +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/.repokit-common.toml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/include/__RK_SNAKE__/version.h +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/src/app.rc +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.editorconfig +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.github/workflows/ci-js-ts.yml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.gitignore.rkappend +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/VERSION +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/python/.github/workflows/ci-python.yml +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/python/.gitignore.rkappend +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/layers/languages/python/.vscode/launch.json +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/vault/CLAUDE.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/vault/claude/_maps/MOC-project.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/vault/claude/_oracle/backlinks.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/vault/claude/_oracle/concepts.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/vault/claude/_oracle/manifest.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/vault/claude/_todo/ACTIVE-WORK.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/templates/vault/claude/_todo/OPEN-LOOPS.md +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/repokit/utils.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/setup.cfg +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/setup.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_badges.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_branch_strategies.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_cli_examples.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_cli_integration.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_core_functionality.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_deployment_scenarios.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_docs_links.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_extras_cli.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_github_create.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_github_integration.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_github_owner.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_github_setup.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_guardrails.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_hermetic.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_hook_encoding.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_hook_patterns.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layer_action_pins.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_layers_c_cpp.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_legacy_smoke.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_license_adopt.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_license_cli.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_licenses.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_packaging.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_readme_blocks.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_run_tests_driver.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_template_parity.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_utils.py +0 -0
- {git_repokit-0.9.11 → git_repokit-0.10.1}/tests/test_vendored_ailib.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-repokit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.1
|
|
4
4
|
Summary: Create standardized Git repositories: language presets, licenses, GitHub setup, and a private notes vault
|
|
5
5
|
Author: Dustin Darcy
|
|
6
6
|
License-Expression: MIT
|
|
@@ -58,10 +58,10 @@ Dynamic: license-file
|
|
|
58
58
|
A full create (the [Quick Start](#-quick-start) below) produces:
|
|
59
59
|
|
|
60
60
|
- **The structure:** README, CONTRIBUTING, CHANGELOG, LICENSE, `.gitignore`, `.gitattributes`, `docs/`, `tests/`, `scripts/`, and, if you ask for them, ROADMAP, a funding file, Dependabot, a stale-issue policy and PR and release templates.
|
|
61
|
-
- **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, and more. Each comes with tests, a CI workflow and a VS Code debug configuration
|
|
61
|
+
- **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, a Paradox game mod (Crusader Kings III and others), and more. Each comes with tests, a CI workflow and a VS Code debug configuration where it has something to run, from the first commit. The project's settings name its languages, so the hooks run the right checks. See [Languages and layers](docs/Languages-and-Layers.md).
|
|
62
62
|
- **A README that names the project:** the real GitHub owner, badges for the release, the Python or Node minimum and the license, install and test commands for the preset, and a License section at the end.
|
|
63
63
|
- **The tooling:** [git-repokit-common](https://github.com/DazzleTools/git-repokit-common) vendored at `scripts/repokit-common/`, with git hooks that keep version numbers in step, keep private files out of public commits, and run the tests before a push.
|
|
64
|
-
- **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents and
|
|
64
|
+
- **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents, postmortems, conversations (`convos/`) and old revisions (`revisions/`); run logs go to `private/logs/`, kept on disk and never versioned. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
|
|
65
65
|
- **The repository on GitHub** (with `--github`): created with your `gh` login and pushed. It gets the standard labels, Roadmap and Quick Notes as issues #1 and #2 (pinned), discussions and topics. See [GitHub setup](docs/GitHub-Setup.md).
|
|
66
66
|
|
|
67
67
|
## 📦 Installation
|
|
@@ -157,8 +157,6 @@ git push
|
|
|
157
157
|
|
|
158
158
|
`safe-merge` leaves out the private content (`private/`, `CLAUDE.md`, `revisions/`, ...), and the hooks refuse it on a public branch if it ever gets staged. `--github` pushes only the public branches. Other layouts: `simple` (private, dev, main), `gitflow`, `github-flow`, and your own with `--branches` and `--worktrees`; see [Branch strategies](#branch-strategies) below.
|
|
159
159
|
|
|
160
|
-
> **Known issue in 0.9.11:** this create prints `fatal: ambiguous argument 'private'` once per public branch, and `dev/` and `github/` start with only the README and `.github/`. The loop above still brings the work across. The fix is tracked in [#16](https://github.com/DazzleTools/git-repokit/issues/16).
|
|
161
|
-
|
|
162
160
|
### Other common creates
|
|
163
161
|
|
|
164
162
|
```bash
|
|
@@ -175,6 +173,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
|
|
|
175
173
|
# A TypeScript npm package
|
|
176
174
|
repokit create my-lib --language js-ts --license mpl-2.0
|
|
177
175
|
|
|
176
|
+
# A Crusader Kings III mod: the mod in mod/, the repository's own files above it
|
|
177
|
+
repokit create my-mod --language paradox --license mit
|
|
178
|
+
|
|
178
179
|
# A one-file Python script, no packaging, given away to the public domain
|
|
179
180
|
repokit create my-script --with python/script --license unlicense
|
|
180
181
|
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
A full create (the [Quick Start](#-quick-start) below) produces:
|
|
18
18
|
|
|
19
19
|
- **The structure:** README, CONTRIBUTING, CHANGELOG, LICENSE, `.gitignore`, `.gitattributes`, `docs/`, `tests/`, `scripts/`, and, if you ask for them, ROADMAP, a funding file, Dependabot, a stale-issue policy and PR and release templates.
|
|
20
|
-
- **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, and more. Each comes with tests, a CI workflow and a VS Code debug configuration
|
|
20
|
+
- **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, a Paradox game mod (Crusader Kings III and others), and more. Each comes with tests, a CI workflow and a VS Code debug configuration where it has something to run, from the first commit. The project's settings name its languages, so the hooks run the right checks. See [Languages and layers](docs/Languages-and-Layers.md).
|
|
21
21
|
- **A README that names the project:** the real GitHub owner, badges for the release, the Python or Node minimum and the license, install and test commands for the preset, and a License section at the end.
|
|
22
22
|
- **The tooling:** [git-repokit-common](https://github.com/DazzleTools/git-repokit-common) vendored at `scripts/repokit-common/`, with git hooks that keep version numbers in step, keep private files out of public commits, and run the tests before a push.
|
|
23
|
-
- **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents and
|
|
23
|
+
- **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents, postmortems, conversations (`convos/`) and old revisions (`revisions/`); run logs go to `private/logs/`, kept on disk and never versioned. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
|
|
24
24
|
- **The repository on GitHub** (with `--github`): created with your `gh` login and pushed. It gets the standard labels, Roadmap and Quick Notes as issues #1 and #2 (pinned), discussions and topics. See [GitHub setup](docs/GitHub-Setup.md).
|
|
25
25
|
|
|
26
26
|
## 📦 Installation
|
|
@@ -116,8 +116,6 @@ git push
|
|
|
116
116
|
|
|
117
117
|
`safe-merge` leaves out the private content (`private/`, `CLAUDE.md`, `revisions/`, ...), and the hooks refuse it on a public branch if it ever gets staged. `--github` pushes only the public branches. Other layouts: `simple` (private, dev, main), `gitflow`, `github-flow`, and your own with `--branches` and `--worktrees`; see [Branch strategies](#branch-strategies) below.
|
|
118
118
|
|
|
119
|
-
> **Known issue in 0.9.11:** this create prints `fatal: ambiguous argument 'private'` once per public branch, and `dev/` and `github/` start with only the README and `.github/`. The loop above still brings the work across. The fix is tracked in [#16](https://github.com/DazzleTools/git-repokit/issues/16).
|
|
120
|
-
|
|
121
119
|
### Other common creates
|
|
122
120
|
|
|
123
121
|
```bash
|
|
@@ -134,6 +132,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
|
|
|
134
132
|
# A TypeScript npm package
|
|
135
133
|
repokit create my-lib --language js-ts --license mpl-2.0
|
|
136
134
|
|
|
135
|
+
# A Crusader Kings III mod: the mod in mod/, the repository's own files above it
|
|
136
|
+
repokit create my-mod --language paradox --license mit
|
|
137
|
+
|
|
137
138
|
# A one-file Python script, no packaging, given away to the public domain
|
|
138
139
|
repokit create my-script --with python/script --license unlicense
|
|
139
140
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-repokit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.1
|
|
4
4
|
Summary: Create standardized Git repositories: language presets, licenses, GitHub setup, and a private notes vault
|
|
5
5
|
Author: Dustin Darcy
|
|
6
6
|
License-Expression: MIT
|
|
@@ -58,10 +58,10 @@ Dynamic: license-file
|
|
|
58
58
|
A full create (the [Quick Start](#-quick-start) below) produces:
|
|
59
59
|
|
|
60
60
|
- **The structure:** README, CONTRIBUTING, CHANGELOG, LICENSE, `.gitignore`, `.gitattributes`, `docs/`, `tests/`, `scripts/`, and, if you ask for them, ROADMAP, a funding file, Dependabot, a stale-issue policy and PR and release templates.
|
|
61
|
-
- **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, and more. Each comes with tests, a CI workflow and a VS Code debug configuration
|
|
61
|
+
- **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, a Paradox game mod (Crusader Kings III and others), and more. Each comes with tests, a CI workflow and a VS Code debug configuration where it has something to run, from the first commit. The project's settings name its languages, so the hooks run the right checks. See [Languages and layers](docs/Languages-and-Layers.md).
|
|
62
62
|
- **A README that names the project:** the real GitHub owner, badges for the release, the Python or Node minimum and the license, install and test commands for the preset, and a License section at the end.
|
|
63
63
|
- **The tooling:** [git-repokit-common](https://github.com/DazzleTools/git-repokit-common) vendored at `scripts/repokit-common/`, with git hooks that keep version numbers in step, keep private files out of public commits, and run the tests before a push.
|
|
64
|
-
- **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents and
|
|
64
|
+
- **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents, postmortems, conversations (`convos/`) and old revisions (`revisions/`); run logs go to `private/logs/`, kept on disk and never versioned. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
|
|
65
65
|
- **The repository on GitHub** (with `--github`): created with your `gh` login and pushed. It gets the standard labels, Roadmap and Quick Notes as issues #1 and #2 (pinned), discussions and topics. See [GitHub setup](docs/GitHub-Setup.md).
|
|
66
66
|
|
|
67
67
|
## 📦 Installation
|
|
@@ -157,8 +157,6 @@ git push
|
|
|
157
157
|
|
|
158
158
|
`safe-merge` leaves out the private content (`private/`, `CLAUDE.md`, `revisions/`, ...), and the hooks refuse it on a public branch if it ever gets staged. `--github` pushes only the public branches. Other layouts: `simple` (private, dev, main), `gitflow`, `github-flow`, and your own with `--branches` and `--worktrees`; see [Branch strategies](#branch-strategies) below.
|
|
159
159
|
|
|
160
|
-
> **Known issue in 0.9.11:** this create prints `fatal: ambiguous argument 'private'` once per public branch, and `dev/` and `github/` start with only the README and `.github/`. The loop above still brings the work across. The fix is tracked in [#16](https://github.com/DazzleTools/git-repokit/issues/16).
|
|
161
|
-
|
|
162
160
|
### Other common creates
|
|
163
161
|
|
|
164
162
|
```bash
|
|
@@ -175,6 +173,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
|
|
|
175
173
|
# A TypeScript npm package
|
|
176
174
|
repokit create my-lib --language js-ts --license mpl-2.0
|
|
177
175
|
|
|
176
|
+
# A Crusader Kings III mod: the mod in mod/, the repository's own files above it
|
|
177
|
+
repokit create my-mod --language paradox --license mit
|
|
178
|
+
|
|
178
179
|
# A one-file Python script, no packaging, given away to the public domain
|
|
179
180
|
repokit create my-script --with python/script --license unlicense
|
|
180
181
|
|
|
@@ -133,6 +133,12 @@ repokit/templates/layers/archetypes/js-ts/script/.vscode/launch.json
|
|
|
133
133
|
repokit/templates/layers/archetypes/js-ts/script/tests/version.test.js
|
|
134
134
|
repokit/templates/layers/archetypes/js-ts/ts/package.json
|
|
135
135
|
repokit/templates/layers/archetypes/js-ts/ts/tsconfig.json
|
|
136
|
+
repokit/templates/layers/archetypes/paradox/ck3/.repokit-common.toml
|
|
137
|
+
repokit/templates/layers/archetypes/paradox/ck3/mod/descriptor.mod
|
|
138
|
+
repokit/templates/layers/archetypes/paradox/clausewitz/mod/localisation/english/__RK_SNAKE___l_english.yml
|
|
139
|
+
repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/descriptor.mod
|
|
140
|
+
repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/thumbnail.png
|
|
141
|
+
repokit/templates/layers/archetypes/paradox/jomini/mod/localization/english/__RK_SNAKE___l_english.yml
|
|
136
142
|
repokit/templates/layers/archetypes/python/claude-plugin/.repokit-common.toml
|
|
137
143
|
repokit/templates/layers/archetypes/python/claude-plugin/VERSION
|
|
138
144
|
repokit/templates/layers/archetypes/python/claude-plugin/.github/workflows/ci-python.yml
|
|
@@ -168,6 +174,10 @@ repokit/templates/layers/languages/js-ts/.repokit-common.toml
|
|
|
168
174
|
repokit/templates/layers/languages/js-ts/VERSION
|
|
169
175
|
repokit/templates/layers/languages/js-ts/.github/workflows/ci-js-ts.yml
|
|
170
176
|
repokit/templates/layers/languages/js-ts/.vscode/launch.json
|
|
177
|
+
repokit/templates/layers/languages/paradox/.gitattributes.rkappend
|
|
178
|
+
repokit/templates/layers/languages/paradox/.repokit-common.toml
|
|
179
|
+
repokit/templates/layers/languages/paradox/VERSION
|
|
180
|
+
repokit/templates/layers/languages/paradox/docs/modding.md
|
|
171
181
|
repokit/templates/layers/languages/python/.gitignore.rkappend
|
|
172
182
|
repokit/templates/layers/languages/python/.github/workflows/ci-python.yml
|
|
173
183
|
repokit/templates/layers/languages/python/.vscode/launch.json
|
|
@@ -195,6 +205,7 @@ tests/test_guardrails.py
|
|
|
195
205
|
tests/test_hermetic.py
|
|
196
206
|
tests/test_hook_encoding.py
|
|
197
207
|
tests/test_hook_patterns.py
|
|
208
|
+
tests/test_languages_setting.py
|
|
198
209
|
tests/test_layer_action_pins.py
|
|
199
210
|
tests/test_layers.py
|
|
200
211
|
tests/test_layers_c_cpp.py
|
|
@@ -209,6 +220,8 @@ tests/test_license_cli.py
|
|
|
209
220
|
tests/test_licenses.py
|
|
210
221
|
tests/test_new_default.py
|
|
211
222
|
tests/test_packaging.py
|
|
223
|
+
tests/test_paradox.py
|
|
224
|
+
tests/test_private_branch_create.py
|
|
212
225
|
tests/test_readme_blocks.py
|
|
213
226
|
tests/test_run_tests_driver.py
|
|
214
227
|
tests/test_template_parity.py
|
|
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
|
|
|
8
8
|
# PyPI's trusted publisher is registered for this name (DazzleTools/git-repokit,
|
|
9
9
|
# publish.yml, environment pypi); the command stays `repokit`
|
|
10
10
|
name = "git-repokit"
|
|
11
|
-
version = "0.
|
|
11
|
+
version = "0.10.1"
|
|
12
12
|
description = "Create standardized Git repositories: language presets, licenses, GitHub setup, and a private notes vault"
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
license = "MIT"
|
|
@@ -154,10 +154,12 @@ class BranchContext:
|
|
|
154
154
|
return self.branch_type == 'public'
|
|
155
155
|
|
|
156
156
|
def get_staged_files(self) -> List[str]:
|
|
157
|
-
"""
|
|
157
|
+
"""Files the commit adds or changes (0.9.12: deletions are left out --
|
|
158
|
+
removing a private file from a public branch is what the guard wants,
|
|
159
|
+
not something to refuse)."""
|
|
158
160
|
try:
|
|
159
161
|
result = subprocess.run(
|
|
160
|
-
['git', 'diff', '--cached', '--name-only'],
|
|
162
|
+
['git', 'diff', '--cached', '--name-only', '--diff-filter=ACMR'],
|
|
161
163
|
cwd=self.repo_path,
|
|
162
164
|
capture_output=True,
|
|
163
165
|
text=True,
|
|
@@ -124,6 +124,30 @@ def private_branch_settings(private_branch: Optional[str], private_paths: List[s
|
|
|
124
124
|
return settings
|
|
125
125
|
|
|
126
126
|
|
|
127
|
+
def languages_setting(languages: List[str], layer_folders: List[str]) -> List[str]:
|
|
128
|
+
"""The `languages` value a create writes for git-repokit-common's hooks.
|
|
129
|
+
|
|
130
|
+
repokit's language names mapped to repokit-common's, in the composed
|
|
131
|
+
order (the first is primary): js-ts is "typescript" when the ts layer is
|
|
132
|
+
part of the composition, else "javascript"; python, c-cpp and paradox
|
|
133
|
+
are the same names; generic and the `any` pseudo-language add nothing.
|
|
134
|
+
Writing it, rather than leaving the hooks to detect it from the root,
|
|
135
|
+
keeps a project whose markers sit in a subfolder (a plugin in plugin/)
|
|
136
|
+
from reading as Python (design 2026-10-30__08-28-15, Addendum 2).
|
|
137
|
+
"""
|
|
138
|
+
out: List[str] = []
|
|
139
|
+
for lang in languages:
|
|
140
|
+
if lang == "js-ts":
|
|
141
|
+
name = "typescript" if any(f.endswith("js-ts/ts") for f in layer_folders) else "javascript"
|
|
142
|
+
elif lang in ("python", "c-cpp", "paradox"):
|
|
143
|
+
name = lang
|
|
144
|
+
else:
|
|
145
|
+
continue
|
|
146
|
+
if name not in out:
|
|
147
|
+
out.append(name)
|
|
148
|
+
return out
|
|
149
|
+
|
|
150
|
+
|
|
127
151
|
def _toml_list(values: List[str]) -> str:
|
|
128
152
|
return "[" + ", ".join('"' + v.replace("\\", "\\\\").replace('"', '\\"') + '"' for v in values) + "]"
|
|
129
153
|
|
|
@@ -131,23 +155,59 @@ def _toml_list(values: List[str]) -> str:
|
|
|
131
155
|
_TABLE_HEADER = re.compile(r"^[ \t]*\[[ \t]*tool[ \t]*\.[ \t]*\"?repokit-common\"?[ \t]*\][ \t]*\r?\n", re.MULTILINE)
|
|
132
156
|
|
|
133
157
|
|
|
158
|
+
# Keys whose list only ever protects more as it grows: when the table already
|
|
159
|
+
# has one, the entries it lacks are added to it rather than the key being
|
|
160
|
+
# skipped (0.9.12). A layer's pyproject.toml ships its own private-patterns, and
|
|
161
|
+
# skipping the key dropped CLAUDE.md and the private dirs from the guard.
|
|
162
|
+
_UNION_KEYS = ("private-patterns",)
|
|
163
|
+
_TOML_STRING = re.compile(r'"((?:[^"\\]|\\.)*)"|\'([^\']*)\'')
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def _union_into_list(table: str, key: str, values: List[str]) -> Optional[str]:
|
|
167
|
+
"""`table` with the `values` its `key = [...]` list lacks appended inside
|
|
168
|
+
the brackets (a list written over several lines is kept as written).
|
|
169
|
+
None when the key is not a list or nothing is missing."""
|
|
170
|
+
found = re.search(rf"^([ \t]*{re.escape(key)}[ \t]*=[ \t]*\[)(.*?)(\])", table, re.MULTILINE | re.DOTALL)
|
|
171
|
+
if not found:
|
|
172
|
+
return None
|
|
173
|
+
inner = found.group(2)
|
|
174
|
+
present = {(m.group(1) if m.group(1) is not None else m.group(2)).replace('\\"', '"').replace("\\\\", "\\")
|
|
175
|
+
for m in _TOML_STRING.finditer(inner)}
|
|
176
|
+
missing = [v for v in values if v not in present]
|
|
177
|
+
if not missing:
|
|
178
|
+
return None
|
|
179
|
+
kept = inner.rstrip()
|
|
180
|
+
tail = inner[len(kept):]
|
|
181
|
+
sep = "" if not kept.strip() else (" " if kept.endswith(",") else ", ")
|
|
182
|
+
added = _toml_list(missing)[1:-1]
|
|
183
|
+
return table[: found.start(2)] + kept + sep + added + tail + table[found.end(2):]
|
|
184
|
+
|
|
185
|
+
|
|
134
186
|
def _merge_into_table(text: str, settings: Dict[str, List[str]]) -> Optional[str]:
|
|
135
187
|
"""Add the keys the existing [tool.repokit-common] table lacks, right after
|
|
136
|
-
its header
|
|
137
|
-
|
|
188
|
+
its header. A key already present is never overwritten, except that a
|
|
189
|
+
`_UNION_KEYS` list gains the entries it lacks. Returns the new text, or
|
|
190
|
+
None when nothing was missing."""
|
|
138
191
|
header = _TABLE_HEADER.search(text)
|
|
139
192
|
if not header:
|
|
140
193
|
return None
|
|
141
194
|
rest = text[header.end():]
|
|
142
195
|
next_table = re.search(r"^[ \t]*\[", rest, re.MULTILINE) # the table ends at the next header
|
|
143
196
|
table = rest[: next_table.start()] if next_table else rest
|
|
197
|
+
after = rest[len(table):]
|
|
144
198
|
missing = [key for key in settings
|
|
145
199
|
if not re.search(rf"^[ \t]*{re.escape(key)}[ \t]*=", table, re.MULTILINE)]
|
|
146
|
-
|
|
200
|
+
grown = table
|
|
201
|
+
for key in _UNION_KEYS:
|
|
202
|
+
if key in settings and key not in missing:
|
|
203
|
+
unioned = _union_into_list(grown, key, settings[key])
|
|
204
|
+
if unioned is not None:
|
|
205
|
+
grown = unioned
|
|
206
|
+
if not missing and grown == table:
|
|
147
207
|
return None
|
|
148
208
|
nl = "\r\n" if "\r\n" in text else "\n"
|
|
149
209
|
lines = "".join(f"{key} = {_toml_list(settings[key])}{nl}" for key in missing)
|
|
150
|
-
return text[: header.end()] + lines +
|
|
210
|
+
return text[: header.end()] + lines + grown + after
|
|
151
211
|
|
|
152
212
|
|
|
153
213
|
def write_settings(repo_root: str, settings: Dict[str, List[str]]) -> Optional[str]:
|
|
@@ -158,7 +218,8 @@ def write_settings(repo_root: str, settings: Dict[str, List[str]]) -> Optional[s
|
|
|
158
218
|
(created with the header repokit-common requires, or merged the same way).
|
|
159
219
|
A key already present is never overwritten: a code-type layer may ship
|
|
160
220
|
the file with its own version-source, and the private-branch settings go
|
|
161
|
-
in beside it rather than being dropped.
|
|
221
|
+
in beside it rather than being dropped. The one exception is
|
|
222
|
+
private-patterns, whose existing list gains the entries it lacks.
|
|
162
223
|
"""
|
|
163
224
|
if not settings:
|
|
164
225
|
return None
|
|
@@ -59,12 +59,11 @@ class ConfigManager:
|
|
|
59
59
|
# replaces them with the chosen strategy's values
|
|
60
60
|
"branches": list(BRANCH_STRATEGIES[DEFAULT_BRANCH_STRATEGY]["branches"]),
|
|
61
61
|
"worktrees": list(BRANCH_STRATEGIES[DEFAULT_BRANCH_STRATEGY]["worktrees"]),
|
|
62
|
+
# convos/, revisions/ and logs/ live in private/ since 0.10.0
|
|
63
|
+
# (vault.PRIVATE_STRUCTURE), not at the project root
|
|
62
64
|
"directories": [
|
|
63
|
-
"convos",
|
|
64
65
|
"docs",
|
|
65
|
-
"logs",
|
|
66
66
|
"private",
|
|
67
|
-
"revisions",
|
|
68
67
|
"scripts",
|
|
69
68
|
"tests",
|
|
70
69
|
],
|
|
@@ -180,15 +180,17 @@ def strategy_push_branches(name: str) -> List[str]:
|
|
|
180
180
|
DEFAULT_BRANCH_STRATEGIES = {name: strategy_branch_list(name) for name in BRANCH_STRATEGIES}
|
|
181
181
|
|
|
182
182
|
# Default directory profiles - centralized from directory_profiles.py
|
|
183
|
+
# convos/, revisions/ and logs/ are made inside private/ (vault.PRIVATE_STRUCTURE)
|
|
184
|
+
# since 0.10.0, never at the project root; DEFAULT_PRIVATE_DIRS still names
|
|
185
|
+
# them, so a root folder an older project has stays out of public history.
|
|
183
186
|
DEFAULT_DIRECTORY_PROFILES = {
|
|
184
187
|
"minimal": ["src", "tests", "docs"],
|
|
185
188
|
"standard": [
|
|
186
|
-
"src", "tests", "docs", "scripts", "config",
|
|
187
|
-
"logs", "private", "convos", "revisions"
|
|
189
|
+
"src", "tests", "docs", "scripts", "config", "private"
|
|
188
190
|
],
|
|
189
191
|
"complete": [
|
|
190
|
-
"src", "tests", "docs", "scripts", "config",
|
|
191
|
-
"private", "
|
|
192
|
+
"src", "tests", "docs", "scripts", "config",
|
|
193
|
+
"private", "data", "examples",
|
|
192
194
|
"tools", "resources", "assets"
|
|
193
195
|
]
|
|
194
196
|
}
|
|
@@ -214,7 +214,7 @@ except ImportError:
|
|
|
214
214
|
|
|
215
215
|
if branch not in ['private', 'local']:
|
|
216
216
|
# Check for obvious private files
|
|
217
|
-
result = subprocess.run(['git', 'diff', '--cached', '--name-only'],
|
|
217
|
+
result = subprocess.run(['git', 'diff', '--cached', '--name-only', '--diff-filter=ACMR'],
|
|
218
218
|
capture_output=True, text=True)
|
|
219
219
|
files = result.stdout.strip().split('\\n')
|
|
220
220
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Pre-commit hook to prevent committing private content
|
|
3
3
|
|
|
4
4
|
# Check for private directories
|
|
5
|
-
for file in $(git diff --cached --name-only); do
|
|
5
|
+
for file in $(git diff --cached --name-only --diff-filter=ACMR); do
|
|
6
6
|
if echo "$file" | grep -q -E "^private/|^convos/|^logs/|__private__"; then
|
|
7
7
|
echo "ERROR: Attempting to commit private content: $file"
|
|
8
8
|
echo "Private content should not be committed to the repository."
|
|
@@ -15,7 +15,7 @@ PRIVATE_PATTERNS=(
|
|
|
15
15
|
$private_dirs_patterns
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
for file in $(git diff --cached --name-only); do
|
|
18
|
+
for file in $(git diff --cached --name-only --diff-filter=ACMR); do
|
|
19
19
|
for pattern in "${PRIVATE_PATTERNS[@]}"; do
|
|
20
20
|
if echo "$file" | grep -q -E "$pattern"; then
|
|
21
21
|
echo "ERROR: Attempting to commit private content: $file"
|
|
@@ -376,14 +376,22 @@ def catalogue_lines(manifest: Dict[str, Any], language: Optional[str] = None) ->
|
|
|
376
376
|
head = f"{lang}:" + (f" (planned: {entry.get('description', '')})" if entry.get("stub") else "")
|
|
377
377
|
lines.append(head)
|
|
378
378
|
default = entry.get("default")
|
|
379
|
+
planned = []
|
|
379
380
|
for key in sorted(k for k in manifest["archetypes"] if k.startswith(lang + "/")):
|
|
380
381
|
preset = manifest["archetypes"][key]
|
|
381
382
|
if preset.get("stub"):
|
|
382
|
-
|
|
383
|
+
if language:
|
|
384
|
+
lines.append(f" {key:28} (planned: {preset.get('description', '')})")
|
|
385
|
+
else:
|
|
386
|
+
planned.append(key.split("/", 1)[1])
|
|
383
387
|
else:
|
|
384
388
|
parts = [f.split("/", 2)[-1] for f in preset.get("layers", [])]
|
|
385
389
|
mark = " <- default" if key == default else ""
|
|
386
390
|
lines.append(f" {key:28} = {', '.join(parts)}{mark}")
|
|
391
|
+
if planned:
|
|
392
|
+
# The overview keeps one screen (AC-10): a language's planned presets
|
|
393
|
+
# share a line; `repokit list <lang>` shows each with its description.
|
|
394
|
+
lines.append(f" {'planned:':28} {', '.join(planned)}")
|
|
387
395
|
for facet, spec in facets:
|
|
388
396
|
if facet == "language":
|
|
389
397
|
continue
|