feat: Add `symlink-map` action
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Start with the repository's GitHub Action entrypoint and review the links and mapping_file inputs, including the published schema at https://schemas.arusty.dev/gha/symlink-map/v1.schema.json. Compare behavior with the sparse-checkout-aggregate outputs and verify that validation, relative symlinks, parent-directory creation, and clean mode meet the specification.
Written by the indexing model from the issue text.
Description
Summary
Create a reusable GitHub Action that creates symlinks from an explicit list or mapping file.
Use Case
After sparse-checkout-aggregate clones documentation sources, create symlinks to make them accessible to the build tool (e.g., mdbook).
Specification
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
links |
No* | — | JSON array of { source, target } |
mapping_file |
No* | — | Path to mapping file (must match schema) |
source_prefix |
No | — | Prefix for source paths (with mapping_file) |
target_prefix |
No | — | Prefix for target paths (with mapping_file) |
clean |
No | false |
Remove existing symlinks in target dirs first |
*One of links or mapping_file required.
Example Usage
# From job outputs (preferred)
- uses: arustydev/gha/symlink-map@v1
with:
links: ${{ steps.aggregate.outputs.symlinks }}
# OR from mapping file
- uses: arustydev/gha/symlink-map@v1
with:
mapping_file: sources.yml
source_prefix: .sources
target_prefix: books
Links Format
[
{ "source": ".sources/ai/docs/src", "target": "books/ai" },
{ "source": ".sources/just/docs/src", "target": "books/just" }
]
Implementation Notes
- Validate source paths exist before creating symlinks
- Create parent directories for targets if needed
- Use relative symlinks where possible
- Support
cleanmode to remove stale symlinks - Validate against schema when using mapping_file
Schema
Schema will be published at https://schemas.arusty.dev/gha/symlink-map/v1.schema.json
See: arustydev/schemas for schema definition.
Related
- Part of docs aggregation workflow extraction
- Consumes outputs from
sparse-checkout-aggregateaction - Schema tracked in arustydev/schemas
- Dominant language
- Shell
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aRustyDev/gh
-
dependencies github-actions
Difficulty 1/5 Under an hour Newbie friendliness 10/100
-
dependencies github-actions
Difficulty 1/5 Under an hour Newbie friendliness 15/100
-
dependencies github-actions
Difficulty 1/5 Under an hour Newbie friendliness 50/100
-
dependencies github-actions
Difficulty 2/5 1-3 hours Newbie friendliness 20/100
-
dependencies github-actions
Difficulty 2/5 1-3 hours Newbie friendliness 10/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
huggingface/Repo2RLEnv#163 · 1 comment ·
-
setup tools wizard offers no GitHub auth path, and setup summary doesn't recognize `gh` CLI auth Openarea/auth comp/cli P3 tool/skills type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
NousResearch/hermes-agent#121131 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
bradcypert/plum#53 ·
-
tmp_watchgod.sh exceeds the 1000-line cap; the Zone A guard helpers are a clean extraction seam Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
WingedGuardian/GENesis-AGI#2301 ·