{"id":50949175,"url":"https://github.com/codebruinc/ics-validator-action","last_synced_at":"2026-06-17T23:32:33.351Z","repository":{"id":313808022,"uuid":"1052791114","full_name":"codebruinc/ics-validator-action","owner":"codebruinc","description":"GitHub Action to validate ICS/iCalendar files for format compliance and common issues","archived":false,"fork":false,"pushed_at":"2025-09-08T14:52:42.000Z","size":527,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-08T16:42:42.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codebruinc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-08T14:51:51.000Z","updated_at":"2025-09-08T14:52:17.000Z","dependencies_parsed_at":"2025-09-08T16:42:44.999Z","dependency_job_id":"228460a9-0a79-43dc-aa7f-a2866ee5f5f8","html_url":"https://github.com/codebruinc/ics-validator-action","commit_stats":null,"previous_names":["codebruinc/ics-validator-action"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/codebruinc/ics-validator-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebruinc%2Fics-validator-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebruinc%2Fics-validator-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebruinc%2Fics-validator-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebruinc%2Fics-validator-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codebruinc","download_url":"https://codeload.github.com/codebruinc/ics-validator-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebruinc%2Fics-validator-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34470323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-17T23:32:32.900Z","updated_at":"2026-06-17T23:32:33.341Z","avatar_url":"https://github.com/codebruinc.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ICS Calendar Validator Action\n\n[![GitHub Marketplace](https://img.shields.io/badge/Marketplace-ICS%20Calendar%20Validator-blue?logo=github)](https://github.com/marketplace/actions/ics-calendar-validator)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA GitHub Action that validates ICS/iCalendar files for format compliance and common issues. Perfect for CI/CD pipelines that work with calendar data.\n\n## Features\n\n- ✅ Validates ICS file structure and format\n- ✅ Checks for required calendar properties (VERSION, PRODID)\n- ✅ Validates event properties (UID, DTSTAMP, DTSTART)\n- ✅ Detects common issues (missing properties, invalid dates, duplicate UIDs)\n- ✅ Supports glob patterns for validating multiple files\n- ✅ Detailed error and warning reporting\n- ✅ Configurable failure conditions\n\n## Usage\n\n### Basic Usage\n\n```yaml\nname: Validate Calendar Files\non: [push, pull_request]\n\njobs:\n  validate:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      \n      - name: Validate ICS files\n        uses: codebruinc/ics-validator-action@v1\n        with:\n          files: '**/*.ics'\n```\n\n### Advanced Usage\n\n```yaml\nname: Calendar Validation\non: \n  pull_request:\n    paths:\n      - '**.ics'\n      - 'calendars/**'\n\njobs:\n  validate-calendars:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      \n      - name: Validate calendar files\n        uses: codebruinc/ics-validator-action@v1\n        with:\n          files: 'calendars/**/*.ics'\n          fail-on-error: true\n          fail-on-warning: false\n      \n      - name: Upload validation report\n        if: always()\n        uses: actions/upload-artifact@v3\n        with:\n          name: validation-report\n          path: validation-report.json\n```\n\n### Validate Specific Directory\n\n```yaml\n- name: Validate event calendars\n  uses: codebruinc/ics-validator-action@v1\n  with:\n    files: 'events/*.ics'\n    fail-on-error: true\n```\n\n### Multiple Pattern Validation\n\n```yaml\n- name: Validate all calendar files\n  uses: codebruinc/ics-validator-action@v1\n  with:\n    files: |\n      events/*.ics\n      schedules/*.ics\n      exports/*.ical\n```\n\n## Inputs\n\n| Input | Description | Required | Default |\n|-------|-------------|----------|---------|\n| `files` | Path to ICS files to validate (supports glob patterns) | No | `**/*.ics` |\n| `fail-on-error` | Fail the action if validation errors are found | No | `true` |\n| `fail-on-warning` | Fail the action if validation warnings are found | No | `false` |\n\n## Outputs\n\n| Output | Description |\n|--------|-------------|\n| `errors` | Number of validation errors found |\n| `warnings` | Number of validation warnings found |\n| `report` | Detailed validation report in JSON format |\n\n### Using Outputs\n\n```yaml\n- name: Validate calendars\n  id: validate\n  uses: codebruinc/ics-validator-action@v1\n  with:\n    files: '**/*.ics'\n\n- name: Check results\n  run: |\n    echo \"Errors: ${{ steps.validate.outputs.errors }}\"\n    echo \"Warnings: ${{ steps.validate.outputs.warnings }}\"\n    \n- name: Comment on PR\n  if: github.event_name == 'pull_request' \u0026\u0026 steps.validate.outputs.errors \u003e 0\n  uses: actions/github-script@v6\n  with:\n    script: |\n      github.rest.issues.createComment({\n        issue_number: context.issue.number,\n        owner: context.repo.owner,\n        repo: context.repo.repo,\n        body: '❌ Calendar validation failed with ${{ steps.validate.outputs.errors }} errors'\n      })\n```\n\n## Validation Rules\n\n### Required Properties\n- `BEGIN:VCALENDAR` and `END:VCALENDAR` declarations\n- `VERSION` property (should be 2.0)\n- `UID` for each event\n- `DTSTAMP` for each event\n- `DTSTART` for each event\n\n### Recommended Properties\n- `PRODID` for calendar identification\n- `SUMMARY` for event titles\n- Either `DTEND` or `DURATION` for event timing\n\n### Common Issues Detected\n- Missing required properties\n- Invalid date formats\n- End date before start date\n- Duplicate UIDs\n- Both DTEND and DURATION specified\n- Missing timezone definitions\n\n## Example Workflow\n\nHere's a complete example workflow that validates calendar files on every push:\n\n```yaml\nname: CI\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  validate-ics:\n    runs-on: ubuntu-latest\n    \n    steps:\n    - uses: actions/checkout@v4\n    \n    - name: Validate ICS files\n      id: ics-validator\n      uses: codebruinc/ics-validator-action@v1\n      with:\n        files: '**/*.ics'\n        fail-on-error: true\n        fail-on-warning: false\n    \n    - name: Display validation results\n      if: always()\n      run: |\n        echo \"### ICS Validation Results\" \u003e\u003e $GITHUB_STEP_SUMMARY\n        echo \"- **Files validated**: $(find . -name \"*.ics\" | wc -l)\" \u003e\u003e $GITHUB_STEP_SUMMARY\n        echo \"- **Errors**: ${{ steps.ics-validator.outputs.errors }}\" \u003e\u003e $GITHUB_STEP_SUMMARY\n        echo \"- **Warnings**: ${{ steps.ics-validator.outputs.warnings }}\" \u003e\u003e $GITHUB_STEP_SUMMARY\n```\n\n## Integration with CalendarMap\n\nThis action works great with [CalendarMap](https://calendarmap.app) for validating ICS files generated from CSV data:\n\n```yaml\n- name: Convert CSV to ICS\n  run: |\n    # Use CalendarMap CLI or API to convert CSV to ICS\n    npx @calendarmap/cli convert events.csv -o calendar.ics\n    \n- name: Validate generated ICS\n  uses: codebruinc/ics-validator-action@v1\n  with:\n    files: 'calendar.ics'\n```\n\n## Development\n\nTo contribute to this action:\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Run tests: `npm test`\n5. Build the action: `npm run build`\n6. Commit changes (including `dist/` folder)\n7. Create a pull request\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Support\n\n- 🐛 [Report issues](https://github.com/codebruinc/ics-validator-action/issues)\n- 💡 [Request features](https://github.com/codebruinc/ics-validator-action/issues/new)\n- 📚 [View documentation](https://github.com/codebruinc/ics-validator-action#readme)\n\n## Credits\n\nCreated by [CalendarMap](https://calendarmap.app) - The easy way to convert CSV to calendar format.\n\n---\n\n**Note**: This action uses [ical.js](https://github.com/mozilla-comm/ical.js) for parsing and validating ICS files.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodebruinc%2Fics-validator-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodebruinc%2Fics-validator-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodebruinc%2Fics-validator-action/lists"}