eecs485staff / agio-cli

A command line interface to autograder.io
MIT License
1 stars 0 forks source link

Download config #35

Closed japplefield closed 2 years ago

japplefield commented 2 years ago

Closes #29

TODO:

awdeorio commented 2 years ago

This is great!

Refuse to clobber existing?

Nah, just overwrite

Compare remote copy to local copy?

Nope, keep it simple and let the caller decide if they'd like to do that.

I'd also suggest adding a -o/--output flag for a custom filename.

awdeorio commented 2 years ago

I did some more thinking about the semantics of agio config and how it compares to the semantics of the submissions and projects subcommands.

The submissions subcommand shows a JSON blob with submission metadata. The submissions --download flag downloads a copy of a submission's uploaded files.

The projects subcommand shows a JSON blob with limited project configuration metadata.

The current config subcommand shows a JSON blob with extensive project configuration metadata. In particular, what the autograder API calls "ag_test_suites". It doesn't include the info that the projects subcommand produces.

I think the agio config --download is confusing because it's very different from agio submissions --download. If we were going to implement a --download flag it should probably be to download the autograder support files AKA "instructor_files_needed" e.g. autograder-999a3f1b.tar.gz.

Option 1: New subcommand (current)

Continue to use a new subcommand. Now that I think about agio config is a bit confusing because it's not obvious that we're getting a project config. I mean, it could the config for a course or a single test suite. Options could include agio project-config, agio project-test-suite-config, or something else.

Option 1: projects subcommand flag

We could implement the autograder testcase config dump as agio projects --verbose, agio projects --config, agio projects --test-suite-config, or something along those lines.

WDYT?

japplefield commented 2 years ago

I like agio projects --config. Would you then add a --download and a --filename flag?

awdeorio commented 2 years ago

I like agio projects --config

OK, let's do it!

Would you then add a --download and a --filename flag?

Option 1: do nothing and let the user do agio projects --config > myconfig.json

Option 2: agio projects --output myconfig.json

Option 3: A global --output option much like --debug that sends any final output to a file.

Now that I think about it some more, I kinda like Option 3. We could do the easy route for now (Option 1) and create an issue for Option 3.

codecov-commenter commented 2 years ago

Codecov Report

Merging #35 (8be5e9c) into develop (651e59b) will increase coverage by 0.32%. The diff coverage is 100.00%.

@@             Coverage Diff             @@
##           develop      #35      +/-   ##
===========================================
+ Coverage    70.48%   70.80%   +0.32%     
===========================================
  Files            4        4              
  Lines          454      459       +5     
===========================================
+ Hits           320      325       +5     
  Misses         134      134              
Impacted Files Coverage Δ
agiocli/__main__.py 80.00% <100.00%> (+0.90%) :arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us.

japplefield commented 2 years ago

Test is kinda underwhelming but given that this route just downloads a long JSON file I think it's appropriate.

japplefield commented 2 years ago

This is merged but I think we need to update on Pypi now?

awdeorio commented 2 years ago

This is merged but I think we need to update on Pypi now?

Done!