[session] cleanup hook / operation / entity edition api
Operation api
~~~~~~~~~~~~~
* commit_event killed, recently introduced postcommit_event is enough and has a better name
* kill SingleOperation class, it's a) currently never used b) superseeded by set_operation if needed.
Entity edition api
~~~~~~~~~~~~~~~~~~
edited_attributes turned into a special object holding edition specific attributes:
- attributes to be edited (simply mirrored in cw_attr_cache, actual values are there)
- former _cw_skip_security set (cw_edited) and querier_pending_relations
It has also been renamed to `cw_edited` on the way (it may also contains inlined relations)
The entity dict interface has been deprecated. One should explicitly use either
cw_attr_cache or cw_edited according to the need.
Also, there is now a control that we don't try to hi-jack edited attributes
once this has no more effect (eg modification have already been saved)
At last, _cw_set_defaults/cw_check internal methods have been moved to this
special object
Hook api
~~~~~~~~
hook.entity_oldnewvalue function now moved to a method of cw_edited object.
# -*- shell-script -*-
_ec_commands()
{
local commands
commands="$("$ec" listcommands 2>/dev/null)" || commands=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur"))
}
_ec()
{
local cur prev cmd cmd_index opts i
local ec="$1"
COMPREPLY=()
cur="$2"
prev="$3"
# searching for the command
# (first non-option argument that doesn't follow a global option that
# receives an argument)
for ((i=1; $i<=$COMP_CWORD; i++)); do
if [[ ${COMP_WORDS[i]} != -* ]]; then
cmd="${COMP_WORDS[i]}"
cmd_index=$i
break
fi
done
if [[ "$cur" == -* ]]; then
if [ -z "$cmd" ]; then
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '--help' -- "$cur"))
else
options="$("$ec" listcommands "$cmd" 2>/dev/null)" || commands=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options' -- "$cur"))
fi
return
fi
if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then
_ec_commands
return
fi
# try to generate completion candidates for whatever command the user typed
if _ec_command_specific; then
return
fi
}
_ec_command_specific()
{
if [ "$(type -t "_ec_cmd_$cmd")" = function ]; then
"_ec_cmd_$cmd"
return 0
fi
case "$cmd" in
client)
if [ "$prev" == "-b" ] || [ "$prev" == "--batch" ]; then
COMPREPLY=( $( compgen -o filenames -G "$cur*" ) )
return
fi
options="$("$ec" listcommands "$cmd" 2>/dev/null)" || options=""
instances="$("$ec" listinstances 2>/dev/null)" || instances=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $instances' -- "$cur"))
;;
db-dump)
if [ "$prev" == "-o" ] || [ "$prev" == "--output" ]; then
COMPREPLY=( $( compgen -o filenames -G "$cur*" ) )
return
fi
options="$("$ec" listcommands "$cmd" 2>/dev/null)" || options=""
instances="$("$ec" listinstances 2>/dev/null)" || instances=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $instances' -- "$cur"))
;;
# commands with template as argument
i18ncube)
cubes="$("$ec" listcubes 2>/dev/null)" || cubes=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $cubes' -- "$cur"))
;;
# generic commands with instance as argument
start|stop|reload|restart|upgrade|start-repository|db-create|db-init|db-check|db-grant-user)
options="$("$ec" listcommands "$cmd" 2>/dev/null)" || options=""
instances="$("$ec" listinstances 2>/dev/null)" || instances=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $instances' -- "$cur"))
;;
# generic commands without argument
list|newtemplate|i18ncubicweb|live-server)
options="$("$ec" listcommands "$cmd" 2>/dev/null)" || options=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $instances' -- "$cur"))
;;
# generic commands without option
shell|i18ninstance|delete|status|schema-sync)
instances="$("$ec" listinstances 2>/dev/null)" || instances=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $instances' -- "$cur"))
;;
# XXX should do better
create)
options="$("$ec" listcommands "$cmd" 2>/dev/null)" || options=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $instances' -- "$cur"))
;;
db-copy,db-restore,mboximport)
instances="$("$ec" listinstances 2>/dev/null)" || instances=""
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$options $instances' -- "$cur"))
;;
*)
return 1
;;
esac
return 0
}
complete -o bashdefault -o default -F _ec cubicweb-ctl 2>/dev/null \
|| complete -o default -F _ec cubicweb-ctl