#include "appletool.h" #include "helper.h" #include "runner.h" void AppleManifest_t::SetPackageID( CUtlString szPackageID ) { m_szPackageID = szPackageID; } void AppleManifest_t::SetPackageName( CUtlString szPackageName ) { m_szPackageName = szPackageName; } void AppleManifest_t::SetPackageExecutable( CUtlString szPackageExecutable ) { m_szPackageExecutable = szPackageExecutable; } CUtlString AppleManifest_t::BuildManifest() { CPUProject_t project = {}; project.m_szName = m_szPackageName; unsigned int hash = project.GenerateProjectHash(); CUtlString szOutputDir = CUtlString("%s/apple/%u_%s/app/",FPC_TEMPORAL_DIRNAME, hash, m_szPackageID.GetString()); filesystem2->MakeDirectory(szOutputDir); filesystem2->CopyFile(szOutputDir, m_szPackageExecutable); CUtlString szInfoPlist = CUtlString("%s/Info.plist", szOutputDir.GetString()); FILE *pInfoPlistFile = V_fopen(szInfoPlist, "wb"); V_fprintf(pInfoPlistFile, "\n"); V_fprintf(pInfoPlistFile, "\n"); V_fprintf(pInfoPlistFile, "\n"); V_fprintf(pInfoPlistFile, "\n"); V_fprintf(pInfoPlistFile, "CFBundleIdentifier\n"); V_fprintf(pInfoPlistFile, "%s\n", m_szPackageID.GetString()); V_fprintf(pInfoPlistFile, "CFBundleName\n"); V_fprintf(pInfoPlistFile, "%s\n", m_szPackageName.GetString()); V_fprintf(pInfoPlistFile, "CFBundleDisplayName\n"); V_fprintf(pInfoPlistFile, "%s\n", m_szPackageName.GetString()); V_fprintf(pInfoPlistFile, "CFBundleExecutable\n"); V_fprintf(pInfoPlistFile, "%s\n", m_szPackageExecutable.GetFileName().GetString()); V_fprintf(pInfoPlistFile, "CFBundlePackageType\n"); V_fprintf(pInfoPlistFile, "APPL\n"); V_fprintf(pInfoPlistFile, "CFBundleVersion\n"); V_fprintf(pInfoPlistFile, "1.0\n"); V_fprintf(pInfoPlistFile, "CFBundleShortVersionString\n"); V_fprintf(pInfoPlistFile, "1.0\n"); V_fprintf(pInfoPlistFile, "LSRequiresIPhoneOS\n"); V_fprintf(pInfoPlistFile, "\n"); V_fprintf(pInfoPlistFile, "UIDeviceFamily\n"); V_fprintf(pInfoPlistFile, "\n"); V_fprintf(pInfoPlistFile, "1\n"); V_fprintf(pInfoPlistFile, "2\n"); V_fprintf(pInfoPlistFile, "\n"); V_fprintf(pInfoPlistFile, "\n"); V_fclose(pInfoPlistFile); return szOutputDir; } class CAppleTool: public IAppleTool { public: virtual CUtlString BuildPackage( AppleManifest_t manifest, CUtlString szManifestDir ) override; virtual CUtlString SignPackage( const char *szIpa, const char *szPassword ) override; }; CUtlString CAppleTool::BuildPackage( AppleManifest_t manifest, CUtlString szManifestDir ) { CUtlVector args = {}; args = { "-r", CUtlString("../%s.ipa", manifest.m_szPackageName.GetString()), CUtlString("."), }; runner->Run("zip",szManifestDir, args); runner->Wait(); return CUtlString("../%s.ipa", manifest.m_szPackageName.GetString()); } CUtlString CAppleTool::SignPackage( const char *szIpa, const char *szPassword ) { } IAppleTool *AppleTool() { static CAppleTool s_tool; return &s_tool; }