Giter VIP home page Giter VIP logo

rage / tmc-langs-rust Goto Github PK

View Code? Open in Web Editor NEW
7.0 6.0 8.0 685.59 MB

A library and CLI for supporting different programming languages in the TestMyCode programming assignment evaluator.

Home Page: https://tmc.mooc.fi/

License: Apache License 2.0

Rust 80.33% HTML 0.01% Python 4.87% Java 0.59% Makefile 0.75% C 6.00% C# 0.61% JavaScript 0.83% TypeScript 1.88% R 3.96% Dockerfile 0.11% Shell 0.05%
tmc rust cli

tmc-langs-rust's Introduction

Framework for supporting different programming languages in TMC.

TMC-langs provides an interface that encapsulates everything needed to support a new language in TMC by providing functionality such as downloading exercises, running tests and submitting them. A CLI wrapper is provided so that it's fairly convenient to call from other languages like Ruby.

Documentation

Documentation for the latest release is available at https://rage.github.io/tmc-langs-rust. Documentation is automatically built and deployed when creating a GitHub release.

Additional documentation for other aspects of TMC such as configuration file formats is included in the docs directory.

Included projects

tmc-langs-cli

A "frontend" for tmc-langs. A binary CLI client for TMC-langs for IDEs. Intended to be used programmatically, for a CLI meant for manual use see tmc-cli-rust.

bindings/tmc-langs-node

Bindings for using tmc-langs from Node.js.

tmc-langs

The "backend". A library that provides a convenient API for implementing different frontends. A frontend (such as a CLI) should only depend on this library. The other libraries are considered internal.

tmc-client

A library that abstracts over different TMC backends.

tmc-testmycode-client

A library for communicating with the TestMyCode TMC server.

tmc-mooc-client

A library for communicating with the mooc.fi TMC server.

tmc-langs-framework

A library for creating language plugins.

tmc-langs-plugins

A library that provides a convenient API abstracting over all the different language plugins.

tmc-langs-util

A utility library that contains various kinds of useful functionality for other projects.

plugins/csharp

A TMC plugin for C#.

plugins/java

TMC plugins for Maven and Ant projects.

plugins/make

A TMC plugin for Make.

plugins/notests

A TMC plugin for projects with no tests.

plugins/python3

A TMC plugin for Python 3.

plugins/r

A TMC plugin for R.

Supported targets

  • Linux 64-bit (x86_64-unknown-linux-gnu)
  • Linux 32-bit (i686-unknown-linux-gnu)
  • Windows MSVC 64-bit (x86_64-pc-windows-msvc)
  • Windows MSVC 32-bit (i686-pc-windows-msvc)
  • MacOS x86 (x86_64-apple-darwin)
  • MacOS M1 (aarch64-apple-darwin)
  • ARM64 (aarch64-unknown-linux-gnu)
  • Armv7 (armv7-unknown-linux-gnueabihf)

A musl (x86_64-unknown-linux-musl) build is also available, but it does not support Java exercises. This is because the Java support relies on dynamically linking libjvm, which is not supported by the musl build.

Contributing

See CONTRIBUTING.

License

Licensed under either of

at your option.

tmc-langs-rust's People

Contributors

heliozoa avatar jolampi avatar kallimiika avatar nooblue avatar nygrenh avatar redande avatar sebazai avatar shootingstar91 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tmc-langs-rust's Issues

0.1.10-alpha

  • Fail tests when they are reported as successful with no test cases 47d974e
  • Remove temporary tmc json files before running tmc commands and after parsing in Python plugin c52db04 efe0b1b
  • Set pycache and .pyc to not be student source files in Python policy 5f16418
  • Rename list-courses to get-courses in CLI cd10286
  • Report test timeout as a failed test instead of an error 1cada6a
  • Add missing submission-id argument to download-old-submission e8dbe72
  • core get-organization in CLI 23d32f0
  • core get-course-settings in CLI 4191f8e
  • core get-course-exercises in CLI 3d1b099
  • core get-exercise-details in CLI 0c459df
  • core get-exercise-submissions in CLI c93a15a a2ceaf8

0.1.13-alpha

  • CLI status on error Finished instead of Crashed ad1ede2
  • improve CLI error messages c5b0e94
  • moved language plugins to a plugins subdirectory 21dcbc100d8d2c5fb17dafc16a0f0f016e8befaa
  • make zip generic instead of dyn ee370d4
  • improved download-old-submission (reset only if output exists) 32637e5
  • lang plugins to subdir 314d2bf
  • improved error msg for cmd not found c5b0e94

download-old-submission

  • option --save-old-state -> submits the old files to the server before nuking it
  1. optinally back up
  2. reset
  3. download and extract

combined getCourseData command for rust

const courseData = userData.getCourse(courseId);
const updateResult = Result.all(
    ...(await Promise.all([
        tmc.getCourseDetails(courseId),
        tmc.getCourseExercises(courseId),
        tmc.getCourseSettings(courseId),
    ])),
);

0.1.11-alpha

  • moved tmc-langs-abstraction inside tmc-langs-framework 17957f1
  • moved file_util from utils to framework cdf9993
  • make --output-path optional in the relevant CLI commands (checkstyle, run-tests, find-exercises, get-exercise-packaging-configuration) f76f70f
  • check stdout from java plugin
  • stop printing clap output as JSON a2c901f
  • fix coursedata 5f23be6
  • remove "core" field from progress update result e7b9a6c
  • document CLI output format for commands 96b04d6
  • return constructed status when waiting on hidden exercise 341a5b9
  • restructure cli internals dd76fba

rust: commands for settings

  • Each plugin name has its own settings file
  • Ability to save and get arbitrary data to the settings
  • --client-name=lolled get-setting setting-x --default=x
  • --client-name=lolled set-setting setting-x "value"
  • Support for special settings that have custom logic for the default value

0.1.12-alpha

  • fix missing exercise-id in reset-exercise 1e56793
  • improve student file detection
  • add obsolete_client to core response error 06ff94e 025bedf
  • rename CLI status Success to Finished 24b8203
  • use trash

Add LICENCE

This repository looks interesting but doesn't a licence and therefore limits who can contribute to it. Would it be possible to specify a licence for the repository?

0.1.14-alpha

  • improved progress tracking for multi step CLI commands 7c474cc
  • reset clears directory contents instead of removing it b0bc770
  • conditional clean on extract project 9f9f36c

Testing on server

java-ant

  • Testing project template
  • Testing model solution
  • Testing old submissions

java-maven

  • Testing project template
  • Testing model solution
  • Testing old submissions

python

  • Testing project template
  • Testing model solution
  • Testing old submissions

make

  • Testing project template
  • Testing model solution
  • Testing old submissions

R

  • Testing project template
  • Testing model solution
  • Testing old submissions

notests

  • Testing project template
  • Testing old submissions

Login command

./tmc-langs-cli-linux-0.1.3-alpha core --client-name vscode login --email [email protected]
-> Expects password to be supplied via stdin
-> Then fetches oauth token, and stores it to .config/tmc-vscode/credentials.json

Document .tmcproject.yml

Also document which files are student files and exercise files for each language plugin.

Provide examples

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.