This program provides a command-line interface for Canvas. The command
is canvaslms
and it has several subcommands in the same style as Git.
canvaslms
provides output in a format useful for POSIX tools, this
makes automating tasks much easier.
Start by login to your Canvas server
canvaslms login
Let's consider how to grade students logging into the student-shell SSH server. We store the list of students' Canvas and KTH IDs in a file.
canvaslms users -c DD1301 -s | cut -f 1,2 > students.csv
Then we check who has logged into student-shell.
ssh student-shell.sys.kth.se last | cut -f 1 -d " " | sort | uniq \
> logged-in.csv
Finally, we check who of our students logged in.
for s in $(cut -f 2 students.csv); do
grep $s logged-in.csv && \
Finally, we can set their grade to P and add the comment "Well done!" in
Canvas. We set the grades for the two assignments whose titles match the
regular expression (Preparing the terminal|The terminal)
.
canvaslms grade -c DD1301 -a "(Preparing the terminal|The terminal)" \
-u $(grep $s students.csv | cut -f 1) \
-g P -m "Well done!"
done
Just install the PyPI package:
python3 -m pip install canvaslms
Some subcommands use pandoc
, so you will likely have to install
pandoc on your system manually.
This project uses literate programming with noweb.
The source code is written in .nw
files which combine documentation and code.
This repository includes GitHub Copilot configuration files:
.github/copilot-instructions.md
: Project context and coding guidelines.copilotignore
: Files to exclude from Copilot context
The configuration helps Copilot understand the literate programming approach, Canvas LMS domain, and project-specific patterns.