git-repokit 0.9.12__tar.gz → 0.10.3__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.12/git_repokit.egg-info → git_repokit-0.10.3}/PKG-INFO +18 -3
- {git_repokit-0.9.12 → git_repokit-0.10.3}/README.md +15 -2
- {git_repokit-0.9.12 → git_repokit-0.10.3/git_repokit.egg-info}/PKG-INFO +18 -3
- {git_repokit-0.9.12 → git_repokit-0.10.3}/git_repokit.egg-info/SOURCES.txt +15 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/git_repokit.egg-info/requires.txt +2 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/pyproject.toml +7 -1
- git_repokit-0.10.3/repokit/__version__.py +9 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/branch_utils.py +40 -2
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/cli.py +21 -8
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/common_kit.py +78 -10
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/config.py +12 -4
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/defaults.py +60 -4
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/layers.py +11 -1
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/repo_manager.py +237 -58
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/hooks/pre-commit.template +15 -1
- git_repokit-0.10.3/repokit/templates/layers/archetypes/paradox/ck3/.repokit-common.toml +28 -0
- git_repokit-0.10.3/repokit/templates/layers/archetypes/paradox/ck3/mod/descriptor.mod +6 -0
- git_repokit-0.10.3/repokit/templates/layers/archetypes/paradox/clausewitz/mod/localisation/english/__RK_SNAKE___l_english.yml +2 -0
- git_repokit-0.10.3/repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/descriptor.mod +9 -0
- git_repokit-0.10.3/repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/thumbnail.png +0 -0
- git_repokit-0.10.3/repokit/templates/layers/archetypes/paradox/jomini/mod/localization/english/__RK_SNAKE___l_english.yml +2 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/js-ts/.repokit-common.toml +4 -3
- git_repokit-0.10.3/repokit/templates/layers/languages/paradox/.gitattributes.rkappend +12 -0
- git_repokit-0.10.3/repokit/templates/layers/languages/paradox/.repokit-common.toml +29 -0
- git_repokit-0.10.3/repokit/templates/layers/languages/paradox/VERSION +1 -0
- git_repokit-0.10.3/repokit/templates/layers/languages/paradox/docs/modding.md +34 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/manifest.toml +113 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/vault.py +28 -8
- git_repokit-0.10.3/tests/test_common_guard.py +443 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_directory_profiles.py +27 -14
- git_repokit-0.10.3/tests/test_languages_setting.py +79 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layers_claude_plugin.py +3 -3
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layers_cli.py +11 -2
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layers_compositions.py +29 -1
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layers_js_ts.py +3 -1
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layers_vscode.py +9 -1
- git_repokit-0.10.3/tests/test_list_templates.py +21 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_new_default.py +13 -4
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_packaging.py +15 -0
- git_repokit-0.10.3/tests/test_paradox.py +177 -0
- git_repokit-0.10.3/tests/test_private_modes.py +388 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_vault_bootstrap.py +20 -0
- git_repokit-0.9.12/repokit/__version__.py +0 -4
- {git_repokit-0.9.12 → git_repokit-0.10.3}/LICENSE +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/MANIFEST.in +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/git_repokit.egg-info/dependency_links.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/git_repokit.egg-info/entry_points.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/git_repokit.egg-info/top_level.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/__init__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/__main__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/__init__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/__init__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/analyzer.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/backend.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/cache.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/parsers.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/transports/__init__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/transports/cli.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/transports/openai_compat.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/transports/prompt_file.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/_vendor/ailib/types.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/auth_integration.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/badges.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/directory_analyzer.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/directory_profiles.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/git_config.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/github_create.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/github_setup.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/guardrails.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/history_cleaner.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/history_protection.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/hooks/pre-commit-guardrails +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/hooks/pre-commit-template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/0bsd.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/LICENSES.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/__init__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/agpl-3.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/all-rights-reserved.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/apache-2.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/bsd-2-clause.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/bsd-3-clause.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/bsl-1.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/cc-by-4.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/cc-by-sa-4.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/cc0-1.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/epl-2.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/gpl-2.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/gpl-3.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/isc.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/lgpl-2.1.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/lgpl-3.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/mit.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/mpl-2.0.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/proprietary-evaluation.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/licenses/unlicense.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/readme_blocks.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/remote_integration.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/template_engine.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/ai/claude/CLAUDE-nested.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/ai/claude/CLAUDE.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/ai/claude/instructions/step1_context_rebuilder.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/ai/claude/instructions/step2_dev_workflow_process.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/ai/claude/instructions/step3_context_bridge.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/common/CHANGELOG.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/common/CONTRIBUTING.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/common/README.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/common/gitattributes.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/common/gitignore.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/FUNDING.yml.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/ROADMAP.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/dependabot.yml.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/one-offs-README.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/platform-support.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/pull_request_template.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/release-template.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/settings.json.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/extras/stale.yml.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/github/CODEOWNERS.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/github/ISSUE_TEMPLATE/bug-report.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/github/ISSUE_TEMPLATE/feature-request.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/github/issues/notes.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/github/issues/roadmap.md.template +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/any/claude-plugin/.claude-plugin/marketplace.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/.claude-plugin/plugin.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/README.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.github/workflows/ci-c-cpp.yml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.repokit-common.toml.rkappend +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/tasks.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakeLists.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakePresets.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/cmake/GenerateStamp.cmake +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/src/main.cpp +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/tests/test_version.cpp +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/cmake-app/vcpkg.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/minimal/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/minimal/Makefile +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/minimal/build.bat +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/minimal/src/__RK_SNAKE__.c +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/tasks.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.sln +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.vcxproj +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/c-cpp/msbuild/src/main.cpp +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.repokit-common.toml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/hooks.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/scripts/session-start.mjs +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/tests/manifest.test.js +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/node/.repokit-common.toml.rkappend +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/node/package.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/node-package/.github/workflows/release.yml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/node-package/package.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/node-package/src/index.ts +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/node-package/tests/index.test.ts +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/script/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/script/__RK_PROJECT__.js +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/script/tests/version.test.js +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/ts/package.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/js-ts/ts/tsconfig.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/.github/workflows/ci-python.yml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/.repokit-common.toml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/VERSION +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/hooks.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/run-hook.mjs +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/session_start.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/tests/test_manifest.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/.github/workflows/release.yml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__init__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__main__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/_version.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/cli.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/pyproject.toml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/tests/conftest.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/pypi/tests/test_version.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/script/.github/workflows/ci-python.yml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/script/.repokit-common.toml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/script/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/script/VERSION +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/script/__RK_PROJECT__.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/script/tests/test_version.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/setuppy/requirements.txt +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/archetypes/python/setuppy/setup.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/c-cpp/.gitignore.rkappend +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/c-cpp/.repokit-common.toml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/c-cpp/include/__RK_SNAKE__/version.h +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/c-cpp/src/app.rc +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/js-ts/.editorconfig +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/js-ts/.github/workflows/ci-js-ts.yml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/js-ts/.gitignore.rkappend +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/js-ts/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/js-ts/VERSION +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/python/.github/workflows/ci-python.yml +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/python/.gitignore.rkappend +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/layers/languages/python/.vscode/launch.json +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/vault/CLAUDE.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/vault/claude/_maps/MOC-project.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/vault/claude/_oracle/backlinks.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/vault/claude/_oracle/concepts.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/vault/claude/_oracle/manifest.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/vault/claude/_todo/ACTIVE-WORK.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/templates/vault/claude/_todo/OPEN-LOOPS.md +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/repokit/utils.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/setup.cfg +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/setup.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_badges.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_branch_strategies.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_cli_examples.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_cli_integration.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_core_functionality.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_deployment_scenarios.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_docs_links.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_extras_cli.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_github_create.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_github_integration.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_github_owner.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_github_setup.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_guardrails.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_hermetic.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_hook_encoding.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_hook_patterns.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layer_action_pins.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layers.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_layers_c_cpp.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_legacy_smoke.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_license_adopt.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_license_cli.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_licenses.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_private_branch_create.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_readme_blocks.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_run_tests_driver.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_template_parity.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/tests/test_utils.py +0 -0
- {git_repokit-0.9.12 → git_repokit-0.10.3}/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.3
|
|
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
|
|
@@ -24,6 +24,8 @@ Description-Content-Type: text/markdown
|
|
|
24
24
|
License-File: LICENSE
|
|
25
25
|
Requires-Dist: requests>=2.25.0
|
|
26
26
|
Requires-Dist: tomli>=1.1; python_version < "3.11"
|
|
27
|
+
Requires-Dist: dazzle-lib>=0.8.2
|
|
28
|
+
Requires-Dist: dazzle-loglib>=0.3.3
|
|
27
29
|
Provides-Extra: test
|
|
28
30
|
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
29
31
|
Requires-Dist: python-dotenv>=1.0.0; extra == "test"
|
|
@@ -58,10 +60,10 @@ Dynamic: license-file
|
|
|
58
60
|
A full create (the [Quick Start](#-quick-start) below) produces:
|
|
59
61
|
|
|
60
62
|
- **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
|
|
63
|
+
- **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
64
|
- **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
65
|
- **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
|
|
66
|
+
- **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
67
|
- **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
68
|
|
|
67
69
|
## 📦 Installation
|
|
@@ -173,6 +175,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
|
|
|
173
175
|
# A TypeScript npm package
|
|
174
176
|
repokit create my-lib --language js-ts --license mpl-2.0
|
|
175
177
|
|
|
178
|
+
# A Crusader Kings III mod: the mod in mod/, the repository's own files above it
|
|
179
|
+
repokit create my-mod --language paradox --license mit
|
|
180
|
+
|
|
176
181
|
# A one-file Python script, no packaging, given away to the public domain
|
|
177
182
|
repokit create my-script --with python/script --license unlicense
|
|
178
183
|
|
|
@@ -216,6 +221,16 @@ repokit has two ways to keep private work private:
|
|
|
216
221
|
- **`main-only` (the default):** the project folder is the repository, on `main`, and `private/` is its own nested git repository that the project ignores. One branch, no merging rules to learn.
|
|
217
222
|
- **The private-branch model:** your working history lives on a local-only `private` branch in `<name>/local/`, and the public branches are git worktrees in sibling folders. You move finished work across with `repokit safe-merge`, which leaves the private content behind. This is the model repokit was first built for, and it suits projects with several release stages or several people.
|
|
218
223
|
|
|
224
|
+
What the private branch carries is the **private mode** (`--private-mode`):
|
|
225
|
+
|
|
226
|
+
| Mode | `private/` | Tracked on the private branch | Default for |
|
|
227
|
+
|---|---|---|---|
|
|
228
|
+
| `nested` | its own repository | nothing private | `main-only` |
|
|
229
|
+
| `nested-branch` | its own repository, linked into every worktree | `convos/`, `revisions/`, `logs/` (run logs ignored) | a `create` with a private-branch strategy |
|
|
230
|
+
| `branch` | on the private branch | `private/` too | `adopt`; otherwise opt-in, warned |
|
|
231
|
+
|
|
232
|
+
The promoted folders never reach a public branch or a remote. The hooks refuse them on public branches, `safe-merge` leaves them out, and git-repokit-common's pre-push refuses a push that would add them. See [The vault](docs/The-Vault.md).
|
|
233
|
+
|
|
219
234
|
| `--branch-strategy` | Public branches | Checked out in folders | Flow |
|
|
220
235
|
|---|---|---|---|
|
|
221
236
|
| `main-only` | main | the project folder itself | commit on main |
|
|
@@ -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
|
|
@@ -132,6 +132,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
|
|
|
132
132
|
# A TypeScript npm package
|
|
133
133
|
repokit create my-lib --language js-ts --license mpl-2.0
|
|
134
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
|
+
|
|
135
138
|
# A one-file Python script, no packaging, given away to the public domain
|
|
136
139
|
repokit create my-script --with python/script --license unlicense
|
|
137
140
|
|
|
@@ -175,6 +178,16 @@ repokit has two ways to keep private work private:
|
|
|
175
178
|
- **`main-only` (the default):** the project folder is the repository, on `main`, and `private/` is its own nested git repository that the project ignores. One branch, no merging rules to learn.
|
|
176
179
|
- **The private-branch model:** your working history lives on a local-only `private` branch in `<name>/local/`, and the public branches are git worktrees in sibling folders. You move finished work across with `repokit safe-merge`, which leaves the private content behind. This is the model repokit was first built for, and it suits projects with several release stages or several people.
|
|
177
180
|
|
|
181
|
+
What the private branch carries is the **private mode** (`--private-mode`):
|
|
182
|
+
|
|
183
|
+
| Mode | `private/` | Tracked on the private branch | Default for |
|
|
184
|
+
|---|---|---|---|
|
|
185
|
+
| `nested` | its own repository | nothing private | `main-only` |
|
|
186
|
+
| `nested-branch` | its own repository, linked into every worktree | `convos/`, `revisions/`, `logs/` (run logs ignored) | a `create` with a private-branch strategy |
|
|
187
|
+
| `branch` | on the private branch | `private/` too | `adopt`; otherwise opt-in, warned |
|
|
188
|
+
|
|
189
|
+
The promoted folders never reach a public branch or a remote. The hooks refuse them on public branches, `safe-merge` leaves them out, and git-repokit-common's pre-push refuses a push that would add them. See [The vault](docs/The-Vault.md).
|
|
190
|
+
|
|
178
191
|
| `--branch-strategy` | Public branches | Checked out in folders | Flow |
|
|
179
192
|
|---|---|---|---|
|
|
180
193
|
| `main-only` | main | the project folder itself | commit on main |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-repokit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.3
|
|
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
|
|
@@ -24,6 +24,8 @@ Description-Content-Type: text/markdown
|
|
|
24
24
|
License-File: LICENSE
|
|
25
25
|
Requires-Dist: requests>=2.25.0
|
|
26
26
|
Requires-Dist: tomli>=1.1; python_version < "3.11"
|
|
27
|
+
Requires-Dist: dazzle-lib>=0.8.2
|
|
28
|
+
Requires-Dist: dazzle-loglib>=0.3.3
|
|
27
29
|
Provides-Extra: test
|
|
28
30
|
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
29
31
|
Requires-Dist: python-dotenv>=1.0.0; extra == "test"
|
|
@@ -58,10 +60,10 @@ Dynamic: license-file
|
|
|
58
60
|
A full create (the [Quick Start](#-quick-start) below) produces:
|
|
59
61
|
|
|
60
62
|
- **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
|
|
63
|
+
- **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
64
|
- **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
65
|
- **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
|
|
66
|
+
- **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
67
|
- **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
68
|
|
|
67
69
|
## 📦 Installation
|
|
@@ -173,6 +175,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
|
|
|
173
175
|
# A TypeScript npm package
|
|
174
176
|
repokit create my-lib --language js-ts --license mpl-2.0
|
|
175
177
|
|
|
178
|
+
# A Crusader Kings III mod: the mod in mod/, the repository's own files above it
|
|
179
|
+
repokit create my-mod --language paradox --license mit
|
|
180
|
+
|
|
176
181
|
# A one-file Python script, no packaging, given away to the public domain
|
|
177
182
|
repokit create my-script --with python/script --license unlicense
|
|
178
183
|
|
|
@@ -216,6 +221,16 @@ repokit has two ways to keep private work private:
|
|
|
216
221
|
- **`main-only` (the default):** the project folder is the repository, on `main`, and `private/` is its own nested git repository that the project ignores. One branch, no merging rules to learn.
|
|
217
222
|
- **The private-branch model:** your working history lives on a local-only `private` branch in `<name>/local/`, and the public branches are git worktrees in sibling folders. You move finished work across with `repokit safe-merge`, which leaves the private content behind. This is the model repokit was first built for, and it suits projects with several release stages or several people.
|
|
218
223
|
|
|
224
|
+
What the private branch carries is the **private mode** (`--private-mode`):
|
|
225
|
+
|
|
226
|
+
| Mode | `private/` | Tracked on the private branch | Default for |
|
|
227
|
+
|---|---|---|---|
|
|
228
|
+
| `nested` | its own repository | nothing private | `main-only` |
|
|
229
|
+
| `nested-branch` | its own repository, linked into every worktree | `convos/`, `revisions/`, `logs/` (run logs ignored) | a `create` with a private-branch strategy |
|
|
230
|
+
| `branch` | on the private branch | `private/` too | `adopt`; otherwise opt-in, warned |
|
|
231
|
+
|
|
232
|
+
The promoted folders never reach a public branch or a remote. The hooks refuse them on public branches, `safe-merge` leaves them out, and git-repokit-common's pre-push refuses a push that would add them. See [The vault](docs/The-Vault.md).
|
|
233
|
+
|
|
219
234
|
| `--branch-strategy` | Public branches | Checked out in folders | Flow |
|
|
220
235
|
|---|---|---|---|
|
|
221
236
|
| `main-only` | main | the project folder itself | commit on main |
|
|
@@ -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
|
|
@@ -182,6 +192,7 @@ tests/test_badges.py
|
|
|
182
192
|
tests/test_branch_strategies.py
|
|
183
193
|
tests/test_cli_examples.py
|
|
184
194
|
tests/test_cli_integration.py
|
|
195
|
+
tests/test_common_guard.py
|
|
185
196
|
tests/test_core_functionality.py
|
|
186
197
|
tests/test_deployment_scenarios.py
|
|
187
198
|
tests/test_directory_profiles.py
|
|
@@ -195,6 +206,7 @@ tests/test_guardrails.py
|
|
|
195
206
|
tests/test_hermetic.py
|
|
196
207
|
tests/test_hook_encoding.py
|
|
197
208
|
tests/test_hook_patterns.py
|
|
209
|
+
tests/test_languages_setting.py
|
|
198
210
|
tests/test_layer_action_pins.py
|
|
199
211
|
tests/test_layers.py
|
|
200
212
|
tests/test_layers_c_cpp.py
|
|
@@ -207,9 +219,12 @@ tests/test_legacy_smoke.py
|
|
|
207
219
|
tests/test_license_adopt.py
|
|
208
220
|
tests/test_license_cli.py
|
|
209
221
|
tests/test_licenses.py
|
|
222
|
+
tests/test_list_templates.py
|
|
210
223
|
tests/test_new_default.py
|
|
211
224
|
tests/test_packaging.py
|
|
225
|
+
tests/test_paradox.py
|
|
212
226
|
tests/test_private_branch_create.py
|
|
227
|
+
tests/test_private_modes.py
|
|
213
228
|
tests/test_readme_blocks.py
|
|
214
229
|
tests/test_run_tests_driver.py
|
|
215
230
|
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.3"
|
|
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"
|
|
@@ -37,6 +37,12 @@ dependencies = [
|
|
|
37
37
|
"requests>=2.25.0",
|
|
38
38
|
# tomllib is 3.11+; the layer engine reads TOML (layers.py falls back to tomli)
|
|
39
39
|
"tomli>=1.1; python_version < '3.11'",
|
|
40
|
+
# the DazzleLib stack: dazzle_lib.continuum names how exposed private work
|
|
41
|
+
# is (defaults.EXPOSURE_CONTINUUM); pure Python, no dependencies of its own
|
|
42
|
+
"dazzle-lib>=0.8.2",
|
|
43
|
+
# logging with channels, for the verbosity work ahead; explicit now
|
|
44
|
+
# (djdarcy, 2026-11-06: "there's no reason not to")
|
|
45
|
+
"dazzle-loglib>=0.3.3",
|
|
40
46
|
]
|
|
41
47
|
|
|
42
48
|
[project.urls]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""Version information for RepoKit.
|
|
2
|
+
|
|
3
|
+
Set by hand beside pyproject.toml's version (repokit-common's version sync is
|
|
4
|
+
off for this project); tests/test_packaging.py fails when the two differ, as
|
|
5
|
+
they did at 0.10.0 and 0.10.1, whose `repokit --version` printed 0.9.12.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
__version__ = "0.10.3"
|
|
9
|
+
__version_info__ = tuple(int(part) for part in __version__.split("."))
|
|
@@ -22,6 +22,33 @@ _REPOKIT_EXCLUDE_LINES = {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
def promoted_folders(repo_path: str) -> List[str]:
|
|
26
|
+
"""The folders this project tracks on its private branch (0.10.3), from
|
|
27
|
+
its record: .repokit.json's private_mode and private_exposure. Empty for
|
|
28
|
+
a nested project or one with no record."""
|
|
29
|
+
import json
|
|
30
|
+
from .defaults import BRANCH_MODES
|
|
31
|
+
try:
|
|
32
|
+
with open(os.path.join(repo_path, ".repokit.json"), encoding="utf-8") as f:
|
|
33
|
+
record = json.load(f)
|
|
34
|
+
except (OSError, ValueError):
|
|
35
|
+
return []
|
|
36
|
+
mode = record.get("private_mode")
|
|
37
|
+
if mode not in BRANCH_MODES:
|
|
38
|
+
return []
|
|
39
|
+
folders = [k.strip("/") for k in record.get("private_exposure", {}) if k != "private/"]
|
|
40
|
+
return folders + (["private"] if mode == "branch" else [])
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _without_promoted(excludes: List[str], promoted: List[str]) -> List[str]:
|
|
44
|
+
""".git/info/exclude is one file for every checkout of the repository --
|
|
45
|
+
a minimal project's branch switches and every worktree -- so an exclude
|
|
46
|
+
written for a public branch also hides the folder on the private branch,
|
|
47
|
+
where a plain `git add` must take it. The public branches keep their own
|
|
48
|
+
protection: their .gitignore and the hooks."""
|
|
49
|
+
return [p for p in excludes if p.split("/", 1)[0] not in promoted]
|
|
50
|
+
|
|
51
|
+
|
|
25
52
|
def _write_excludes(exclude_file: str, excludes: List[str]) -> None:
|
|
26
53
|
"""Write RepoKit's branch excludes, keeping every line that is not RepoKit's.
|
|
27
54
|
|
|
@@ -94,7 +121,17 @@ class BranchContext:
|
|
|
94
121
|
'test-runs/',
|
|
95
122
|
'test_runs/',
|
|
96
123
|
}))
|
|
97
|
-
|
|
124
|
+
|
|
125
|
+
# The project's own private paths: the private-patterns its
|
|
126
|
+
# git-repokit-common settings name (written from --private-dirs at
|
|
127
|
+
# create, 0.10.2). safe-merge leaves them out of a merge into a public
|
|
128
|
+
# branch too, so a clone without hooks is not left with the hook as
|
|
129
|
+
# the only guard -- and the hook and safe-merge read one list.
|
|
130
|
+
from .common_kit import read_settings
|
|
131
|
+
project_patterns = read_settings(self.repo_path).get("private-patterns", [])
|
|
132
|
+
if isinstance(project_patterns, list):
|
|
133
|
+
self.EXCLUDE_FROM_PUBLIC.update(p for p in project_patterns if isinstance(p, str) and p)
|
|
134
|
+
|
|
98
135
|
@property
|
|
99
136
|
def current_branch(self) -> str:
|
|
100
137
|
"""Get current branch name."""
|
|
@@ -315,7 +352,8 @@ class BranchContext:
|
|
|
315
352
|
"test-runs/",
|
|
316
353
|
"test_runs/",
|
|
317
354
|
]
|
|
318
|
-
|
|
355
|
+
excludes = _without_promoted(excludes, promoted_folders(self.repo_path))
|
|
356
|
+
|
|
319
357
|
_write_excludes(exclude_file, excludes)
|
|
320
358
|
|
|
321
359
|
print(f"✓ Set up branch excludes for public branch '{self.current_branch}'")
|
|
@@ -14,7 +14,7 @@ import subprocess
|
|
|
14
14
|
from typing import Dict, Any, Optional
|
|
15
15
|
|
|
16
16
|
from .config import ConfigManager
|
|
17
|
-
from .defaults import BRANCH_STRATEGIES, DEFAULT_ADOPT_STRATEGY, PRIVATE_BRANCH_STRATEGIES
|
|
17
|
+
from .defaults import BRANCH_STRATEGIES, DEFAULT_ADOPT_STRATEGY, PRIVATE_BRANCH_STRATEGIES, PRIVATE_MODES
|
|
18
18
|
from .repo_manager import RepoManager
|
|
19
19
|
from .template_engine import TemplateEngine
|
|
20
20
|
from .directory_analyzer import (
|
|
@@ -320,22 +320,24 @@ Recipe: Microservice
|
|
|
320
320
|
|
|
321
321
|
branch_group.add_argument(
|
|
322
322
|
"--private-mode",
|
|
323
|
-
choices=
|
|
323
|
+
choices=list(PRIVATE_MODES),
|
|
324
324
|
help="How private work is kept: 'nested' makes private/ its own git repository "
|
|
325
|
-
"(linked into every worktree); 'branch' keeps
|
|
326
|
-
"
|
|
325
|
+
"(linked into every worktree); 'nested-branch' keeps that, and tracks "
|
|
326
|
+
"convos/, revisions/ and logs/ on the private branch; 'branch' tracks "
|
|
327
|
+
"private/ itself on the private branch too (opt-in). Default: nested for "
|
|
328
|
+
"main-only, nested-branch for the private-branch strategies (branch for adopt)"
|
|
327
329
|
)
|
|
328
330
|
|
|
329
331
|
common_group = branch_group.add_mutually_exclusive_group()
|
|
330
332
|
common_group.add_argument(
|
|
331
333
|
"--with-common", dest="with_common", action="store_true", default=None,
|
|
332
334
|
help="Vendor git-repokit-common (hooks, version sync, tools) at scripts/repokit-common/ "
|
|
333
|
-
"and install its hooks (default for
|
|
335
|
+
"and install its hooks (the default, for every branch strategy)"
|
|
334
336
|
)
|
|
335
337
|
common_group.add_argument(
|
|
336
338
|
"--no-common", dest="with_common", action="store_false",
|
|
337
|
-
help="Do not vendor git-repokit-common; git-repokit's own pre-commit guard
|
|
338
|
-
"
|
|
339
|
+
help="Do not vendor git-repokit-common (warns); git-repokit's own basic pre-commit guard "
|
|
340
|
+
"is installed instead"
|
|
339
341
|
)
|
|
340
342
|
|
|
341
343
|
branch_group.add_argument(
|
|
@@ -1870,6 +1872,7 @@ def main() -> int:
|
|
|
1870
1872
|
if not args.language:
|
|
1871
1873
|
# the license catalogue, which create's --license help points to (0.9.11)
|
|
1872
1874
|
from . import licenses as _licenses
|
|
1875
|
+
print()
|
|
1873
1876
|
print("licenses (--license; or file=PATH, or none):")
|
|
1874
1877
|
ids = list(_licenses.known())
|
|
1875
1878
|
for i in range(0, len(ids), 8):
|
|
@@ -1877,8 +1880,10 @@ def main() -> int:
|
|
|
1877
1880
|
return 0
|
|
1878
1881
|
|
|
1879
1882
|
elif args.command == "list-templates":
|
|
1883
|
+
# list-templates has no --templates-dir of its own; reading
|
|
1884
|
+
# args.templates_dir crashed every run (since 2025, fixed in 0.10.2)
|
|
1880
1885
|
template_engine = TemplateEngine(
|
|
1881
|
-
templates_dir=args
|
|
1886
|
+
templates_dir=getattr(args, "templates_dir", None), verbose=args.verbose
|
|
1882
1887
|
)
|
|
1883
1888
|
templates = template_engine.list_templates()
|
|
1884
1889
|
print("Available templates:")
|
|
@@ -2853,6 +2858,14 @@ def main() -> int:
|
|
|
2853
2858
|
logger.error(str(e))
|
|
2854
2859
|
return 1
|
|
2855
2860
|
|
|
2861
|
+
# A private mode the strategy cannot carry (a branch mode with no
|
|
2862
|
+
# private branch) is refused before anything is written (0.10.3)
|
|
2863
|
+
from .repo_manager import private_mode_for
|
|
2864
|
+
_mode, problem = private_mode_for(config)
|
|
2865
|
+
if problem:
|
|
2866
|
+
logger.error(problem)
|
|
2867
|
+
return 1
|
|
2868
|
+
|
|
2856
2869
|
# The GitHub login, before any file is written: the files' URLs,
|
|
2857
2870
|
# CODEOWNERS and FUNDING name it (0.9.6; before, they carried the
|
|
2858
2871
|
# YOUR_GITHUB_USERNAME placeholder even with --github)
|
|
@@ -107,23 +107,91 @@ def install_hooks(repo_root: str) -> Optional[str]:
|
|
|
107
107
|
return None
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
# Strategies whose feature branches are public: they are pushed for pull
|
|
111
|
+
# requests, so private content may not be committed on them (0.10.2).
|
|
112
|
+
PUBLIC_FEATURE_STRATEGIES = {"github-flow", "gitflow"}
|
|
113
|
+
PUBLIC_FEATURE_PATTERNS = {"feature/*", "feat/*"}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def private_branches(strategy: Optional[str], private_branch: Optional[str]) -> List[str]:
|
|
117
|
+
"""The branches where private content may be committed, for a strategy.
|
|
118
|
+
|
|
119
|
+
repokit-common's defaults, minus the feature-branch patterns for the
|
|
120
|
+
strategies that push feature branches, plus the project's own private
|
|
121
|
+
branch when it has a name of its own. Both hooks use this one rule.
|
|
122
|
+
"""
|
|
123
|
+
branches = [b for b in REPOKIT_COMMON_PRIVATE_BRANCHES
|
|
124
|
+
if not (strategy in PUBLIC_FEATURE_STRATEGIES and b in PUBLIC_FEATURE_PATTERNS)]
|
|
125
|
+
if private_branch and private_branch not in branches:
|
|
126
|
+
branches.append(private_branch)
|
|
127
|
+
return branches
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def read_settings(repo_root: str) -> Dict:
|
|
131
|
+
"""The project's [tool.repokit-common] table: pyproject.toml's, else
|
|
132
|
+
.repokit-common.toml's, the order repokit-common reads them in; {} when
|
|
133
|
+
neither file has the table or a file cannot be parsed."""
|
|
134
|
+
try:
|
|
135
|
+
import tomllib
|
|
136
|
+
except ModuleNotFoundError: # Python 3.10
|
|
137
|
+
import tomli as tomllib
|
|
138
|
+
for name in ("pyproject.toml", ".repokit-common.toml"):
|
|
139
|
+
path = os.path.join(repo_root, name)
|
|
140
|
+
if not os.path.isfile(path):
|
|
141
|
+
continue
|
|
142
|
+
try:
|
|
143
|
+
with open(path, "rb") as f:
|
|
144
|
+
data = tomllib.load(f)
|
|
145
|
+
except (OSError, ValueError):
|
|
146
|
+
continue
|
|
147
|
+
table = data.get("tool", {}).get("repokit-common")
|
|
148
|
+
if isinstance(table, dict):
|
|
149
|
+
return table
|
|
150
|
+
return {}
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def private_branch_settings(private_branch: Optional[str], private_paths: List[str],
|
|
154
|
+
strategy: Optional[str] = None) -> Dict[str, List[str]]:
|
|
155
|
+
"""Settings that make repokit-common's pre-commit guard this project.
|
|
156
|
+
|
|
157
|
+
Written for every project, single-branch ones included (0.10.2), so a
|
|
158
|
+
project that later gains a private branch is already guarded.
|
|
159
|
+
private-patterns: the paths kept off public branches (literal prefixes;
|
|
160
|
+
repokit-common adds them to its built-in list).
|
|
161
|
+
private-branches: where they may be committed, from the strategy
|
|
162
|
+
(private_branches); the setting replaces repokit-common's own list.
|
|
118
163
|
"""
|
|
119
164
|
settings: Dict[str, List[str]] = {}
|
|
120
165
|
if private_paths:
|
|
121
166
|
settings["private-patterns"] = sorted(dict.fromkeys(private_paths))
|
|
122
|
-
|
|
123
|
-
settings["private-branches"] = REPOKIT_COMMON_PRIVATE_BRANCHES + [private_branch]
|
|
167
|
+
settings["private-branches"] = private_branches(strategy, private_branch)
|
|
124
168
|
return settings
|
|
125
169
|
|
|
126
170
|
|
|
171
|
+
def languages_setting(languages: List[str], layer_folders: List[str]) -> List[str]:
|
|
172
|
+
"""The `languages` value a create writes for git-repokit-common's hooks.
|
|
173
|
+
|
|
174
|
+
repokit's language names mapped to repokit-common's, in the composed
|
|
175
|
+
order (the first is primary): js-ts is "typescript" when the ts layer is
|
|
176
|
+
part of the composition, else "javascript"; python, c-cpp and paradox
|
|
177
|
+
are the same names; generic and the `any` pseudo-language add nothing.
|
|
178
|
+
Writing it, rather than leaving the hooks to detect it from the root,
|
|
179
|
+
keeps a project whose markers sit in a subfolder (a plugin in plugin/)
|
|
180
|
+
from reading as Python (design 2026-10-30__08-28-15, Addendum 2).
|
|
181
|
+
"""
|
|
182
|
+
out: List[str] = []
|
|
183
|
+
for lang in languages:
|
|
184
|
+
if lang == "js-ts":
|
|
185
|
+
name = "typescript" if any(f.endswith("js-ts/ts") for f in layer_folders) else "javascript"
|
|
186
|
+
elif lang in ("python", "c-cpp", "paradox"):
|
|
187
|
+
name = lang
|
|
188
|
+
else:
|
|
189
|
+
continue
|
|
190
|
+
if name not in out:
|
|
191
|
+
out.append(name)
|
|
192
|
+
return out
|
|
193
|
+
|
|
194
|
+
|
|
127
195
|
def _toml_list(values: List[str]) -> str:
|
|
128
196
|
return "[" + ", ".join('"' + v.replace("\\", "\\\\").replace('"', '\\"') + '"' for v in values) + "]"
|
|
129
197
|
|
|
@@ -16,6 +16,7 @@ from typing import Dict, Any, Optional, List, Union
|
|
|
16
16
|
from .directory_profiles import DirectoryProfileManager
|
|
17
17
|
from .defaults import (
|
|
18
18
|
DEFAULT_PRIVATE_DIRS,
|
|
19
|
+
DEFAULT_PRIVATE_DIR_SETS,
|
|
19
20
|
DEFAULT_SENSITIVE_FILES,
|
|
20
21
|
DEFAULT_SENSITIVE_PATTERNS,
|
|
21
22
|
BRANCH_SPECIFIC_EXCLUDES,
|
|
@@ -59,12 +60,11 @@ class ConfigManager:
|
|
|
59
60
|
# replaces them with the chosen strategy's values
|
|
60
61
|
"branches": list(BRANCH_STRATEGIES[DEFAULT_BRANCH_STRATEGY]["branches"]),
|
|
61
62
|
"worktrees": list(BRANCH_STRATEGIES[DEFAULT_BRANCH_STRATEGY]["worktrees"]),
|
|
63
|
+
# convos/, revisions/ and logs/ live in private/ since 0.10.0
|
|
64
|
+
# (vault.PRIVATE_STRUCTURE), not at the project root
|
|
62
65
|
"directories": [
|
|
63
|
-
"convos",
|
|
64
66
|
"docs",
|
|
65
|
-
"logs",
|
|
66
67
|
"private",
|
|
67
|
-
"revisions",
|
|
68
68
|
"scripts",
|
|
69
69
|
"tests",
|
|
70
70
|
],
|
|
@@ -680,7 +680,15 @@ class ConfigManager:
|
|
|
680
680
|
|
|
681
681
|
if self.verbose >= 1:
|
|
682
682
|
self.logger.info(f"Resolved directory profile '{profile}' to {len(directories)} directories")
|
|
683
|
-
|
|
683
|
+
|
|
684
|
+
elif private_set != "standard":
|
|
685
|
+
# --private-set without a profile or groups was read nowhere until
|
|
686
|
+
# 0.10.2: its folders join the protection list (added to, never
|
|
687
|
+
# replacing, any --private-dirs).
|
|
688
|
+
current = list(self.config.get("private_dirs") or DEFAULT_PRIVATE_DIRS)
|
|
689
|
+
extra = DEFAULT_PRIVATE_DIR_SETS.get(private_set, [])
|
|
690
|
+
self.config["private_dirs"] = current + [d for d in extra if d not in current]
|
|
691
|
+
|
|
684
692
|
# Ensure private_dirs is always set
|
|
685
693
|
if "private_dirs" not in self.config:
|
|
686
694
|
self.config["private_dirs"] = DEFAULT_PRIVATE_DIRS.copy()
|
|
@@ -6,7 +6,57 @@ This module provides centralized default values to prevent duplication
|
|
|
6
6
|
and ensure consistency across the codebase.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from typing import List
|
|
9
|
+
from typing import Dict, List
|
|
10
|
+
|
|
11
|
+
from dazzle_lib.continuum import Continuum
|
|
12
|
+
|
|
13
|
+
# How exposed a thing is: who can read it. Zero is "controlled" -- readable
|
|
14
|
+
# only by people the owner chose -- and the line every private folder must
|
|
15
|
+
# stay below is "shared" (a remote that could be public). Agreed with djdarcy,
|
|
16
|
+
# 2026-11-01 (git-repokit's vault: notes/...__both_the-exposure-continuum.md).
|
|
17
|
+
EXPOSURE_CONTINUUM = Continuum(
|
|
18
|
+
name="exposure",
|
|
19
|
+
ranks={"untracked": -2, "local": -1, "controlled": 0, "shared": 1, "public": 2},
|
|
20
|
+
invariant="who can read it",
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
# How private work is kept (--private-mode):
|
|
24
|
+
# nested private/ is its own git repository (main-only's default)
|
|
25
|
+
# nested-branch private/ is still its own repository, and the record
|
|
26
|
+
# folders (PROMOTED_DIRS) are tracked on the private branch
|
|
27
|
+
# (the private-branch strategies' default for a create)
|
|
28
|
+
# branch private/ itself is tracked on the private branch too
|
|
29
|
+
# (opt-in, warned; adopt's default)
|
|
30
|
+
PRIVATE_MODES = ("nested", "nested-branch", "branch")
|
|
31
|
+
VAULT_MODES = ("nested", "nested-branch") # private/ is its own repository
|
|
32
|
+
BRANCH_MODES = ("nested-branch", "branch") # the private branch tracks the record folders
|
|
33
|
+
|
|
34
|
+
# The record folders a private-branch project tracks at its root, on the
|
|
35
|
+
# private branch only: conversations, revisions ("as easy as MOVING an old
|
|
36
|
+
# file to ./revisions and it's then still git tracked"), and logs, whose run
|
|
37
|
+
# output is ignored (logs/.gitignore) so chosen logs can still be committed.
|
|
38
|
+
PROMOTED_DIRS = ("convos", "revisions", "logs")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def private_dir_names(dirs) -> List[str]:
|
|
42
|
+
"""Folder names from --private-dirs entries however they were written:
|
|
43
|
+
"convos/", "/revisions" and "logs" are convos, revisions and logs."""
|
|
44
|
+
return [d.strip("/") for d in dirs if d and d.strip("/")]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def mode_exposure(promoted) -> Dict[str, str]:
|
|
48
|
+
"""Where a project's private work sits on EXPOSURE_CONTINUUM, recorded in
|
|
49
|
+
.repokit.json: the vault, and each folder the mode promotes to the private
|
|
50
|
+
branch (RepoManager.promoted). Each level is checked against the
|
|
51
|
+
continuum: an unknown name raises, and none may reach "shared" -- the
|
|
52
|
+
line a private folder must stay below."""
|
|
53
|
+
ranks = {"private/": "local"}
|
|
54
|
+
ranks.update({f"{name}/": "local" for name in promoted if name != "private"})
|
|
55
|
+
for path, level in ranks.items():
|
|
56
|
+
if not EXPOSURE_CONTINUUM.is_colder(level, "shared"):
|
|
57
|
+
raise ValueError(f"{path} would be {level}: private work stays below shared")
|
|
58
|
+
return ranks
|
|
59
|
+
|
|
10
60
|
|
|
11
61
|
# Default private directories that should not appear in public branches
|
|
12
62
|
DEFAULT_PRIVATE_DIRS = [
|
|
@@ -180,15 +230,21 @@ def strategy_push_branches(name: str) -> List[str]:
|
|
|
180
230
|
DEFAULT_BRANCH_STRATEGIES = {name: strategy_branch_list(name) for name in BRANCH_STRATEGIES}
|
|
181
231
|
|
|
182
232
|
# Default directory profiles - centralized from directory_profiles.py
|
|
233
|
+
# The text is 0.9.12's again (0.10.3). A profile entry in the private set
|
|
234
|
+
# (logs, private, convos, revisions) goes to private_dirs, the protection
|
|
235
|
+
# list, never to the folders created -- so this text never changed a layout.
|
|
236
|
+
# Where convos/, revisions/ and logs/ are made follows the private mode:
|
|
237
|
+
# inside the vault in nested, promoted to the root on the private branch in
|
|
238
|
+
# nested-branch and branch (PROMOTED_DIRS).
|
|
183
239
|
DEFAULT_DIRECTORY_PROFILES = {
|
|
184
240
|
"minimal": ["src", "tests", "docs"],
|
|
185
241
|
"standard": [
|
|
186
|
-
"src", "tests", "docs", "scripts", "config",
|
|
242
|
+
"src", "tests", "docs", "scripts", "config",
|
|
187
243
|
"logs", "private", "convos", "revisions"
|
|
188
244
|
],
|
|
189
245
|
"complete": [
|
|
190
|
-
"src", "tests", "docs", "scripts", "config", "logs",
|
|
191
|
-
"private", "convos", "revisions", "data", "examples",
|
|
246
|
+
"src", "tests", "docs", "scripts", "config", "logs",
|
|
247
|
+
"private", "convos", "revisions", "data", "examples",
|
|
192
248
|
"tools", "resources", "assets"
|
|
193
249
|
]
|
|
194
250
|
}
|