diff --git a/apps/api/app/services/software_updater/c64_service.rb b/apps/api/app/services/software_updater/c64_service.rb new file mode 100644 index 0000000..2e9c92a --- /dev/null +++ b/apps/api/app/services/software_updater/c64_service.rb @@ -0,0 +1,19 @@ +module SoftwareUpdater + class C64Service < BaseService + def update(name, version) + versioned = "#{name}-#{version}" + + metadata = parse_json_metadata(full_path("#{versioned}.metadata.json")) + site_url = metadata.delete(:site) + + software = update_or_create_software(metadata.merge(platform: "c64")) + upsert_external_link(software.id, "Source Code", site_url) if site_url.present? + + create_release_if_not_exists( + software_id: software.id, + version: version, + cartridge_path: full_path("#{versioned}.prg") + ) + end + end +end diff --git a/apps/api/app/services/update_service.rb b/apps/api/app/services/update_service.rb index c6f6b11..36f3059 100644 --- a/apps/api/app/services/update_service.rb +++ b/apps/api/app/services/update_service.rb @@ -2,7 +2,8 @@ class UpdateService PLATFORM_SERVICES = { "tic80" => "SoftwareUpdater::Tic80Service", "ebitengine" => "SoftwareUpdater::EbitengineService", - "love" => "SoftwareUpdater::LoveService" + "love" => "SoftwareUpdater::LoveService", + "c64" => "SoftwareUpdater::C64Service" }.freeze def update(input)