You've already forked comprehensive-rust
mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-11-27 00:21:07 +02:00
Adjust morning-session timings downward (#1786)
Based on feedback from @marshallpierce that mornings took about 2.5 hours, this adjusts a bunch of the morning times downward to try to match that. In other words, this is trying to make the times in the course more accurate, rather than reducing the amount of time available for these slides. This also updates the `course-schedule` tool to be able to show per-segment timings.
This commit is contained in:
committed by
GitHub
parent
e921d4bb1e
commit
9f67c9b0e7
@@ -12,21 +12,29 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
use clap::Command;
|
||||
use mdbook::MDBook;
|
||||
use mdbook_course::course::{Course, Courses};
|
||||
use mdbook_course::course::Courses;
|
||||
use mdbook_course::markdown::duration;
|
||||
|
||||
fn main() {
|
||||
pretty_env_logger::init();
|
||||
let app = Command::new("mdbook-course")
|
||||
.about("mdbook preprocessor for Comprehensive Rust")
|
||||
.subcommand(Command::new("sessions").about("Show session summary (default)"))
|
||||
.subcommand(Command::new("segments").about("Show segment summary"))
|
||||
.subcommand(Command::new("pr").about("Show summary for a PR"));
|
||||
let matches = app.get_matches();
|
||||
|
||||
let root_dir = ".";
|
||||
let mdbook = MDBook::load(root_dir).expect("Unable to load the book");
|
||||
let (courses, _) = Courses::extract_structure(mdbook.book)
|
||||
.expect("Unable to extract course structure");
|
||||
|
||||
println!("## Course Schedule");
|
||||
println!("With this pull request applied, the course schedule is as follows:");
|
||||
for course in &courses {
|
||||
print_summary(course);
|
||||
match matches.subcommand() {
|
||||
Some(("session", _)) | None => session_summary(&courses),
|
||||
Some(("pr", _)) => pr_summary(&courses),
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,18 +52,42 @@ fn timediff(actual: u64, target: u64, slop: u64) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
fn print_summary(course: &Course) {
|
||||
if course.target_minutes() == 0 {
|
||||
return;
|
||||
}
|
||||
println!("### {}", course.name);
|
||||
println!("_{}_", timediff(course.minutes(), course.target_minutes(), 15));
|
||||
|
||||
for session in course {
|
||||
println!(
|
||||
"* {} - _{}_",
|
||||
session.name,
|
||||
timediff(session.minutes(), session.target_minutes(), 5)
|
||||
);
|
||||
fn session_summary(courses: &Courses) {
|
||||
for course in courses {
|
||||
if course.target_minutes() == 0 {
|
||||
return;
|
||||
}
|
||||
for session in course {
|
||||
println!("### {} // {}", course.name, session.name);
|
||||
println!(
|
||||
"_{}_",
|
||||
timediff(session.minutes(), session.target_minutes(), 15)
|
||||
);
|
||||
println!();
|
||||
for segment in session {
|
||||
println!("* {} - _{}_", segment.name, duration(segment.minutes()));
|
||||
}
|
||||
println!();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn pr_summary(courses: &Courses) {
|
||||
println!("## Course Schedule");
|
||||
println!("With this pull request applied, the course schedule is as follows:");
|
||||
for course in courses {
|
||||
if course.target_minutes() == 0 {
|
||||
return;
|
||||
}
|
||||
println!("### {}", course.name);
|
||||
println!("_{}_", timediff(course.minutes(), course.target_minutes(), 15));
|
||||
|
||||
for session in course {
|
||||
println!(
|
||||
"* {} - _{}_",
|
||||
session.name,
|
||||
timediff(session.minutes(), session.target_minutes(), 5)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user