Add completion scripts. (#166)
This commit is contained in:
parent
5f51d68c82
commit
4e40a1979e
|
@ -177,7 +177,6 @@ fabric.properties
|
||||||
.idea
|
.idea
|
||||||
*/local_testing.toml
|
*/local_testing.toml
|
||||||
.direnv/
|
.direnv/
|
||||||
etc/
|
|
||||||
var/
|
var/
|
||||||
docker-image.tar.gz
|
docker-image.tar.gz
|
||||||
.guix-root
|
.guix-root
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
(name 'guix)
|
(name 'guix)
|
||||||
(url "https://git.savannah.gnu.org/git/guix.git")
|
(url "https://git.savannah.gnu.org/git/guix.git")
|
||||||
(commit
|
(commit
|
||||||
"07f55a361e23152b48f34425f116a725cce39e48")
|
"72abf9b9b82d2f5f34b7d22b7aae6f2398336a93")
|
||||||
(introduction
|
(introduction
|
||||||
(make-channel-introduction
|
(make-channel-introduction
|
||||||
"afb9f2752315f131e4ddd44eba02eed403365085"
|
"afb9f2752315f131e4ddd44eba02eed403365085"
|
||||||
|
|
|
@ -246,28 +246,31 @@ simplify testing of asynchronous tornado applications.")
|
||||||
#:select? (git-predicate %source-dir)))
|
#:select? (git-predicate %source-dir)))
|
||||||
(build-system python-build-system)
|
(build-system python-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:phases
|
(list #:phases
|
||||||
(modify-phases %standard-phases
|
#~(modify-phases %standard-phases
|
||||||
(add-after 'unpack 'generate-setup.py
|
(add-after 'unpack 'generate-setup.py
|
||||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
(lambda _
|
||||||
;; This is a hack needed to get poetry's
|
;; This is a hack needed to get poetry's
|
||||||
;; setup.py.
|
;; setup.py.
|
||||||
(setenv "POETRY_VIRTUALENVS_CREATE" "false")
|
(setenv "POETRY_VIRTUALENVS_CREATE" "false")
|
||||||
(invoke "poetry" "build" "-f" "sdist")
|
(invoke "poetry" "build" "-f" "sdist")
|
||||||
(invoke "bash" "-c"
|
(invoke "bash" "-c"
|
||||||
"tar --wildcards -xvf dist/*-`poetry version -s`.tar.gz -O '*/setup.py' > setup.py")))
|
"tar --wildcards -xvf dist/*-`poetry version -s`.tar.gz -O '*/setup.py' > setup.py")))
|
||||||
(replace 'check
|
(replace 'check
|
||||||
(lambda* (#:key tests? inputs outputs #:allow-other-keys)
|
(lambda* (#:key tests? #:allow-other-keys)
|
||||||
(when tests?
|
(when tests?
|
||||||
(setenv "POETRY_VIRTUALENVS_CREATE" "false")
|
(setenv "POETRY_VIRTUALENVS_CREATE" "false")
|
||||||
(invoke "./scripts/run_pipeline_tests.sh"))))
|
(invoke "./scripts/run_pipeline_tests.sh"))))
|
||||||
(add-before 'sanity-check 'set-dummy-config
|
(add-after 'install 'install-completion-scripts
|
||||||
(lambda _
|
(lambda _
|
||||||
;; This is needed to prevent the tool from
|
(copy-recursively "etc" (string-append #$output "/etc"))))
|
||||||
;; crashing at startup during the sanity check.
|
(add-before 'sanity-check 'set-dummy-config
|
||||||
(setenv "SECRETS_FOR_DYNACONF"
|
(lambda _
|
||||||
(string-append (getcwd)
|
;; This is needed to prevent the tool from
|
||||||
"/mobilizon_reshare/.secrets.toml")))))))
|
;; crashing at startup during the sanity check.
|
||||||
|
(setenv "SECRETS_FOR_DYNACONF"
|
||||||
|
(string-append (getcwd)
|
||||||
|
"/mobilizon_reshare/.secrets.toml")))))))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
(list python-iniconfig
|
(list python-iniconfig
|
||||||
poetry
|
poetry
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
_mobilizon_reshare_completion() {
|
||||||
|
local IFS=$'\n'
|
||||||
|
local response
|
||||||
|
|
||||||
|
response=$(env COMP_WORDS="${COMP_WORDS[*]}" COMP_CWORD=$COMP_CWORD _MOBILIZON_RESHARE_COMPLETE=bash_complete $1)
|
||||||
|
|
||||||
|
for completion in $response; do
|
||||||
|
IFS=',' read type value <<< "$completion"
|
||||||
|
|
||||||
|
if [[ $type == 'dir' ]]; then
|
||||||
|
COMPREPLY=()
|
||||||
|
compopt -o dirnames
|
||||||
|
elif [[ $type == 'file' ]]; then
|
||||||
|
COMPREPLY=()
|
||||||
|
compopt -o default
|
||||||
|
elif [[ $type == 'plain' ]]; then
|
||||||
|
COMPREPLY+=($value)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
_mobilizon_reshare_completion_setup() {
|
||||||
|
complete -o nosort -F _mobilizon_reshare_completion mobilizon-reshare
|
||||||
|
}
|
||||||
|
|
||||||
|
_mobilizon_reshare_completion_setup;
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
function _mobilizon_reshare_completion;
|
||||||
|
set -l response;
|
||||||
|
|
||||||
|
for value in (env _MOBILIZON_RESHARE_COMPLETE=fish_complete COMP_WORDS=(commandline -cp) COMP_CWORD=(commandline -t) mobilizon-reshare);
|
||||||
|
set response $response $value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
for completion in $response;
|
||||||
|
set -l metadata (string split "," $completion);
|
||||||
|
|
||||||
|
if test $metadata[1] = "dir";
|
||||||
|
__fish_complete_directories $metadata[2];
|
||||||
|
else if test $metadata[1] = "file";
|
||||||
|
__fish_complete_path $metadata[2];
|
||||||
|
else if test $metadata[1] = "plain";
|
||||||
|
echo $metadata[2];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
complete --no-files --command mobilizon-reshare --arguments "(_mobilizon_reshare_completion)";
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
#compdef mobilizon-reshare
|
||||||
|
|
||||||
|
_mobilizon_reshare_completion() {
|
||||||
|
local -a completions
|
||||||
|
local -a completions_with_descriptions
|
||||||
|
local -a response
|
||||||
|
(( ! $+commands[mobilizon-reshare] )) && return 1
|
||||||
|
|
||||||
|
response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) _MOBILIZON_RESHARE_COMPLETE=zsh_complete mobilizon-reshare)}")
|
||||||
|
|
||||||
|
for type key descr in ${response}; do
|
||||||
|
if [[ "$type" == "plain" ]]; then
|
||||||
|
if [[ "$descr" == "_" ]]; then
|
||||||
|
completions+=("$key")
|
||||||
|
else
|
||||||
|
completions_with_descriptions+=("$key":"$descr")
|
||||||
|
fi
|
||||||
|
elif [[ "$type" == "dir" ]]; then
|
||||||
|
_path_files -/
|
||||||
|
elif [[ "$type" == "file" ]]; then
|
||||||
|
_path_files -f
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$completions_with_descriptions" ]; then
|
||||||
|
_describe -V unsorted completions_with_descriptions -U
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$completions" ]; then
|
||||||
|
compadd -U -V unsorted -a completions
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
compdef _mobilizon_reshare_completion mobilizon-reshare;
|
||||||
|
|
24
manifest.scm
24
manifest.scm
|
@ -1,14 +1,34 @@
|
||||||
(define-module (manifest)
|
(define-module (manifest)
|
||||||
#:use-module (docker mobilizon-reshare)
|
#:use-module (docker mobilizon-reshare)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
|
#:use-module (guix channels)
|
||||||
|
#:use-module (guix inferior)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix profiles))
|
#:use-module (guix profiles)
|
||||||
|
#:use-module (srfi srfi-1))
|
||||||
|
|
||||||
|
(define channels
|
||||||
|
;; This is the old revision from which we want to
|
||||||
|
;; extract docker-compose.
|
||||||
|
(list (channel
|
||||||
|
(name 'guix)
|
||||||
|
(url "https://git.savannah.gnu.org/git/guix.git")
|
||||||
|
(commit
|
||||||
|
"07f55a361e23152b48f34425f116a725cce39e48"))))
|
||||||
|
|
||||||
|
(define inferior
|
||||||
|
;; An inferior representing the above revision.
|
||||||
|
(inferior-for-channels channels))
|
||||||
|
|
||||||
|
;; Now create a manifest with the current packages
|
||||||
|
;; and the old "docker-compose" package.
|
||||||
(packages->manifest
|
(packages->manifest
|
||||||
(append
|
(append
|
||||||
|
;; docker-compose fails to build on current master, hence this hack.
|
||||||
|
(list (first (lookup-inferior-packages inferior "docker-compose")))
|
||||||
(map cadr (package-direct-inputs mobilizon-reshare.git))
|
(map cadr (package-direct-inputs mobilizon-reshare.git))
|
||||||
(map specification->package+output
|
(map specification->package+output
|
||||||
'("git-cal" "man-db" "texinfo"
|
'("git-cal" "man-db" "texinfo"
|
||||||
"python-pre-commit" "cloc"
|
"python-pre-commit" "cloc"
|
||||||
"ripgrep" "python-semver"
|
"ripgrep" "python-semver"
|
||||||
"fd" "docker-compose"))))
|
"fd"))))
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
export _MOBILIZON_RESHARE_COMPLETE=bash_source
|
||||||
|
scripts/mobilizon-reshare.sh > etc/bash_completion.d/mobilizon-reshare-completion.bash
|
||||||
|
|
||||||
|
export _MOBILIZON_RESHARE_COMPLETE=fish_source
|
||||||
|
scripts/mobilizon-reshare.sh > etc/fish/completions/mobilizon-reshare.fish
|
||||||
|
|
||||||
|
export _MOBILIZON_RESHARE_COMPLETE=zsh_source
|
||||||
|
scripts/mobilizon-reshare.sh > etc/zsh/mobilizon-reshare-completion.zsh
|
|
@ -6,6 +6,7 @@ myself="$(basename "$0")"
|
||||||
version_file="$(pwd)/mobilizon_reshare/VERSION"
|
version_file="$(pwd)/mobilizon_reshare/VERSION"
|
||||||
pyproject_toml="$(pwd)/pyproject.toml"
|
pyproject_toml="$(pwd)/pyproject.toml"
|
||||||
docker_compose_yml="$(pwd)/docker-compose.yml"
|
docker_compose_yml="$(pwd)/docker-compose.yml"
|
||||||
|
completion_dir="$(pwd)/etc"
|
||||||
current_branch="$(git rev-parse --abbrev-ref HEAD)"
|
current_branch="$(git rev-parse --abbrev-ref HEAD)"
|
||||||
current_commit="$(git log -1 --format='%H')"
|
current_commit="$(git log -1 --format='%H')"
|
||||||
dryrun=0
|
dryrun=0
|
||||||
|
@ -74,19 +75,26 @@ current-version() {
|
||||||
release-new-version() {
|
release-new-version() {
|
||||||
current="$(current-version)"
|
current="$(current-version)"
|
||||||
next="$(pysemver bump "$1" "$current")"
|
next="$(pysemver bump "$1" "$current")"
|
||||||
echo -e "\nRELEASING VERSION: ${next}"
|
echo "RELEASING VERSION: ${next}"
|
||||||
|
|
||||||
[ "$verbose" = "1" ] && echo "Updating $version_file"
|
[ "$verbose" = "1" ] && echo "Updating ${version_file}..."
|
||||||
[ "$dryrun" = "0" ] && printf "%s" "$next" >"$version_file"
|
[ "$dryrun" = "0" ] && printf "%s" "$next" >"$version_file"
|
||||||
|
|
||||||
[ "$verbose" = "1" ] && echo "Updating $pyproject_toml"
|
[ "$verbose" = "1" ] && echo "Updating ${pyproject_toml}..."
|
||||||
[ "$dryrun" = "0" ] && sed -i -E "s/version.*=.*\"${current}\"$/version = \"${next}\"/" "$pyproject_toml"
|
[ "$dryrun" = "0" ] && sed -i -E "s/version.*=.*\"${current}\"$/version = \"${next}\"/" "$pyproject_toml"
|
||||||
|
|
||||||
[ "$verbose" = "1" ] && echo "Updating $docker_compose_yml"
|
[ "$verbose" = "1" ] && echo "Updating ${docker_compose_yml}..."
|
||||||
[ "$dryrun" = "0" ] && sed -i "s/${current}/${next}/" "$docker_compose_yml"
|
[ "$dryrun" = "0" ] && sed -i "s/${current}/${next}/" "$docker_compose_yml"
|
||||||
|
|
||||||
[ "$verbose" = "1" ] && echo "Committing ${pyproject_toml}, ${docker_compose_yml} and ${version_file}"
|
[ "$verbose" = "1" ] && echo "Generating completion scripts in ${completion_dir}..."
|
||||||
[ "$dryrun" = "0" ] && git add "$docker_compose_yml" "${pyproject_toml}" "${version_file}" && git commit -m "Release v${next}."
|
[ "$dryrun" = "0" ] && scripts/generate_completion_scripts.sh
|
||||||
|
|
||||||
|
[ "$verbose" = "1" ] && echo "Committing ${pyproject_toml}, ${completion_dir}, ${docker_compose_yml} and ${version_file}"
|
||||||
|
[ "$dryrun" = "0" ] && git add "$docker_compose_yml" \
|
||||||
|
"${pyproject_toml}" \
|
||||||
|
"${completion_dir}"
|
||||||
|
"${version_file}" && \
|
||||||
|
git commit -m "Release v${next}."
|
||||||
|
|
||||||
[ "$verbose" = "1" ] && echo "Tagging Git HEAD with v${next}"
|
[ "$verbose" = "1" ] && echo "Tagging Git HEAD with v${next}"
|
||||||
[ "$dryrun" = "0" ] && git tag "v${next}"
|
[ "$dryrun" = "0" ] && git tag "v${next}"
|
||||||
|
|
Loading…
Reference in New Issue