2024 11 20 Getting Things Workabl
dev mode (dave)
I'm want to add functionality so that I can work on the _combined files manually for dev purposes. A couple of thoughts:
a global tidyBeforeBuild option: if false, don't tidy first
But that still wouldn't prevent copying. Which ultimately you might want to control "per-inclusion", but for now maybe we'll just start with a global suppressInclusionCopying option. We might want move this from prepareInclusions back into multisource.ts:
// Copy included paths into the combined directory
await copyIncludedPaths(localRepoPath, combinedDir, options);
Don't change any code yet, just let me know what you think.
dev mode (chatgpt)
Your proposal to add tidyBeforeBuild and suppressInclusionCopying as global options makes sense and aligns with making the system more flexible for development purposes. Here’s a breakdown of the thoughts and potential implications:
Global tidyBeforeBuild Option
- Purpose: Controls whether the
_combineddirectory is cleaned before the build starts. - Use Case:
- For development, you might want to retain changes made manually to
_combined. - For production, this ensures a clean slate before copying files.
- For development, you might want to retain changes made manually to
- Default Behavior:
- It makes sense to default this to
truefor production-like behavior.
- It makes sense to default this to
Implications:
- If
tidyBeforeBuildisfalse, you should skiptidyCombinedDirentirely, ensuring the manual edits in_combinedremain intact. - Logging should indicate whether tidying is skipped for better clarity during debugging.
Global suppressInclusionCopying Option
- Purpose: Prevents the copying of files from the source repository to
_combined. - Use Case:
- For development, you might want to use
_combinedas a working directory without overwriting files. - Could later evolve into a per-inclusion option for more granular control.
- For development, you might want to use
- Default Behavior:
- Default this to
false, as copying is expected in most cases.
- Default this to
Implications:
- If
suppressInclusionCopyingistrue, you can skip the call tocopyIncludedPaths. - Moves the copying logic from
prepareInclusionstomultisource:prepareInclusionsremains focused on initializing or updating repositories.multisourceorchestrates tidying and copying, making it easier to control suppression globally.
Moving copyIncludedPaths Back to multisource
This move makes sense because:
- Centralized Control:
multisourcealready handles global options like tidying.- Adding suppression options fits naturally in this layer.
- Separation of Concerns:
prepareInclusionsis responsible for repository setup, not content copying.- Copying behavior aligns more with the overall orchestration layer.
Proposed Flow with Options
1. If `tidyBeforeBuild` is true:
- Tidy `_combined`.
- Preserve `_src-repos` if needed.
2. For each inclusion:
- If `suppressInclusionCopying` is false:
- Copy the included paths into `_combined`.
3. Repository preparation (always):
- Initialize or update repositories with `prepareInclusions`.
Future Per-Inclusion Suppression
Introducing a per-inclusion option for copying is a logical next step:
- Example:
inclusions: [ { url: "https://github.com/example/repo.git", options: { suppressCopying: true }, }, ]; - Granularity:
- Developers could selectively suppress copying for specific repositories.
- Allows flexibility for working on only certain parts of
_combined.
Recommendations
- Implement
tidyBeforeBuildandsuppressInclusionCopyingas global options. - Move copying logic back to
multisource. - Log the behavior for both options:
- Indicate whether
_combinedis tidied. - Indicate whether copying is skipped.
- Indicate whether
- Plan for Per-Inclusion Copying Control:
- This can be added later once the global options are tested and stable.
Would you like assistance implementing or refining this plan further?
Backlinks