Grind whole spices into powder and mix with cayenne and turmeric.
Fry onion in oil and butter until soft and slightly brown.
Add garlic, ginger, sugar, and spice mix, cooking for 3 minutes.
Stir in tomatoes, lime juice, coconut milk, bay leaves, and seasoning; simmer for 10 minutes.
Simmer snapper fillets in sauce for 10 minutes, turning once.
Wash rice until water is clear, soak for 7 minutes, and drain.
Aromatize cloves, cardamom, cinnamon, and bay leaf in oil for 3 minutes.
Stir in rice and 600ml boiling water, cover, and cook for 12 minutes.
Uncover rice and fluff with a fork.
Pulse flour, baking powder, salt, and butter in a food processor.
Mix in 75ml cold water to form dough and rest for 30 minutes.
Knead dough, divide into four balls, and roll into 23cm rounds.
Brush with oil, fold, re-roll into balls, and roll out again.
Heat a heavy frying pan or griddle over medium heat.
Cook each roti for 4 minutes, turning and brushing with oil frequently.
Clap cooked roti between palms several times to flake.
Keep roti warm in a towel until serving.
Serve the snapper curry with pilau rice and clap-hand roti.