Merge pull request #90 from opencultureconsulting:felixlohmeier/delete-36
add delete command
This commit is contained in:
commit
3b56867f44
177
orcli
177
orcli
|
@ -35,6 +35,7 @@ orcli_usage() {
|
||||||
# :command.usage_commands
|
# :command.usage_commands
|
||||||
printf "Commands:\n"
|
printf "Commands:\n"
|
||||||
echo " completions Generate bash completions"
|
echo " completions Generate bash completions"
|
||||||
|
echo " delete delete OpenRefine project"
|
||||||
echo " import commands to create OpenRefine projects from files or URLs"
|
echo " import commands to create OpenRefine projects from files or URLs"
|
||||||
echo " list list projects on OpenRefine server"
|
echo " list list projects on OpenRefine server"
|
||||||
echo " info show OpenRefine project's metadata"
|
echo " info show OpenRefine project's metadata"
|
||||||
|
@ -116,6 +117,55 @@ orcli_completions_usage() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# :command.usage
|
||||||
|
orcli_delete_usage() {
|
||||||
|
if [[ -n $long_usage ]]; then
|
||||||
|
printf "orcli delete - delete OpenRefine project\n"
|
||||||
|
echo
|
||||||
|
|
||||||
|
else
|
||||||
|
printf "orcli delete - delete OpenRefine project\n"
|
||||||
|
echo
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "Usage:\n"
|
||||||
|
printf " orcli delete PROJECT [OPTIONS]\n"
|
||||||
|
printf " orcli delete --help | -h\n"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# :command.long_usage
|
||||||
|
if [[ -n $long_usage ]]; then
|
||||||
|
printf "Options:\n"
|
||||||
|
|
||||||
|
# :command.usage_fixed_flags
|
||||||
|
echo " --help, -h"
|
||||||
|
printf " Show this help\n"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# :command.usage_flags
|
||||||
|
# :flag.usage
|
||||||
|
echo " --quiet, -q"
|
||||||
|
printf " suppress log output, print errors only\n"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# :command.usage_args
|
||||||
|
printf "Arguments:\n"
|
||||||
|
|
||||||
|
# :argument.usage
|
||||||
|
echo " PROJECT"
|
||||||
|
printf " project name or id\n"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# :command.usage_examples
|
||||||
|
printf "Examples:\n"
|
||||||
|
printf " orcli delete \"duplicates\"\n"
|
||||||
|
printf " orcli delete 1234567890123\n"
|
||||||
|
echo
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# :command.usage
|
# :command.usage
|
||||||
orcli_import_usage() {
|
orcli_import_usage() {
|
||||||
if [[ -n $long_usage ]]; then
|
if [[ -n $long_usage ]]; then
|
||||||
|
@ -678,9 +728,7 @@ function get_csrf() {
|
||||||
# get project id (derived from project name if needed)
|
# get project id (derived from project name if needed)
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
function get_id() {
|
function get_id() {
|
||||||
local response
|
local response projects ids
|
||||||
local projects
|
|
||||||
local ids
|
|
||||||
if ! response="$(curl -fs --get "${OPENREFINE_URL}/command/core/get-all-project-metadata")"; then
|
if ! response="$(curl -fs --get "${OPENREFINE_URL}/command/core/get-all-project-metadata")"; then
|
||||||
error "no OpenRefine reachable/running at ${OPENREFINE_URL}"
|
error "no OpenRefine reachable/running at ${OPENREFINE_URL}"
|
||||||
fi
|
fi
|
||||||
|
@ -694,6 +742,17 @@ function get_id() {
|
||||||
echo "$ids"
|
echo "$ids"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_ids() {
|
||||||
|
local response projects ids
|
||||||
|
if ! response="$(curl -fs --get "${OPENREFINE_URL}/command/core/get-all-project-metadata")"; then
|
||||||
|
error "no OpenRefine reachable/running at ${OPENREFINE_URL}"
|
||||||
|
fi
|
||||||
|
if ! projects="$(echo "$response" | jq -r '.projects | keys[] as $k | "\($k):\(.[$k] | .name)"' | grep -e ":$1$" -e "^$1:")"; then
|
||||||
|
error "project $1 not found"
|
||||||
|
fi
|
||||||
|
echo "$projects" | cut -d : -f 1
|
||||||
|
}
|
||||||
|
|
||||||
# src/lib/init_import.sh
|
# src/lib/init_import.sh
|
||||||
# common import tasks to support multiple files and URLs
|
# common import tasks to support multiple files and URLs
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
|
@ -774,7 +833,7 @@ EOF
|
||||||
function error() {
|
function error() {
|
||||||
echo >&2 "[$(date +'%Y-%m-%dT%H:%M:%S')] ERROR: $1"
|
echo >&2 "[$(date +'%Y-%m-%dT%H:%M:%S')] ERROR: $1"
|
||||||
shift
|
shift
|
||||||
for msg in "$@"; do echo >&2 " $msg"; done
|
for msg in "$@"; do echo >&2 "$msg"; done
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
function log() {
|
function log() {
|
||||||
|
@ -894,6 +953,10 @@ send_completions() {
|
||||||
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --quiet -h -q")" -- "$cur" )'
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --quiet -h -q")" -- "$cur" )'
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
echo $''
|
echo $''
|
||||||
|
echo $' \'delete\'*)'
|
||||||
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --quiet -h -q")" -- "$cur" )'
|
||||||
|
echo $' ;;'
|
||||||
|
echo $''
|
||||||
echo $' \'import\'*)'
|
echo $' \'import\'*)'
|
||||||
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help -h csv tsv")" -- "$cur" )'
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help -h csv tsv")" -- "$cur" )'
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
|
@ -919,7 +982,7 @@ send_completions() {
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
echo $''
|
echo $''
|
||||||
echo $' *)'
|
echo $' *)'
|
||||||
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --version -h -v completions export import info list run test transform")" -- "$cur" )'
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --version -h -v completions delete export import info list run test transform")" -- "$cur" )'
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
echo $''
|
echo $''
|
||||||
echo $' esac'
|
echo $' esac'
|
||||||
|
@ -940,6 +1003,31 @@ orcli_completions_command() {
|
||||||
send_completions
|
send_completions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# :command.function
|
||||||
|
orcli_delete_command() {
|
||||||
|
# src/delete_command.sh
|
||||||
|
# shellcheck shell=bash disable=SC2154
|
||||||
|
|
||||||
|
# get project ids
|
||||||
|
projectids="$(get_ids "${args[project]}")"
|
||||||
|
|
||||||
|
# loop over multiple project ids
|
||||||
|
for projectid in ${projectids}; do
|
||||||
|
# get csrf token and post data
|
||||||
|
if response="$(curl -fs --data "project=${projectid}" "${OPENREFINE_URL}/command/core/delete-project$(get_csrf)")"; then
|
||||||
|
response_code="$(jq -r '.code' <<<"$response")"
|
||||||
|
if [[ $response_code == "ok" ]]; then
|
||||||
|
log "deleted ${args[project]} (${projectid})"
|
||||||
|
else
|
||||||
|
error "deleting ${args[project]} failed!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
error "deleting ${args[project]} failed!"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# :command.function
|
# :command.function
|
||||||
orcli_import_csv_command() {
|
orcli_import_csv_command() {
|
||||||
# src/import_csv_command.sh
|
# src/import_csv_command.sh
|
||||||
|
@ -1419,6 +1507,13 @@ parse_requirements() {
|
||||||
shift $#
|
shift $#
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
delete)
|
||||||
|
action="delete"
|
||||||
|
shift
|
||||||
|
orcli_delete_parse_requirements "$@"
|
||||||
|
shift $#
|
||||||
|
;;
|
||||||
|
|
||||||
import)
|
import)
|
||||||
action="import"
|
action="import"
|
||||||
shift
|
shift
|
||||||
|
@ -1548,6 +1643,69 @@ orcli_completions_parse_requirements() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# :command.parse_requirements
|
||||||
|
orcli_delete_parse_requirements() {
|
||||||
|
# :command.fixed_flags_filter
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "${1:-}" in
|
||||||
|
--help | -h)
|
||||||
|
long_usage=yes
|
||||||
|
orcli_delete_usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# :command.command_filter
|
||||||
|
action="delete"
|
||||||
|
|
||||||
|
# :command.parse_requirements_while
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
key="$1"
|
||||||
|
case "$key" in
|
||||||
|
# :flag.case
|
||||||
|
--quiet | -q)
|
||||||
|
|
||||||
|
# :flag.case_no_arg
|
||||||
|
args[--quiet]=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
-?*)
|
||||||
|
printf "invalid option: %s\n" "$key" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# :command.parse_requirements_case
|
||||||
|
# :command.parse_requirements_case_simple
|
||||||
|
if [[ -z ${args[project]+x} ]]; then
|
||||||
|
|
||||||
|
args[project]=$1
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
printf "invalid argument: %s\n" "$key" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# :command.required_args_filter
|
||||||
|
if [[ -z ${args[project]+x} ]]; then
|
||||||
|
printf "missing required argument: PROJECT\nusage: orcli delete PROJECT [OPTIONS]\n" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# :command.parse_requirements
|
# :command.parse_requirements
|
||||||
orcli_import_parse_requirements() {
|
orcli_import_parse_requirements() {
|
||||||
# :command.fixed_flags_filter
|
# :command.fixed_flags_filter
|
||||||
|
@ -2344,6 +2502,15 @@ run() {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
"delete")
|
||||||
|
if [[ ${args[--help]:-} ]]; then
|
||||||
|
long_usage=yes
|
||||||
|
orcli_delete_usage
|
||||||
|
else
|
||||||
|
orcli_delete_command
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
"import")
|
"import")
|
||||||
if [[ ${args[--help]:-} ]]; then
|
if [[ ${args[--help]:-} ]]; then
|
||||||
long_usage=yes
|
long_usage=yes
|
||||||
|
|
|
@ -33,6 +33,20 @@ commands:
|
||||||
Generate bash completions
|
Generate bash completions
|
||||||
Usage: eval "\$(orcli completions)"
|
Usage: eval "\$(orcli completions)"
|
||||||
|
|
||||||
|
- name: delete
|
||||||
|
help: delete OpenRefine project
|
||||||
|
args:
|
||||||
|
- name: project
|
||||||
|
help: project name or id
|
||||||
|
required: true
|
||||||
|
flags:
|
||||||
|
- long: --quiet
|
||||||
|
short: -q
|
||||||
|
help: suppress log output, print errors only
|
||||||
|
examples:
|
||||||
|
- orcli delete "duplicates"
|
||||||
|
- orcli delete 1234567890123
|
||||||
|
|
||||||
- name: import
|
- name: import
|
||||||
help: commands to create OpenRefine projects from files or URLs
|
help: commands to create OpenRefine projects from files or URLs
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# shellcheck shell=bash disable=SC2154
|
||||||
|
|
||||||
|
# get project ids
|
||||||
|
projectids="$(get_ids "${args[project]}")"
|
||||||
|
|
||||||
|
# loop over multiple project ids
|
||||||
|
for projectid in ${projectids}; do
|
||||||
|
# get csrf token and post data
|
||||||
|
if response="$(curl -fs --data "project=${projectid}" "${OPENREFINE_URL}/command/core/delete-project$(get_csrf)")"; then
|
||||||
|
response_code="$(jq -r '.code' <<<"$response")"
|
||||||
|
if [[ $response_code == "ok" ]]; then
|
||||||
|
log "deleted ${args[project]} (${projectid})"
|
||||||
|
else
|
||||||
|
error "deleting ${args[project]} failed!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
error "deleting ${args[project]} failed!"
|
||||||
|
fi
|
||||||
|
done
|
|
@ -1,9 +1,7 @@
|
||||||
# get project id (derived from project name if needed)
|
# get project id (derived from project name if needed)
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
function get_id() {
|
function get_id() {
|
||||||
local response
|
local response projects ids
|
||||||
local projects
|
|
||||||
local ids
|
|
||||||
if ! response="$(curl -fs --get "${OPENREFINE_URL}/command/core/get-all-project-metadata")"; then
|
if ! response="$(curl -fs --get "${OPENREFINE_URL}/command/core/get-all-project-metadata")"; then
|
||||||
error "no OpenRefine reachable/running at ${OPENREFINE_URL}"
|
error "no OpenRefine reachable/running at ${OPENREFINE_URL}"
|
||||||
fi
|
fi
|
||||||
|
@ -16,3 +14,14 @@ function get_id() {
|
||||||
fi
|
fi
|
||||||
echo "$ids"
|
echo "$ids"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_ids() {
|
||||||
|
local response projects ids
|
||||||
|
if ! response="$(curl -fs --get "${OPENREFINE_URL}/command/core/get-all-project-metadata")"; then
|
||||||
|
error "no OpenRefine reachable/running at ${OPENREFINE_URL}"
|
||||||
|
fi
|
||||||
|
if ! projects="$(echo "$response" | jq -r '.projects | keys[] as $k | "\($k):\(.[$k] | .name)"' | grep -e ":$1$" -e "^$1:")"; then
|
||||||
|
error "project $1 not found"
|
||||||
|
fi
|
||||||
|
echo "$projects" | cut -d : -f 1
|
||||||
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
function error() {
|
function error() {
|
||||||
echo >&2 "[$(date +'%Y-%m-%dT%H:%M:%S')] ERROR: $1"
|
echo >&2 "[$(date +'%Y-%m-%dT%H:%M:%S')] ERROR: $1"
|
||||||
shift
|
shift
|
||||||
for msg in "$@"; do echo >&2 " $msg"; done
|
for msg in "$@"; do echo >&2 "$msg"; done
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
function log() {
|
function log() {
|
||||||
|
|
|
@ -50,6 +50,10 @@ send_completions() {
|
||||||
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --quiet -h -q")" -- "$cur" )'
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --quiet -h -q")" -- "$cur" )'
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
echo $''
|
echo $''
|
||||||
|
echo $' \'delete\'*)'
|
||||||
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --quiet -h -q")" -- "$cur" )'
|
||||||
|
echo $' ;;'
|
||||||
|
echo $''
|
||||||
echo $' \'import\'*)'
|
echo $' \'import\'*)'
|
||||||
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help -h csv tsv")" -- "$cur" )'
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help -h csv tsv")" -- "$cur" )'
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
|
@ -75,7 +79,7 @@ send_completions() {
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
echo $''
|
echo $''
|
||||||
echo $' *)'
|
echo $' *)'
|
||||||
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --version -h -v completions export import info list run test transform")" -- "$cur" )'
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_orcli_completions_filter "--help --version -h -v completions delete export import info list run test transform")" -- "$cur" )'
|
||||||
echo $' ;;'
|
echo $' ;;'
|
||||||
echo $''
|
echo $''
|
||||||
echo $' esac'
|
echo $' esac'
|
||||||
|
|
Loading…
Reference in New Issue