| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- name: Generate Documentation
- on:
- # push:
- # branches: [ master, main ]
- # paths:
- # - 'src/**'
- # - 'extras/**'
- # - '.github/workflows/doxygen.yml'
- # pull_request:
- # branches: [ master, main ]
- # paths:
- # - 'src/**'
- # - 'extras/**'
- # - '.github/workflows/doxygen.yml'
- workflow_dispatch:
- jobs:
- documentation:
- name: Generate Doxygen Documentation
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Install Doxygen
- run: |
- sudo apt-get update
- sudo apt-get install -y doxygen graphviz
- - name: Verify Doxygen installation
- run: |
- doxygen --version
- dot -V
- - name: Create Doxyfile configuration
- run: |
- cat > Doxyfile << 'EOF'
- # Doxyfile for TaskScheduler Library
- # Project information
- PROJECT_NAME = "TaskScheduler"
- PROJECT_NUMBER = "v4.0.0"
- PROJECT_BRIEF = "Cooperative multitasking for Arduino and ESP platforms"
- PROJECT_LOGO =
- # Output configuration
- OUTPUT_DIRECTORY = ./doc
- CREATE_SUBDIRS = YES
- ALLOW_UNICODE_NAMES = NO
- # Build configuration
- EXTRACT_ALL = YES
- EXTRACT_PRIVATE = YES
- EXTRACT_PRIV_VIRTUAL = YES
- EXTRACT_PACKAGE = YES
- EXTRACT_STATIC = YES
- EXTRACT_LOCAL_CLASSES = YES
- EXTRACT_LOCAL_METHODS = YES
- EXTRACT_ANON_NSPACES = YES
- # Input configuration
- INPUT = ./src
- INPUT_ENCODING = UTF-8
- FILE_PATTERNS = *.h *.hpp *.cpp *.c
- RECURSIVE = YES
- EXCLUDE =
- EXCLUDE_SYMLINKS = NO
- EXCLUDE_PATTERNS =
- EXCLUDE_SYMBOLS =
- # Source browsing
- SOURCE_BROWSER = YES
- INLINE_SOURCES = NO
- STRIP_CODE_COMMENTS = YES
- REFERENCED_BY_RELATION = YES
- REFERENCES_RELATION = YES
- REFERENCES_LINK_SOURCE = YES
- SOURCE_TOOLTIPS = YES
- USE_HTAGS = NO
- VERBATIM_HEADERS = YES
- # Alphabetical class index
- ALPHABETICAL_INDEX = YES
- COLS_IN_ALPHA_INDEX = 5
- IGNORE_PREFIX =
- # HTML output
- GENERATE_HTML = YES
- HTML_OUTPUT = html
- HTML_FILE_EXTENSION = .html
- HTML_HEADER =
- HTML_FOOTER =
- HTML_STYLESHEET =
- HTML_EXTRA_STYLESHEET =
- HTML_EXTRA_FILES =
- HTML_COLORSTYLE_HUE = 220
- HTML_COLORSTYLE_SAT = 100
- HTML_COLORSTYLE_GAMMA = 80
- HTML_TIMESTAMP = YES
- HTML_DYNAMIC_MENUS = YES
- HTML_DYNAMIC_SECTIONS = NO
- HTML_INDEX_NUM_ENTRIES = 100
- GENERATE_DOCSET = NO
- GENERATE_HTMLHELP = NO
- GENERATE_QHP = NO
- GENERATE_ECLIPSEHELP = NO
- DISABLE_INDEX = NO
- GENERATE_TREEVIEW = YES
- ENUM_VALUES_PER_LINE = 4
- TREEVIEW_WIDTH = 250
- EXT_LINKS_IN_WINDOW = NO
- FORMULA_FONTSIZE = 10
- FORMULA_TRANSPARENT = YES
- USE_MATHJAX = NO
- SEARCHENGINE = YES
- SERVER_BASED_SEARCH = NO
- EXTERNAL_SEARCH = NO
- SEARCHENGINE_URL =
- SEARCHDATA_FILE = searchdata.xml
- EXTERNAL_SEARCH_ID =
- EXTRA_SEARCH_MAPPINGS =
- # LaTeX output (disabled)
- GENERATE_LATEX = NO
- # RTF output (disabled)
- GENERATE_RTF = NO
- # Man page output (disabled)
- GENERATE_MAN = NO
- # XML output (disabled)
- GENERATE_XML = NO
- # DOCBOOK output (disabled)
- GENERATE_DOCBOOK = NO
- # AutoGen output (disabled)
- GENERATE_AUTOGEN_DEF = NO
- # Perl module output (disabled)
- GENERATE_PERLMOD = NO
- # Preprocessor configuration
- ENABLE_PREPROCESSING = YES
- MACRO_EXPANSION = YES
- EXPAND_ONLY_PREDEF = NO
- SEARCH_INCLUDES = YES
- INCLUDE_PATH = ./src
- INCLUDE_FILE_PATTERNS =
- PREDEFINED = ARDUINO=300 \
- __TASK_INLINE=inline \
- _TASK_SLEEP_ON_IDLE_RUN \
- _TASK_STATUS_REQUEST \
- _TASK_WDT_IDS \
- _TASK_LTS_POINTER \
- _TASK_PRIORITY \
- _TASK_WDT_IDS \
- _TASK_TIMECRITICAL \
- _TASK_SCHEDULING_OPTIONS \
- _TASK_TIMEOUT \
- _TASK_OO_CALLBACKS \
- _TASK_DEBUG \
- _TASK_SELF_DESTRUCT \
- _TASK_STD_FUNCTION \
- _TASK_THREAD_SAFE \
- _TASK_EXPOSE_CHAIN
- EXPAND_AS_DEFINED =
- SKIP_FUNCTION_MACROS = YES
- # External references
- TAGFILES =
- GENERATE_TAGFILE =
- ALLEXTERNALS = NO
- EXTERNAL_GROUPS = YES
- EXTERNAL_PAGES = YES
- # Dot tool configuration
- CLASS_DIAGRAMS = YES
- MSCGEN_PATH =
- DIA_PATH =
- HIDE_UNDOC_RELATIONS = YES
- HAVE_DOT = YES
- DOT_NUM_THREADS = 0
- DOT_FONTNAME = Helvetica
- DOT_FONTSIZE = 10
- DOT_FONTPATH =
- CLASS_GRAPH = YES
- COLLABORATION_GRAPH = YES
- GROUP_GRAPHS = YES
- UML_LOOK = NO
- UML_LIMIT_NUM_FIELDS = 10
- TEMPLATE_RELATIONS = NO
- INCLUDE_GRAPH = YES
- INCLUDED_BY_GRAPH = YES
- CALL_GRAPH = NO
- CALLER_GRAPH = NO
- GRAPHICAL_HIERARCHY = YES
- DIRECTORY_GRAPH = YES
- DOT_IMAGE_FORMAT = png
- INTERACTIVE_SVG = NO
- DOT_PATH =
- DOTFILE_DIRS =
- MSCFILE_DIRS =
- DIAFILE_DIRS =
- PLANTUML_JAR_PATH =
- PLANTUML_CFG_FILE =
- PLANTUML_INCLUDE_PATH =
- DOT_GRAPH_MAX_NODES = 50
- MAX_DOT_GRAPH_DEPTH = 0
- DOT_TRANSPARENT = NO
- DOT_MULTI_TARGETS = NO
- GENERATE_LEGEND = YES
- DOT_CLEANUP = YES
- # Configuration options related to warning and progress messages
- QUIET = NO
- WARNINGS = YES
- WARN_IF_UNDOCUMENTED = YES
- WARN_IF_DOC_ERROR = YES
- WARN_NO_PARAMDOC = NO
- WARN_AS_ERROR = NO
- WARN_FORMAT = "$file:$line: $text"
- WARN_LOGFILE =
- EOF
- - name: Run Doxygen
- run: |
- echo "=== Running Doxygen Documentation Generation ==="
- doxygen Doxyfile
- - name: Add .nojekyll file
- run: touch ./doc/html/.nojekyll
-
- - name: Verify documentation generation
- run: |
- echo "=== Verifying Generated Documentation ==="
- if [ -d "./doc/html" ]; then
- echo "✓ HTML documentation generated successfully"
- echo "Documentation files:"
- ls -la ./doc/html/ | head -10
- echo "..."
- echo "Total files: $(find ./doc/html -type f | wc -l)"
- # Check for main files
- if [ -f "./doc/html/index.html" ]; then
- echo "✓ Main index.html found"
- else
- echo "✗ Main index.html not found"
- exit 1
- fi
- if [ -f "./doc/html/annotated.html" ]; then
- echo "✓ Class list found"
- else
- echo "✗ Class list not found"
- fi
- # Check documentation size
- doc_size=$(du -sh ./doc/html | cut -f1)
- echo "Documentation size: $doc_size"
- else
- echo "✗ Documentation generation failed - no output directory found"
- exit 1
- fi
- - name: Upload documentation artifacts
- uses: actions/upload-artifact@v4
- with:
- name: doxygen-documentation
- path: ./doc/
- retention-days: 30
- - name: Deploy to GitHub Pages
- if: github.ref == 'refs/heads/master'
- uses: peaceiris/actions-gh-pages@v3
- with:
- deploy_key: ${{ secrets.DEPLOY_KEY }}
- external_repository: arkhipenko/arkhipenko.github.io
- publish_dir: ./doc/html
- destination_dir: ts
- publish_branch: gh-pages
- user_name: 'github-actions[bot]'
- user_email: 'github-actions[bot]@users.noreply.github.com'
- commit_message: 'Update TaskScheduler documentation'
- - name: Create documentation summary
- run: |
- echo "=== Documentation Generation Summary ===" >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- echo "**Documentation successfully generated!**" >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- echo "- 📁 Output directory: \`./doc/html/\`" >> $GITHUB_STEP_SUMMARY
- echo "- 📄 Main entry point: \`./doc/html/index.html\`" >> $GITHUB_STEP_SUMMARY
- echo "- 📊 Total files: $(find ./doc/html -type f | wc -l)" >> $GITHUB_STEP_SUMMARY
- echo "- 💾 Documentation size: $(du -sh ./doc/html | cut -f1)" >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- if [ "${{ github.event_name }}" = "push" ] && [ "${{ github.ref }}" = "refs/heads/master" ]; then
- echo "- 🚀 **Deployed to:** https://arkhipenko.github.io/TaskScheduler/" >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- fi
- echo "**Key Documentation Pages:**" >> $GITHUB_STEP_SUMMARY
- echo "- 📋 [Class Index](./doc/html/annotated.html)" >> $GITHUB_STEP_SUMMARY
- echo "- 📁 [File Index](./doc/html/files.html)" >> $GITHUB_STEP_SUMMARY
- echo "- 🔍 [Search](./doc/html/search.html)" >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- echo "*Documentation artifacts have been uploaded and are available for download.*" >> $GITHUB_STEP_SUMMARY
|