Built-in plugins

This chapter contains documentation on usage of the built-in plugins for RepoBee.

ghclassroom

Interoperability plugin for using RepoBee with repositories created with GitHub Classroom.

RepoBee’s default naming scheme is <team_name>-<assignment_name>, whereas GitHub Classroom’s naming scheme is <assignment_name>-<team_name>. This plugin changes RepoBee’s naming scheme to conform to the latter, which allows RepoBee to be used with repositories created by GitHub Classroom.

Important

Some of RepoBee’s commands (e.g. the peer review commands) depend on the student repositories being added to the corresponding student team. This is not something that GitHub Classroom typically does. In order for all of RepoBee’s commands to work as expected, you must execute the repos setup command for all assignments that you want to work with.

Important

You should not use this plugin to create repositories, and expect GitHub Classroom to recognize them as student repositories. To be very clear, Classroom does not recognize repositories created by RepoBee as student repositories.

gitea

Gitea compatibility plugin.

This plugin allows RepoBee to be used with Gitea.

Warning

This plugin is in very early stages of development. It should only be used for development purposes at this time.

gitlab

GitLab compatibility plugin.

This plugin allows RepoBee to be used with GitLab. If you want to use RepoBee with GitLab, then you should first activate this plugin persistently. See Activating and deactivating installed plugins (the activate action) for details on how to do that.

javac

Plugin that runs javac on all files in a repo.

Important

Requires javac to be installed and accessible by the script!

This plugin is mostly for demonstrational purposes, showing off some of the more advanced features of the plugin system. It, very unintelligently, finds all of the .java files in a repository and tries to compile them all at the same time. Duplicate files etc. will cause this to fail.

The point of this plugin is however mostly to demonstrate how to use the hooks, and specifically the more advanced use of the clone_parser_hook and parse_args hooks.

pairwise

A peer review plugin which attempts to assign pairwise peer reviews. Intended for students to sit and discuss their code bases with each other, as well as leave feedback. More specifically, N students are split into N/2 groups, each group member assigned to peer review the other person in the group.

If N is odd, the students are split into (N-1)/2 groups, in which one group has 3 members.

pylint

Plugin that runs pylint on all files in a repo.

Important

Requires pylint to be installed and accessible by the script!

This plugin is mostly for demonstrational purposes, showing how to make the most barebones of plugins using only a single function. It finds all .py files in a repo, and runs pylint on them, storing the results in files named <filename>.lint for any .py file named filename.

query

A plugin that adds the query command to RepoBee, allowing users to query a hook results JSON file.

squash

Plugin that squashes template repos before they are pushed to students.

Warning

Using this plugin makes it impossible to push updates to student repos using the repos update command. The fallback issue will always be opened, regardless of if the student has pushed anything or not.

studentsyml

Plugin that enables an extended, YAML-based syntax for the students file.

Warning

This plugin is in early development, and may change without notice. The plan is to integrate this functionality directly into RepoBee once we’re satisfied with how it works.

The point of this plugin is to allow one to specify student teams with more granularity. In particular, it allows one to specify names independently of the members of each team. For example, to have a team some-team with members alice and eve and another team other-team with sole member bob, the following file would do the trick:

students.yml
some-team:
    members: [alice, bob]
other-team:
    members: [eve]

Then provide it as the --students-file with this plugin active, and all is well!

tamanager

Plugin for managing teaching assistants’ access to student repos.

Note

We recommend to activate this plugin persistently. See Activating and deactivating installed plugins (the activate action) for how to do that.

Warning

This plugin is currently experimental, and may change in coming releases. We encourage you to use it, but be prepared that even a minor version update of RepoBee may come with breaking changes to the interface of this plugin.

Originally, RepoBee was designed such that all teachers and teaching assistants using it were supposed to be owners of the target organization. This has proven inconvenient at times, as the course responsible may not be comfortable giving admin powers to each and every teacher/TA. The purpose of this plugin is to allow teaching assistants and teachers (we will say just teachers from this point on) to be given read-access to the student repositories of a target organization, without any further privileges.

There are two primary pieces of functionality. First, the add-teachers action is added to the teams category (i.e. the command teams add-teachers now exists). This command must be executed at least once, and provides read-access for the specified teachers. It does so by adding specified TAs to a team called repobee-teachers, and then adding all repositories in the target organization to said team. See repobee teams add-teachers --help for specifics on usage.

The second piece of functionality is a hook that runs each time the repos setup command is executed. It adds any newly created student repos to the repobee-teachers team. For this to work, the plugin must be activated persistently. See Activating and deactivating installed plugins (the activate action) for details on activating plugins.

To summarize usage, you should use this plugin like so.

  1. Activate the plugin persistently.

  2. Run the teams add-teachers command to set everything up.

Important

If you use RepoBee in discovery mode, i.e. students create their own repos and add them to their teams, then you must re-execute teams add-teachers periodically to give teachers access to the newly created repos. It’s only when dictate mode is used, i.e. you setup repos with repos setup, that the new repos are automatically added to the repobee-teachers team.

configwizard

A plugin that adds the config-wizard command to RepoBee. It runs through a short configuration wizard that lets the user set RepoBee’s defaults.

genreviews

The default implementation of generate_review_allocations.

github

GitHub API module.

This module contains the GitHubAPI class, which is meant to be the prime means of interacting with the GitHub API in repobee. The methods of GitHubAPI are mostly high-level bulk operations.

merge_configurable_args

Hookwrapper that merges results from get_configurable_args such that there are no duplicates in the otuput.

students_file_parser

Plugin that provides the default students file parsing for RepoBee.

distmanager

Distribution manager for RepoBee when installed with RepoBee’s distribution tooling.

Danger

This plugin should only be used when using an installed version of RepoBee.

pluginmanager

Plugin manager for RepoBee when installed with RepoBee’s distribution tooling.

Danger

This plugin should only be used when using an installed version of RepoBee.