@@ -19,6 +19,17 @@ REQUIRED_SCREENSHOT_FAMILIES = {
|
19 | 19 | "iPhone" => /iPhone/, |
20 | 20 | "13-inch iPad" => /iPad (Air|Pro) 13-inch/ |
21 | 21 | }.freeze |
| 22 | +PUBLIC_METADATA_FILENAMES = [ |
| 23 | +"description.txt", |
| 24 | +"keywords.txt", |
| 25 | +"marketing_url.txt", |
| 26 | +"name.txt", |
| 27 | +"privacy_url.txt", |
| 28 | +"promotional_text.txt", |
| 29 | +"release_notes.txt", |
| 30 | +"subtitle.txt", |
| 31 | +"support_url.txt" |
| 32 | +].freeze |
22 | 33 | |
23 | 34 | def load_env_file(path) |
24 | 35 | return unless File.exist?(path) |
@@ -601,6 +612,19 @@ def release_notes_metadata_path
|
601 | 612 | temp_root |
602 | 613 | end |
603 | 614 | |
| 615 | +def public_metadata_path |
| 616 | +source = File.join(__dir__, "metadata") |
| 617 | +temp_root = Dir.mktmpdir("openclaw-app-store-metadata") |
| 618 | +Dir.children(source).each do |entry| |
| 619 | +source_entry = File.join(source, entry) |
| 620 | +next unless File.directory?(source_entry) |
| 621 | +next unless PUBLIC_METADATA_FILENAMES.any? { |filename| File.exist?(File.join(source_entry, filename)) } |
| 622 | + |
| 623 | +FileUtils.cp_r(source_entry, File.join(temp_root, entry)) |
| 624 | +end |
| 625 | +temp_root |
| 626 | +end |
| 627 | + |
604 | 628 | def read_ios_version_metadata |
605 | 629 | script_path = File.join(repo_root, "scripts", "ios-version.ts") |
606 | 630 | stdout, stderr, status = Open3.capture3( |
@@ -926,7 +950,7 @@ platform :ios do
|
926 | 950 | validate_required_screenshots!(paths) |
927 | 951 | end |
928 | 952 | |
929 | | -metadata_path = File.join(__dir__, "metadata") |
| 953 | +metadata_path = public_metadata_path |
930 | 954 | skip_metadata = ENV["DELIVER_METADATA"] != "1" |
931 | 955 | if release_notes_upload_requested? && skip_metadata |
932 | 956 | metadata_path = release_notes_metadata_path |
|