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.
This commit is contained in:
Ben Harris
2022-12-11 14:08:12 +00:00
parent 1eba6388bf
commit cc2e94ab2b

View File

@ -9,6 +9,9 @@ use JSON::PP;
die "usage: manifest.pl <name> <displayname> <description> <objective>"; die "usage: manifest.pl <name> <displayname> <description> <objective>";
my ($name, $displayname, $description, $objective) = @ARGV; my ($name, $displayname, $description, $objective) = @ARGV;
# This can be overridden by the build script.
my $version = "Unidentified build";
# Limits from # Limits from
# https://developer.kaiostech.com/docs/getting-started/main-concepts/manifest # https://developer.kaiostech.com/docs/getting-started/main-concepts/manifest
length($displayname) <= 20 or die "Name too long: $displayname"; length($displayname) <= 20 or die "Name too long: $displayname";
@ -17,6 +20,18 @@ $objective .= " Part of Simon Tatham's Portable Puzzle Collection.";
# https://developer.kaiostech.com/docs/distribution/submission-guideline # https://developer.kaiostech.com/docs/distribution/submission-guideline
length($objective) <= 220 or die "Description too long: $objective"; 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({ print encode_json({
name => $displayname, name => $displayname,
subtitle => $description, subtitle => $description,
@ -31,6 +46,9 @@ print encode_json({
url => "https://bjh21.me.uk", url => "https://bjh21.me.uk",
}, },
default_locale => "en-GB", default_locale => "en-GB",
locales => [ ],
categories => ["games"], categories => ["games"],
type => "web",
cursor => JSON::PP::false, cursor => JSON::PP::false,
$decvers ? (version => $decvers) : (),
}) })