[M] Create a schedule #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "[M] Create a schedule" | |
on: | |
workflow_dispatch: | |
inputs: | |
preservelist: | |
description: 'Space-separated (no comma!) list of session numbers whose meetings must be preserved. Or "all" to preserve all meetings. Or "none" to ignore existing meetings.' | |
required: true | |
default: 'all' | |
type: string | |
exceptlist: | |
description: 'Only makes sense when previous value is "all"! Space-separated (no comma!) list of session numbers whose meetings are to be discarded. Or "none" to mean "preserve all meetings".' | |
required: true | |
default: 'none' | |
type: string | |
apply: | |
description: 'Whether to suggest a schedule (default) or apply it.' | |
required: true | |
default: 'suggest' | |
type: choice | |
options: | |
- suggest | |
- apply | |
seed: | |
description: 'The seed to use to shuffle the array of sessions initially.' | |
default: '' | |
type: string | |
jobs: | |
suggest-grid: | |
name: Create a schedule | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Checkout latest version of release script | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
- name: Install dependencies | |
run: npm ci | |
- name: Create directory to store result | |
run: mkdir .schedule | |
- name: Create a schedule | |
# Note the use of YAML "folded style" (through `>`) to split the | |
# command into multiple lines, and of the ternary like operator to set | |
# CLI parameters correctly. For details, see: | |
# https://yaml-multiline.info/ | |
# https://docs.github.com/en/actions/learn-github-actions/expressions#example | |
run: > | |
npx tpac-breakouts schedule | |
--preserve ${{ inputs.preservelist }} | |
--except ${{ inputs.exceptlist }} | |
${{ inputs.seed && format('--seed {0}', inputs.seed) || '' }} | |
${{ inputs.apply == 'apply' && ' --apply' || '' }} > .schedule/index.html | |
env: | |
# URL of the annual TPAC XXXX breakout project. | |
# The PROJECT_OWNER and PROJECT_NUMBER variables must be defined on | |
# the repository. PROJECT_OWNER_TYPE needs to be set to "user" if | |
# project belongs to a user. It may be omitted otherwise (or set to | |
# 'org"'). | |
PROJECT_OWNER: ${{ vars.PROJECT_OWNER_TYPE || 'organization' }}/${{ vars.PROJECT_OWNER || 'w3c' }} | |
PROJECT_NUMBER: ${{ vars.PROJECT_NUMBER }} | |
# Same valid Personal Access Token (classic version) as above, with | |
# project and public_repo scope. | |
GRAPHQL_TOKEN: ${{ secrets.GRAPHQL_TOKEN }} | |
GH_TOKEN: ${{ secrets.GRAPHQL_TOKEN }} | |
# Mapping between chair GitHub identities and W3C IDs must be stored | |
# in a variable. Structure is a JSON object with identities as keys. | |
W3CID_MAP: ${{ vars.W3CID_MAP }} | |
- name: Create ZIP artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: schedule | |
path: .schedule |