markitect-main/examples/image-assets/images/project_icon.png

5 lines
458 B
Text
Raw Normal View History

feat: implement comprehensive asset shipping for md-render command Add automatic asset copying when rendering markdown to different output directories with intelligent defaults and full user control. Key Features: - Environment variable support: MARKITECT_OUTPUT_DIR sets default output directory - Smart defaults: auto-ship assets for directory output, disabled for file output - CLI control flags: --ship-assets and --no-ship-assets for explicit control - Timestamp-based copying: only copies when source newer than destination - Path preservation: maintains relative directory structure in output - Graceful error handling: missing assets logged as warnings, not failures Technical Implementation: - Enhanced asset discovery in markitect/assets/discovery.py with discover_assets_from_markdown() - Added environment variable priority: CLI --output > MARKITECT_OUTPUT_DIR > input directory - Comprehensive asset shipping logic with _ship_assets() function - Directory vs file output detection for intelligent default behavior Examples and Testing: - Added image-assets example directory with 6 sample images and comprehensive README - Created comprehensive TDD test suite with 10 tests covering all functionality - Tests validate environment variables, CLI flags, asset discovery, shipping logic, timestamp handling, missing assets, path preservation, and default behaviors Usage: markitect md-render file.md -o /output/dir/ # Auto-ships assets markitect md-render file.md --no-ship-assets # Suppresses shipping MARKITECT_OUTPUT_DIR=/docs markitect md-render file.md # Uses env var 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 23:12:44 +01:00
<EFBFBD>PNG

IHDR@@% <0B><><01>IDATx<54><78><EFBFBD>MKA<1C><><EFBFBD>l<EFBFBD>E<10>bA<17>C<EFBFBD>!b$<24>A<EFBFBD>s<17>z<15><1B><><EFBFBD><EFBFBD>BQH<51>%<25>R<EFBFBD><1E>.<2E>=<3D>#)<29><> <20>[Mo<1B><><EFBFBD><EFBFBD><1D>n<7F><6E><EFBFBD>|<7C>U<EFBFBD>Q!<21><><EFBFBD> <0C> ԋ<03>q5<0E><><EFBFBD>tB<74><42>F<EFBFBD><46>/<2F>\<5C><>b<EFBFBD><62>@<40>Na<4E>1<EFBFBD><31>nvh<76><68><EFBFBD><EFBFBD>+<2B><01>8<EFBFBD>P<>j@<40><03>q5<0E><><01>j<<13>W:<3A><>N<EFBFBD>3<><33><EFBFBD><EFBFBD><EFBFBD>In<49><6E><EFBFBD>H<EFBFBD><1D><><EFBFBD> <00><><EFBFBD>Ñ3<><33><EFBFBD>t<74>WT`z<><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><34>x<EFBFBD><78>0=<06>X*K,D<>W6R
<EFBFBD><EFBFBD><EFBFBD>龹~p<>v)<1F>F}@x<>g<1D>X<><0F><>O<EFBFBD><4F>6n<04>]<5D><><00>N<EFBFBD>B<EFBFBD>^<5E><>ۨ<0F>vz<76>!^ʟ:<3A><><EFBFBD><EFBFBD>m\<5C>K<><4B>2<EFBFBD><32><EFBFBD><EFBFBD>o?\
O<>w<><77><EFBFBD><EFBFBD><00><>W<EFBFBD><57><EFBFBD>tS퍶<53><ED8DB6>4P<>j@<40><03>q5<0E><>Դ<0F><>/T<>_MB<4D>p|<7C>ԅ<EFBFBD>+<2B><01>8<EFBFBD><38><EFBFBD>?<1B>R<EFBFBD><52><EFBFBD><EFBFBD>IEND<4E>B`<60>