Skip to content

Latest commit

 

History

History
263 lines (205 loc) · 6.46 KB

File metadata and controls

263 lines (205 loc) · 6.46 KB

LiaScript Exporter GitHub Action

Export LiaScript courses to SCORM, PDF, Web, and other formats for LMS deployment and distribution directly from your GitHub repository.

Quick Start

Add this action to your workflow:

- name: Export course to SCORM
  id: export
  uses: LiaScript/LiaScript-Exporter@master
  with:
    input-file: 'README.md'
    format: 'scorm1.2'
    output-name: 'my-course'

Inputs

Core Inputs (Required)

Input Description Example
input-file Path to README.md or project.yml file course1/README.md
format Export format scorm1.2, pdf, web, ims, xapi, rdf, json

Core Inputs (Optional)

Input Description Default
output-name Base name for output files Derived from input file
course-path Directory containing the course Directory of input-file

SCORM Settings

Input Description Default
scorm-organization Organization title -
scorm-mastery-score Mastery score (0-100) 0
scorm-typical-duration Duration (PT0H5M0S format) PT0H5M0S
scorm-iframe Use iframe for SCORM false
scorm-embed Embed Markdown in JS false
scorm-always-active Keep SCORM always active false

PDF Settings

Input Description Default
pdf-theme LiaScript theme default
pdf-format Paper format A4
pdf-scale Webpage rendering scale 1
pdf-landscape Landscape orientation false
pdf-print-background Print background graphics false
pdf-stylesheet Custom CSS file path -

Web Settings

Input Description Default
web-zip Create zip archive true
web-indexeddb Enable IndexedDB storage false
web-iframe Use iframe version false

IMS Settings

Input Description Default
ims-indexeddb Use IndexedDB for persistence false

xAPI Settings

Input Description Default
xapi-endpoint LRS endpoint URL -
xapi-auth Authentication string -
xapi-actor xAPI actor JSON -
xapi-course-id Course identifier -
xapi-course-title Course title -
xapi-debug Enable debug logging false
xapi-zip Package as zip false

RDF Settings

Input Description Default
rdf-format Output format (json-ld, n-quads) json-ld
rdf-url External URL reference -
rdf-type Schema.org type Course
rdf-license License URL -
rdf-educational-level Educational level -

General Settings

Input Description Default
style Additional CSS styling -
responsive-voice-key Text-to-speech API key -

Outputs

Output Description
output-file Path to the generated file
file-size Size of generated file in bytes
format Format that was generated
success Whether export succeeded (true/false)

Usage Examples

Single Course Export

name: Export Course
on: [push]

jobs:
  export:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Export to SCORM
      id: export
      uses: LiaScript/LiaScript-Exporter@master
      with:
        input-file: 'README.md'
        format: 'scorm1.2'
        output-name: 'my-course'
        scorm-organization: 'My Organization'
        scorm-mastery-score: '80'
    
    - name: Upload SCORM package
      uses: actions/upload-artifact@v4
      with:
        name: scorm-package
        path: ${{ steps.export.outputs.output-file }}

Multi-Course Matrix Build

name: Export All Courses
on: [push]

jobs:
  export:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        course: ['course1', 'course2', 'course3']
        format: ['scorm1.2', 'pdf', 'web']
    
    steps:
    - uses: actions/checkout@v4
    
    - name: Export ${{ matrix.course }} to ${{ matrix.format }}
      id: export
      uses: LiaScript/LiaScript-Exporter@master
      with:
        input-file: '${{ matrix.course }}/README.md'
        format: '${{ matrix.format }}'
        output-name: '${{ matrix.course }}-${{ matrix.format }}'
    
    - name: Upload artifacts
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.course }}-${{ matrix.format }}
        path: ${{ steps.export.outputs.output-file }}

Release Automation

name: Release
on:
  push:
    tags: ['v*']

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Export to SCORM
      id: export-scorm
      uses: LiaScript/LiaScript-Exporter@master
      with:
        input-file: 'README.md'
        format: 'scorm1.2'
        output-name: 'course-${{ github.ref_name }}'
    
    - name: Export to PDF
      id: export-pdf
      uses: LiaScript/LiaScript-Exporter@master
      with:
        input-file: 'README.md'
        format: 'pdf'
        output-name: 'course-${{ github.ref_name }}'
    
    - name: Create Release
      uses: softprops/action-gh-release@v1
      with:
        files: |
          ${{ steps.export-scorm.outputs.output-file }}
          ${{ steps.export-pdf.outputs.output-file }}

Development

Setup

cd action
npm install

Build

npm run build

Test

npm run test

Troubleshooting

Common Issues

PDF export hangs or fails

  • PDF exports use Puppeteer (headless Chrome) which requires sufficient memory and may take several minutes for complex courses
  • Ensure the course content renders properly in a regular browser first

Output file not found

  • Check that the output-name parameter matches the expected file pattern
  • Verify the input file path is correct relative to the repository root
  • Review the action logs for detailed file search information

Debug Information

The action provides detailed logging including:

  • Input validation and parsing
  • File path resolution
  • CLI command construction
  • Real-time export progress
  • Output file detection

Enable debug logging in your workflow:

- name: Export with debug
  uses: LiaScript/LiaScript-Exporter@master
  with:
    input-file: 'README.md'
    format: 'scorm1.2'
  env:
    ACTIONS_STEP_DEBUG: true