Support repo metadata field as Repository external link
All software updater services now read an optional repo field from the game metadata and upsert it as a "Repository" external link, keyed by (software_id, label) so re-deploys update the existing link instead of creating duplicates. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@ module SoftwareUpdater
|
||||
|
||||
def parse_json_metadata(path)
|
||||
raw = JSON.parse(File.read(path), symbolize_names: true)
|
||||
raw.slice(:name, :title, :author, :desc, :site, :license)
|
||||
raw.slice(:name, :title, :author, :desc, :site, :repo, :license)
|
||||
end
|
||||
|
||||
def update_or_create_software(attrs)
|
||||
|
||||
@@ -6,10 +6,12 @@ module SoftwareUpdater
|
||||
|
||||
metadata = parse_json_metadata(full_path("#{versioned}.metadata.json"))
|
||||
site_url = metadata.delete(:site)
|
||||
repo_url = metadata.delete(:repo)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
software = update_or_create_software(metadata.merge(platform: "bevy"))
|
||||
upsert_external_link(software.id, "Source Code", site_url) if site_url.present?
|
||||
upsert_external_link(software.id, "Repository", repo_url) if repo_url.present?
|
||||
|
||||
create_release_if_not_exists(
|
||||
software_id: software.id,
|
||||
|
||||
@@ -5,10 +5,12 @@ module SoftwareUpdater
|
||||
|
||||
metadata = parse_json_metadata(full_path("#{versioned}.metadata.json"))
|
||||
site_url = metadata.delete(:site)
|
||||
repo_url = metadata.delete(:repo)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
software = update_or_create_software(metadata.merge(platform: "c64"))
|
||||
upsert_external_link(software.id, "Source Code", site_url) if site_url.present?
|
||||
upsert_external_link(software.id, "Repository", repo_url) if repo_url.present?
|
||||
|
||||
create_release_if_not_exists(
|
||||
software_id: software.id,
|
||||
|
||||
@@ -6,10 +6,12 @@ module SoftwareUpdater
|
||||
|
||||
metadata = parse_json_metadata(full_path("#{versioned}.metadata.json"))
|
||||
site_url = metadata.delete(:site)
|
||||
repo_url = metadata.delete(:repo)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
software = update_or_create_software(metadata.merge(platform: "ebitengine"))
|
||||
upsert_external_link(software.id, "Source Code", site_url) if site_url.present?
|
||||
upsert_external_link(software.id, "Repository", repo_url) if repo_url.present?
|
||||
|
||||
create_release_if_not_exists(
|
||||
software_id: software.id,
|
||||
|
||||
@@ -6,10 +6,12 @@ module SoftwareUpdater
|
||||
|
||||
metadata = parse_json_metadata(full_path("#{versioned}.metadata.json"))
|
||||
site_url = metadata.delete(:site)
|
||||
repo_url = metadata.delete(:repo)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
software = update_or_create_software(metadata.merge(platform: "godot"))
|
||||
upsert_external_link(software.id, "Source Code", site_url) if site_url.present?
|
||||
upsert_external_link(software.id, "Repository", repo_url) if repo_url.present?
|
||||
|
||||
create_release_if_not_exists(
|
||||
software_id: software.id,
|
||||
|
||||
@@ -6,10 +6,12 @@ module SoftwareUpdater
|
||||
|
||||
metadata = parse_json_metadata(full_path("#{versioned}.metadata.json"))
|
||||
site_url = metadata.delete(:site)
|
||||
repo_url = metadata.delete(:repo)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
software = update_or_create_software(metadata.merge(platform: "love"))
|
||||
upsert_external_link(software.id, "Source Code", site_url) if site_url.present?
|
||||
upsert_external_link(software.id, "Repository", repo_url) if repo_url.present?
|
||||
|
||||
create_release_if_not_exists(
|
||||
software_id: software.id,
|
||||
|
||||
@@ -6,10 +6,12 @@ module SoftwareUpdater
|
||||
|
||||
metadata = parse_json_metadata(full_path("#{versioned}.metadata.json"))
|
||||
site_url = metadata.delete(:site)
|
||||
repo_url = metadata.delete(:repo)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
software = update_or_create_software(metadata.merge(platform: "phaser"))
|
||||
upsert_external_link(software.id, "Source Code", site_url) if site_url.present?
|
||||
upsert_external_link(software.id, "Repository", repo_url) if repo_url.present?
|
||||
|
||||
create_release_if_not_exists(
|
||||
software_id: software.id,
|
||||
|
||||
@@ -9,10 +9,12 @@ module SoftwareUpdater
|
||||
|
||||
metadata = parse_lua_metadata(full_path("#{versioned}.lua"))
|
||||
site_url = metadata.delete(:site)
|
||||
repo_url = metadata.delete(:repo)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
software = update_or_create_software(metadata.merge(platform: "tic80"))
|
||||
upsert_external_link(software.id, "Source Code", site_url) if site_url.present?
|
||||
upsert_external_link(software.id, "Repository", repo_url) if repo_url.present?
|
||||
|
||||
create_release_if_not_exists(
|
||||
software_id: software.id,
|
||||
@@ -37,7 +39,7 @@ module SoftwareUpdater
|
||||
value = parts[1].strip
|
||||
metadata[key] = value
|
||||
end
|
||||
metadata.slice(:name, :title, :author, :desc, :site, :license)
|
||||
metadata.slice(:name, :title, :author, :desc, :site, :repo, :license)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user