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.
gitlab¶
GitLab API module.
This module contains the GitLabAPI
class, which is meant to be the
prime means of interacting with the GitLab API in RepoBee. The methods of
GitLabAPI are mostly high-level bulk operations.
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.
tamanager¶
Plugin for managing teaching assistants’ access to student repos.
Note
We recommend to activate this plugin persistently. See Managing 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 Managing installed plugins (the activate action) for details on activating plugins.
To summarize usage, you should use this plugin like so.
Activate the plugin persistently.
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.
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.