From 276b8a01e78f59c6fec9e28584c678ddc335736e Mon Sep 17 00:00:00 2001 From: Trevor Bentley Date: Sun, 15 Jan 2023 00:38:43 +0100 Subject: [PATCH] add option to link directly to readme --- config.toml | 11 +++++++++++ src/generate.rs | 12 ++++++++++++ src/settings.rs | 5 +++++ templates/style.css | 8 ++++---- templates/summary.html | 10 +++++++++- 5 files changed, 41 insertions(+), 5 deletions(-) diff --git a/config.toml b/config.toml index 0c976f1..d059453 100644 --- a/config.toml +++ b/config.toml @@ -54,6 +54,16 @@ # file. #recursive_repo_dirs = [] +# List of files potentially containing repository documentation. +# +# Each repository root is searched for these files, in order. The +# first matching file is provided to the templates as a `readme` +# variable, with the file contents. Markdown files are rendered as +# HTML if the feature is enabled. +# +# This can also be set per-repository. +#readme_files = ["README.md", "README"] + # List of files to copy to the site's `global_assets` directory. # # The files in this list are copied unmodified, and with the same name, to the @@ -535,6 +545,7 @@ generated_by = "Itsy-Gitsy" #limit_context = 200 #limit_diffs = 200 #asset_files = ["LICENSE"] +#readme_files = ["README.md", "README"] # An alternative way to specify the user-defined attributes. # diff --git a/src/generate.rs b/src/generate.rs index 1cc6611..63f732f 100644 --- a/src/generate.rs +++ b/src/generate.rs @@ -345,6 +345,18 @@ impl GitsyGenerator { local_ctx.insert("site_generated_ts", &generated_dt.timestamp()); local_ctx.insert("site_generated_offset", &generated_dt.offset().local_minus_utc()); + if let Some(readmes) = &repo_desc.readme_files { + for readme in readmes { + if let Some(file) = parsed_repo.root_files.iter().filter(|x| &x.name == readme).next() { + louder!(" - found readme file: {}", file.name); + let _ = GitsyGenerator::fill_file_contents(&repo, &file, &repo_desc) + .expect("Failed to parse file."); + local_ctx.insert("readme", &file); + break; + } + } + }; + if let Some(templ_file) = self.settings.templates.repo_summary.as_deref() { match tera.render(templ_file, &local_ctx) { Ok(rendered) => { diff --git a/src/settings.rs b/src/settings.rs index 5133fc8..0a65025 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -231,6 +231,7 @@ pub struct GitsySettingsRepo { pub clone_url: Option, pub website: Option, pub branch: Option, + pub readme_files: Option>, pub asset_files: Option>, pub render_markdown: Option, pub syntax_highlight: Option, @@ -273,6 +274,7 @@ pub struct GitsySettings { pub site_url: Option, pub site_description: Option, pub clone_url: Option, + pub readme_files: Option>, pub asset_files: Option>, pub branch: Option, #[serde(rename(deserialize = "gitsy_templates"))] @@ -356,6 +358,7 @@ impl GitsySettings { }; } global_to_repo!(settings, repo, branch); + global_to_repo!(settings, repo, readme_files); global_to_repo!(settings, repo, render_markdown); global_to_repo!(settings, repo, syntax_highlight); global_to_repo!(settings, repo, syntax_highlight_theme); @@ -395,6 +398,7 @@ impl GitsySettings { path: dir.path().clone(), name: Some(name), clone_url, + readme_files: settings.readme_files.clone(), branch: settings.branch.clone(), render_markdown: settings.render_markdown.clone(), syntax_highlight: settings.syntax_highlight.clone(), @@ -434,6 +438,7 @@ impl GitsySettings { path: dir.clone(), name: Some(name), clone_url, + readme_files: settings.readme_files.clone(), branch: settings.branch.clone(), render_markdown: settings.render_markdown.clone(), syntax_highlight: settings.syntax_highlight.clone(), diff --git a/templates/style.css b/templates/style.css index 4769d8e..8d7ece1 100644 --- a/templates/style.css +++ b/templates/style.css @@ -335,14 +335,14 @@ div.commit-page span.del { font-size: 0.9rem; } } -table.clone-url { +table.links { width: 100%; } -table.clone-url td.field { +table.links td.field { font-weight: bold; - width: 8rem; + width: 10rem; } -table.clone-url td.value { +table.links td.value { text-align: left; } div.file-contents pre { diff --git a/templates/summary.html b/templates/summary.html index 5af5c59..32ab63c 100644 --- a/templates/summary.html +++ b/templates/summary.html @@ -3,11 +3,19 @@ {% block tab_summary_selected -%}selected{% endblock -%} {% block content %} - +
+ + + {% if readme and readme.id in file_ids -%} + + {% else -%} + + {% endif -%} +