sagoin

release version deps license ci

sagoin is a command-line submission tool for the UMD CS Submit Server. This project is largely inspired by and aims to be the spiritual successor of the [CommandLineSubmission] program from the marmoset project by Jaime Spacco, William Pugh, and others, hence the [AGPL-3.0-or-later] license and the name sagoin, which refers to a marmoset.

Installation

The latest precompiled binaries are available on github.

Alternatively you can install sagoin from crates.io with cargo.

sh cargo install sagoin

Building from source

sh cargo build --release

Quick start

Submit the project in the current directory: sh sagoin

Submit the project under the ProjectName directory: sh sagoin ProjectName

Submit the project under the ProjectName directory and open the project page in a web browser: sh sagoin ProjectName -o

Usage

``` Usage: sagoin [OPTIONS] [DIRECTORY]

Arguments: [DIRECTORY] Set the working directory, all commands will be run under this directory

Options: -n, --no-submit Don't submit the project -l, --list-files List files without submitting them -i, --info Show information about the project and exit -o, --open Open the project page in a web browser -f, --field Additional key-value pairs to send to the submit server, this will not affect authentication --color Controls when to use color [default: auto] [possible values: auto, always, never] -c, --config Specify the path to the config file, looks for sagoin/config.toml under XDG configuration directories on unix-like systems, and defaults to {FOLDERIDRoamingAppData}sagoin\config.toml on windows when unspecified [env: SAGOINCONFIG=] -t, --time-format Specify how to format the due date, ignored without the --info flag, defaults to "[month repr:short] [day padding:none], [hour]:[minute]" when unspecified [env: SAGOINTIMEFORMAT=] -u, --username Specify the username for authentication, see --username-type for more information [env: SAGOINUSERNAME=] -U, --username-type Specify the type for the username, defaults to text when unspecified [env: SAGOINUSERNAMETYPE=] [possible values: command, file, text] -p, --password Specify the password for authentication, see --password-type for more information [env: SAGOINPASSWORD=] -P, --password-type Specify the type for the password, defaults to text when unspecified [env: SAGOINPASSWORDTYPE=] [possible values: command, file, text] -s, --pre-submit-hook Command to run before submission [env: SAGOINPRESUBMITHOOK=] -S, --post-submit-hook Command to run after successful submissions [env: SAGOINPOSTSUBMITHOOK=] --client-name Change the client name used to submit the project [env: SAGOINCLIENTNAME=] --client-version Change the client version used to submit the project [env: SAGOINCLIENTVERSION=] -h, --help Print help information (use -h for a summary, use --help for more detail) -V, --version Print version information ```

Feature comparison

Freature | Sagoin | [CommandLineSubmission] | CourseProjectManager Eclipse plugin -|-|-|- Submission | ✓ | ✓ | ✓ Work without Eclipse | ✓ | ✓ | ✗ LDAP authentication | ✓ | ✓ | ✓ OpenID authentication | ✗ | ✓ | ✓ CVS integration | ✗ | ✗ | ✓ CVS ignore | ✗ | ✓ | ✓ Git ignore | ✓ | ✗ | ✗ Custom credential input | ✓ | ✗ | ✗ Open project page | ✓ | ✗ | ✗ Submit hooks | ✓ | ✗ | ✗ Show project information | ✓ | ✗ | ✗

Configuration

File resolution: - for unix-like systems: looks for sagoin/config.toml under XDG configuration directories, e.g. /home/<user>/.config/sagoin/config.toml - for windows: defaults to {FOLDERID_RoamingAppData}\sagoin\config.toml, e.g. C:\Users\<user>\AppData\Roaming\sagoin\config.toml

The configuration file is written in TOML. Run sagoin --help for more information.

```toml

all possible fields in config.toml

timeformat = "..." username = "..." usernametype = "command | file | text" password = "..." passwordtype = "command | file | text" presubmithook = "..." postsubmithook = "..." clientname = "..." client_version = "..." ```

Changelog

See CHANGELOG.md

License

This repository is licensed under GNU Affero General Public License v3.0 or later.