ref: cc2e94ab2bbbcfcbb2eee58c5878917fadb721ab
parent: 1eba6388bfed72e21a4525ef7a1c6c18d857b703
author: Ben Harris <bjh21@bjh21.me.uk>
date: Sun Dec 11 09:08:12 EST 2022
kaios: Put version numbers in manifest files This only happens if something edits manifest.pl to provide a version number, but Buildscr can do that. KaiOS manifests are documented as requiring dotted-decimal version numbers. In fact, the restrictions are much stricter than that, and unacceptable version numbers can break the KaiStore developer portal. YY.MM.DD version numbers seem to be acceptable.
--- a/kaios/manifest.pl
+++ b/kaios/manifest.pl
@@ -9,6 +9,9 @@
die "usage: manifest.pl <name> <displayname> <description> <objective>";
my ($name, $displayname, $description, $objective) = @ARGV;
+# This can be overridden by the build script.
+my $version = "Unidentified build";
+
# Limits from
# https://developer.kaiostech.com/docs/getting-started/main-concepts/manifest
length($displayname) <= 20 or die "Name too long: $displayname";
@@ -17,6 +20,18 @@
# https://developer.kaiostech.com/docs/distribution/submission-guideline
length($objective) <= 220 or die "Description too long: $objective";
+my $decvers;
+if ($version =~ /^20(\d\d)(\d\d)(\d\d)\./) {
+ # Fabricate a dotted-decimal version number as required by KaiOS.
+ # The precise requirements are unclear and violating them leads to
+ # messes in the KaiStore that can only be resolved by Developer
+ # Support. Specifically, uploading a bad version number as the
+ # first upload of an app can make it impossible to upload a new
+ # version. I hope that three components of two digits each will
+ # be acceptable.
+ $decvers = join('.', $1+0, $2+0, $3+0);
+}
+
print encode_json({
name => $displayname,
subtitle => $description,
@@ -31,6 +46,9 @@
url => "https://bjh21.me.uk",
},
default_locale => "en-GB",
+ locales => [ ],
categories => ["games"],
+ type => "web",
cursor => JSON::PP::false,
+ $decvers ? (version => $decvers) : (),
})