Someone asked a while back about programmers that can program multiple chips / simulate multiple programmers.
One such example is lpclink2 - which can take different firmware.
I mentioned a project that started very promising but has been abandoned now - versaloon.
You can still find firmware, drivers and schematics of it online. It can program many of the popular chips and function like an openocd device. The simplest implementation requires a STM32 + 1 resistor, and can be easily made into a usb thumb-drive case.
You will find lots of similarities between versaloon, st link v2 and jlink v9.