See the source code of item::publish
item::publish__arg_parser
if { $revision_id eq "" } {
set revision_id [::content::item::get_latest_revision -item_id $item_id]
}
::content::item::set_live_revision -revision_id $revision_id -publish_status 'live'
It just calls content::item::set_live_revision BUT notice it uses single quotes around the publish status! Wow, that's a bug :)
I'll fix that in CVS, but you should most likely just use content::item::publish directly.