// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.23; import {Script, console2} from "forge-std/Script.sol"; import { DappIndexer} from "src/DappIndexer.sol"; contract DappIndexerScript is Script { DappIndexer public dappIdxr; string[] public dappsURI; function setUp() public { dappIdxr = new DappIndexer(0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); console2.log("The Dapps Indexer contract address is: ", address(dappIdxr)); dappsURI = vm.envString("dapps", ' '); } // run is the entry point function run() public { // startBroadcast and stopBraodcast will let us execute transactions anything between them vm.startBroadcast(); // here we just need to deploy a new contractc bytes32 CID1; bytes32 CID2; (CID1, CID2) = stringToBytes32Pair(dappsURI[0]); // Add Dapp console2.log("-----Adding Dapp-----"); console2.log("Bytes32 first:"); console2.logBytes32(CID1); console2.log("Bytes32 second:"); console2.logBytes32(CID2); console2.log(Bytes32PairToString(CID1, CID2)); dappIdxr.addDapp(bytes32("Dapp01"), DappIndexer.PackedCID(CID1, CID2)); // retrive Dapp console2.log("-----retriving Dapp-----"); DappIndexer.PackedCID memory dapp1 = dappIdxr.getCID(bytes32("Dapp01")); console2.log("Bytes32 first:"); console2.logBytes32(dapp1.CID1); console2.log("Bytes32 second:"); console2.logBytes32(dapp1.CID2); console2.log(Bytes32PairToString(dapp1.CID1, dapp1.CID2)); vm.stopBroadcast(); } function Bytes32PairToString(bytes32 part1, bytes32 part2) public pure returns (string memory) { // Concatenate the two bytes32 variables bytes memory concatenatedBytes = abi.encodePacked(part1, part2); // Convert the concatenated bytes to a string string memory str = string(concatenatedBytes); return str; } function stringToBytes32Pair(string memory source) public pure returns (bytes32 part1, bytes32 part2) { bytes memory sourceBytes = bytes(source); require(sourceBytes.length <= 64, "String must be less than or equal to 64 bytes"); assembly { // Load the first 32 bytes of the string data part1 := mload(add(sourceBytes, 32)) // Load the second 32 bytes of the string data part2 := mload(add(sourceBytes, 64)) } } }