all(); \System\Diagnostics\Debug::WriteLine("Recovery Version: ".$recoveryManifest['version'], "RecoveryUpdateService"); } return $recoveryManifest['version']; } function getBootloaderUpdateManifest() { $recoveryManifest = new Config(__DIR__."/manifests/recovery.xml", new Xml); // Tweak to configuration to allow PeachPie to compile it as .NET // We do this because if we do it the normal way using $conf->get() it fails to display anything. $recoveryManifest = $recoveryManifest->all(); $buildDate = $recoveryManifest['build-date']; $version = $recoveryManifest['version']; $pinn_commit = $recoveryManifest['git']['pinn']['commit']; $rpi_userland_branch = $recoveryManifest['git']['rpi-userland']['branch']; $rpi_userland_commit = $recoveryManifest['git']['rpi-userland']['commit']; $rpi_firmware_branch = $recoveryManifest['git']['rpi-firmware']['branch']; $rpi_firmware_commit = $recoveryManifest['git']['rpi-firmware']['commit']; $kernel_branch = $recoveryManifest['git']['rpi-linux']['branch']; $kernel_commit = $recoveryManifest['git']['rpi-linux']['commit']; $buildData = <<all(); $recoveryFile = "images/recovery/".$recoveryManifest['version'].".zip"; return $recoveryFile; } function getRecoveryInstallerRepository() { $repositoryConfig = new Config(__DIR__.'/repository.xml', new Xml); $repositoryArray = array("os_list"=>[]); $i = 0; foreach($repositoryConfig['repository'] as $repository) { $repositoryArray['os_list'][$i] = [ 'description' => $repository['@attributes']['description'], 'download_size' => $repository['download-size'], 'group' => $repository['@attributes']['group'], 'icon' => $repository['icon'], 'marketing_info' => $repository['url']['marketing-info'], 'nominal_size' => $repository['nominal-size'], 'os_info' => $repository['url']['os-info'], 'os_name' => $repository['@attributes']['name'], 'partition_setup' => $repository['url']['partition-setup'], 'partition_info' => $repository['url']['partition-info'], 'release_date' => $repository['release-date'], 'supported_models' => $repository['supported-model'], 'supports_backup' => $repository['supports-backup'], 'tarballs' => $repository['url']['tarball'], 'version' => $repository['version'] ]; } return json_encode($repositoryArray, JSON_PRETTY_PRINT+JSON_UNESCAPED_SLASHES); } function getRecoveryInstallerRepositoryList() { // Generate repo_list.json file. } } class OSUpdateService { function getLatestVersionInformation($operatingSystem) { $osManifest = new Config("manifests/os/".$operatingSystem.".xml", new Xml); if(defined("PEACHPIE_VERSION")) { $osManifest = $osManifest->all(); \System\Diagnostics\Debug::write(json_encode($osManifest)."\r\n","OSUpdateService"); } $osResponse = array( "os-version" =>$osManifest['info']['version'], "release-date" => $osManifest['info']['release-date']); return $osResponse; } function getAvailableOSList() { $osmanifestlist = array(); $i = 0; $flags = \FilesystemIterator::SKIP_DOTS;// some flags to filter . and .. and follow symlinks $iterator = new \RecursiveDirectoryIterator(dirname('manifests/os/'), $flags);// create a simple recursive directory iterator $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);// make it a truly recursive iterator foreach($iterator as $fileinfo) { if($fileinfo->getExtension() == "xml") { if($fileinfo->getFilename() != "recovery") { $osmanifest = new Config($fileinfo->__toString(), new Xml); if(defined("PEACHPIE_VERSION")) { $osmanifest = $osmanifest->all(); } if(empty($osmanifest['info']['@attributes']['name'])) { break; } $osmanifestlist[$i]['name'] = $osmanifest['info']['@attributes']['name']; if(defined("PEACHPIE_VERSION")) \System\Diagnostics\Debug::writeLine($osmanifestlist[$i]['name']); $osmanifestlist[$i]['version'] = $osmanifest['info']['version']; $osmanifestlist[$i]['release-date'] = $osmanifest['info']['release-date']; $i++; } } } return $osmanifestlist; } }