Skip to content

Commit

Permalink
refactor: Move release note announcement generation (#813)
Browse files Browse the repository at this point in the history
to module dedicated for logic interacting with GitHub
  • Loading branch information
GeckoEidechse authored Feb 14, 2024
1 parent d45f096 commit 573d8c9
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 76 deletions.
75 changes: 75 additions & 0 deletions src-tauri/src/github/release_notes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,78 @@ pub async fn get_northstar_release_notes() -> Result<Vec<ReleaseInfo>, String> {

Ok(release_info_vector)
}

/// Checks latest GitHub release and generates a announcement message for Discord based on it
#[tauri::command]
pub async fn generate_release_note_announcement() -> Result<String, String> {
let octocrab = octocrab::instance();
let page = octocrab
.repos("R2Northstar", "Northstar")
.releases()
.list()
// Optional Parameters
.per_page(1)
.page(1u32)
// Send the request
.send()
.await
.unwrap();

// Get newest element
let latest_release_item = &page.items[0];

// Extract the URL to the GitHub release note
let github_release_link = latest_release_item.html_url.clone();

// Extract release version number
let current_ns_version = &latest_release_item.tag_name;

// Extract changelog and format it
let changelog = remove_markdown_links::remove_markdown_links(
latest_release_item
.body
.as_ref()
.unwrap()
.split("**Contributors:**")
.next()
.unwrap()
.trim(),
);

// Strings to insert for different sections
// Hardcoded for now
let general_info = "REPLACE ME";
let modders_info = "Mod compatibility should not be impacted";
let server_hosters_info = "REPLACE ME";

// Build announcement string
let return_string = format!(
r"Hello beautiful people <3
**Northstar `{current_ns_version}` is out!**
{general_info}
**__Modders:__**
{modders_info}
**__Server hosters:__**
{server_hosters_info}
**__Changelog:__**
```
{changelog}
```
{github_release_link}
Checkout #installation on how to install/update Northstar
(the process is the same for both, using a Northstar installer like FlightCore, Viper, or VTOL is recommended over manual installation)
If you do notice any bugs, please open an issue on Github or drop a message in the thread below
"
);

// Return built announcement message
Ok(return_string.to_string())
}
2 changes: 1 addition & 1 deletion src-tauri/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ fn main() {
github::pull_requests::get_launcher_download_link,
github::pull_requests::get_pull_requests_wrapper,
github::release_notes::check_is_flightcore_outdated,
github::release_notes::generate_release_note_announcement,
github::release_notes::get_newest_flightcore_version,
github::release_notes::get_northstar_release_notes,
mod_management::delete_northstar_mod,
Expand Down Expand Up @@ -155,7 +156,6 @@ fn main() {
thunderstore::query_thunderstore_packages_api,
util::close_application,
util::force_panic,
util::generate_release_note_announcement,
util::get_flightcore_version_number,
util::get_server_player_count,
util::is_debug_mode,
Expand Down
75 changes: 0 additions & 75 deletions src-tauri/src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -265,81 +265,6 @@ pub fn convert_release_candidate_number(version_number: String) -> String {
panic!();
}

/// Checks latest GitHub release and generates a announcement message for Discord based on it
#[tauri::command]
pub async fn generate_release_note_announcement() -> Result<String, String> {
let octocrab = octocrab::instance();
let page = octocrab
.repos("R2Northstar", "Northstar")
.releases()
.list()
// Optional Parameters
.per_page(1)
.page(1u32)
// Send the request
.send()
.await
.unwrap();

// Get newest element
let latest_release_item = &page.items[0];

// Extract the URL to the GitHub release note
let github_release_link = latest_release_item.html_url.clone();

// Extract release version number
let current_ns_version = &latest_release_item.tag_name;

// Extract changelog and format it
let changelog = remove_markdown_links::remove_markdown_links(
latest_release_item
.body
.as_ref()
.unwrap()
.split("**Contributors:**")
.next()
.unwrap()
.trim(),
);

// Strings to insert for different sections
// Hardcoded for now
let general_info = "REPLACE ME";
let modders_info = "Mod compatibility should not be impacted";
let server_hosters_info = "REPLACE ME";

// Build announcement string
let return_string = format!(
r"Hello beautiful people <3
**Northstar `{current_ns_version}` is out!**
{general_info}
**__Modders:__**
{modders_info}
**__Server hosters:__**
{server_hosters_info}
**__Changelog:__**
```
{changelog}
```
{github_release_link}
Checkout #installation on how to install/update Northstar
(the process is the same for both, using a Northstar installer like FlightCore, Viper, or VTOL is recommended over manual installation)
If you do notice any bugs, please open an issue on Github or drop a message in the thread below
"
);

// Return built announcement message
Ok(return_string.to_string())
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down

0 comments on commit 573d8c9

Please sign in to comment.