Skip to content

Commit 1a62c5e

Browse files
committed
use course name and exercise name from details endpoint
1 parent c2cada9 commit 1a62c5e

File tree

6 files changed

+23
-19
lines changed

6 files changed

+23
-19
lines changed

tmc-langs-cli/src/config/projects_config.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,11 @@ mod test {
9898
}
9999

100100
fn file_to(
101-
temp: impl AsRef<std::path::Path>,
102-
relative_path: impl AsRef<std::path::Path>,
101+
target_dir: impl AsRef<std::path::Path>,
102+
target_relative: impl AsRef<std::path::Path>,
103103
contents: impl AsRef<[u8]>,
104104
) {
105-
let target = temp.as_ref().join(relative_path);
105+
let target = target_dir.as_ref().join(target_relative);
106106
if let Some(parent) = target.parent() {
107107
std::fs::create_dir_all(parent).unwrap();
108108
}

tmc-langs-cli/src/main.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -830,18 +830,20 @@ fn run_core(
830830
let mut course_data = HashMap::<String, Vec<(String, String)>>::new();
831831
let mut exercises_and_paths = vec![];
832832
for exercise_detail in exercises_details {
833-
// get course and exercise name from server
834-
let ex_details = core.get_exercise_details(exercise_detail.id)?;
835833
// check if the checksum is different from what's already on disk
836-
if let Some(course_config) = projects_config.courses.get(&ex_details.course_name) {
837-
if let Some(exercise) = course_config.exercises.get(&ex_details.exercise_name) {
834+
if let Some(course_config) =
835+
projects_config.courses.get(&exercise_detail.course_name)
836+
{
837+
if let Some(exercise) =
838+
course_config.exercises.get(&exercise_detail.exercise_name)
839+
{
838840
if exercise_detail.checksum == exercise.checksum {
839841
// skip this exercise
840842
log::info!(
841843
"Skipping exercise {} ({} in {}) due to identical checksum",
842844
exercise_detail.id,
843-
ex_details.course_name,
844-
ex_details.exercise_name
845+
exercise_detail.course_name,
846+
exercise_detail.exercise_name
845847
);
846848
continue;
847849
}
@@ -850,13 +852,13 @@ fn run_core(
850852

851853
let target = ProjectsConfig::get_exercise_download_target(
852854
&projects_dir,
853-
&ex_details.course_name,
854-
&ex_details.exercise_name,
855+
&exercise_detail.course_name,
856+
&exercise_detail.exercise_name,
855857
);
856858

857-
let entry = course_data.entry(ex_details.course_name);
859+
let entry = course_data.entry(exercise_detail.course_name);
858860
let course_exercises = entry.or_default();
859-
course_exercises.push((ex_details.exercise_name, exercise_detail.checksum));
861+
course_exercises.push((exercise_detail.exercise_name, exercise_detail.checksum));
860862

861863
exercises_and_paths.push((exercise_detail.id, target));
862864
}

tmc-langs-core/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub use self::error::CoreError;
1818
pub use self::request::FeedbackAnswer;
1919
pub use self::response::{
2020
Course, CourseData, CourseDataExercise, CourseDataExercisePoint, CourseDetails, CourseExercise,
21-
Exercise, ExerciseChecksums, ExerciseDetails, NewSubmission, Organization, Review, Submission,
21+
Exercise, ExerciseDetails, ExercisesDetails, NewSubmission, Organization, Review, Submission,
2222
SubmissionFeedbackResponse, SubmissionFinished, SubmissionProcessingStatus, SubmissionStatus,
2323
UpdateResult, User,
2424
};

tmc-langs-core/src/response.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,10 @@ pub struct ExerciseDetails {
211211
}
212212

213213
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
214-
pub struct ExerciseChecksums {
214+
pub struct ExercisesDetails {
215215
pub id: usize,
216+
pub course_name: String,
217+
pub exercise_name: String,
216218
pub checksum: String,
217219
}
218220

tmc-langs-core/src/tmc_core.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ impl TmcCore {
329329
pub fn get_exercises_details(
330330
&self,
331331
exercise_ids: Vec<usize>,
332-
) -> Result<Vec<ExerciseChecksums>, CoreError> {
332+
) -> Result<Vec<ExercisesDetails>, CoreError> {
333333
self.core_exercise_details(exercise_ids)
334334
}
335335

tmc-langs-core/src/tmc_core/api.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::error::CoreError;
44
use crate::response::ErrorResponse;
55
use crate::{
66
Course, CourseData, CourseDataExercise, CourseDataExercisePoint, CourseDetails, CourseExercise,
7-
ExerciseChecksums, ExerciseDetails, FeedbackAnswer, NewSubmission, Organization, Review,
7+
ExerciseDetails, ExercisesDetails, FeedbackAnswer, NewSubmission, Organization, Review,
88
Submission, SubmissionFeedbackResponse, TmcCore, User,
99
};
1010
use oauth2::TokenResponse;
@@ -610,7 +610,7 @@ impl TmcCore {
610610
pub(super) fn core_exercise_details(
611611
&self,
612612
exercise_ids: Vec<usize>,
613-
) -> Result<Vec<ExerciseChecksums>, CoreError> {
613+
) -> Result<Vec<ExercisesDetails>, CoreError> {
614614
if self.token.is_none() {
615615
return Err(CoreError::NotLoggedIn);
616616
}
@@ -625,7 +625,7 @@ impl TmcCore {
625625
);
626626

627627
// returns map with result in key "exercises"
628-
let res: HashMap<String, Vec<ExerciseChecksums>> =
628+
let res: HashMap<String, Vec<ExercisesDetails>> =
629629
self.get_json_with_params(&url_tail, &[exercise_ids])?;
630630
if let Some((_, val)) = res.into_iter().next() {
631631
// just return whatever value is found first

0 commit comments

Comments
 (0)