mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-04-02 09:05:08 +00:00
Remove tools from a release
It doesn't contain anything generally useful anymore.
This commit is contained in:
parent
203788c746
commit
a6dda8d31a
1
.github/workflows/release-nightly.yml
vendored
1
.github/workflows/release-nightly.yml
vendored
@ -42,7 +42,6 @@ jobs:
|
|||||||
modules/restserver/target/universal/docspell-restserver-${{ env.DOCSPELL_VERSION }}.zip
|
modules/restserver/target/universal/docspell-restserver-${{ env.DOCSPELL_VERSION }}.zip
|
||||||
modules/joex/target/docspell-joex_${{ env.DOCSPELL_VERSION }}_all.deb
|
modules/joex/target/docspell-joex_${{ env.DOCSPELL_VERSION }}_all.deb
|
||||||
modules/joex/target/universal/docspell-joex-${{ env.DOCSPELL_VERSION }}.zip
|
modules/joex/target/universal/docspell-joex-${{ env.DOCSPELL_VERSION }}.zip
|
||||||
tools/target/docspell-tools-${{ env.DOCSPELL_VERSION }}.zip
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1
|
uses: docker/setup-qemu-action@v1
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
|
1
.github/workflows/release.yml
vendored
1
.github/workflows/release.yml
vendored
@ -42,4 +42,3 @@ jobs:
|
|||||||
modules/restserver/target/universal/docspell-restserver-${{ env.DOCSPELL_VERSION }}.zip
|
modules/restserver/target/universal/docspell-restserver-${{ env.DOCSPELL_VERSION }}.zip
|
||||||
modules/joex/target/docspell-joex_${{ env.DOCSPELL_VERSION }}_all.deb
|
modules/joex/target/docspell-joex_${{ env.DOCSPELL_VERSION }}_all.deb
|
||||||
modules/joex/target/universal/docspell-joex-${{ env.DOCSPELL_VERSION }}.zip
|
modules/joex/target/universal/docspell-joex-${{ env.DOCSPELL_VERSION }}.zip
|
||||||
tools/target/docspell-tools-${{ env.DOCSPELL_VERSION }}.zip
|
|
||||||
|
@ -1038,7 +1038,7 @@ addCommandAlias(
|
|||||||
addCommandAlias("make-zip", ";restserver/Universal/packageBin ;joex/Universal/packageBin")
|
addCommandAlias("make-zip", ";restserver/Universal/packageBin ;joex/Universal/packageBin")
|
||||||
addCommandAlias("make-deb", ";restserver/Debian/packageBin ;joex/Debian/packageBin")
|
addCommandAlias("make-deb", ";restserver/Debian/packageBin ;joex/Debian/packageBin")
|
||||||
addCommandAlias("make-tools", ";root/toolsPackage")
|
addCommandAlias("make-tools", ";root/toolsPackage")
|
||||||
addCommandAlias("make-pkg", ";clean ;make ;make-zip ;make-deb ;make-tools")
|
addCommandAlias("make-pkg", ";clean ;make ;make-zip ;make-deb")
|
||||||
|
|
||||||
addCommandAlias("ci", "make; lint; test")
|
addCommandAlias("ci", "make; lint; test")
|
||||||
addCommandAlias(
|
addCommandAlias(
|
||||||
|
5
tools/README.md
Normal file
5
tools/README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Tools
|
||||||
|
|
||||||
|
This is a place for some arbitrary tools. These are not packaged
|
||||||
|
within a release and are also not tested regularily and may be out of
|
||||||
|
date. But they may serve as input for ideas or as a starting point.
|
22
tools/start-local/README.md
Normal file
22
tools/start-local/README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Start docspell quickly locally
|
||||||
|
|
||||||
|
This is a bash script to quickly run docspell on your local machine.
|
||||||
|
It requires [tmux](https://github.com/tmux/tmux) to be installed (and
|
||||||
|
some others: curl, unzip etc).
|
||||||
|
|
||||||
|
Any prerequisites are to be taken care of by yourself. Fulltext search
|
||||||
|
is disabled, unless a environment variable `DOCSPELL_SOLR_URL` exists.
|
||||||
|
|
||||||
|
A H2 database is used by default, unless a env variable `DOCSPELL_DB`
|
||||||
|
exists.
|
||||||
|
|
||||||
|
It then creates a configuration file, downloads docspell and starts
|
||||||
|
restserver and joex instances as given:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
❯ # start one joex and one restserver, use version 0.32.0
|
||||||
|
❯ ./start-local.sh 0.32.0 1 1
|
||||||
|
|
||||||
|
❯ # start two joex and one restserver, use a nightly version
|
||||||
|
❯ ./start-local.sh 0.33.0-SNAPSHOT 1 2
|
||||||
|
```
|
243
tools/start-local/start-local.sh
Executable file
243
tools/start-local/start-local.sh
Executable file
@ -0,0 +1,243 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Start some number of docspell nodes. The database can be given as
|
||||||
|
# env variable, if not a h2 database is used. SOLR is only enabled, if
|
||||||
|
# a SOLR_URL env variable is available.
|
||||||
|
#
|
||||||
|
# You must have tmux installed as this is used to host the processes.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ds_version=${1:-0.32.0-SNAPSHOT}
|
||||||
|
rest_nodes=${2:-1}
|
||||||
|
joex_nodes=${3:-1}
|
||||||
|
|
||||||
|
rest_start_port=7880
|
||||||
|
joex_start_port=8800
|
||||||
|
|
||||||
|
tmux_session_name="docspell-cluster"
|
||||||
|
|
||||||
|
run_root=${DOCSPELL_CLUSTER_ROOT:-/tmp/docspell-cluster}
|
||||||
|
|
||||||
|
default_db_url="jdbc:h2://$run_root/db/docspell-cluster.db;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;AUTO_SERVER=TRUE"
|
||||||
|
db_url="${DOCSPELL_DB:-$default_db_url}"
|
||||||
|
db_user="${DOCSPELL_DB_USER:-dev}"
|
||||||
|
db_pass="${DOCSPELL_DB_USER:-dev}"
|
||||||
|
solr_url="${DOCSPELL_SOLR_URL:-none}"
|
||||||
|
|
||||||
|
prepare_solr_config() {
|
||||||
|
local enable=
|
||||||
|
if [ "$solr_url" = "none" ]; then
|
||||||
|
solr_url="http://localhost"
|
||||||
|
enable="false"
|
||||||
|
else
|
||||||
|
enable="true"
|
||||||
|
fi
|
||||||
|
echo "enabled = $enable"
|
||||||
|
echo "solr.url = \"$solr_url\""
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_rest_config() {
|
||||||
|
port="$1"
|
||||||
|
app_id="$2"
|
||||||
|
file="$3"
|
||||||
|
|
||||||
|
cat >>"$file" <<-EOF
|
||||||
|
docspell.server {
|
||||||
|
app-id = "$app_id"
|
||||||
|
base-url = "http://localhost:$port"
|
||||||
|
bind.address = "0.0.0.0"
|
||||||
|
bind.port = $port
|
||||||
|
full-text-search = {
|
||||||
|
$(prepare_solr_config)
|
||||||
|
}
|
||||||
|
auth.server-secret = "hex:caffee"
|
||||||
|
backend {
|
||||||
|
mail-debug = false
|
||||||
|
jdbc {
|
||||||
|
url = "${db_url}"
|
||||||
|
user = "${db_user}"
|
||||||
|
password = "${db_pass}"
|
||||||
|
}
|
||||||
|
signup {
|
||||||
|
mode = open
|
||||||
|
new-invite-password = "test"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
admin-endpoint {
|
||||||
|
secret = "123"
|
||||||
|
}
|
||||||
|
integration-endpoint {
|
||||||
|
enabled = true
|
||||||
|
http-header = {
|
||||||
|
enabled = true
|
||||||
|
header-value = "test123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_joex_config() {
|
||||||
|
port="$1"
|
||||||
|
app_id="$2"
|
||||||
|
file="$3"
|
||||||
|
|
||||||
|
cat >> "$file" <<-EOF
|
||||||
|
docspell.joex {
|
||||||
|
app-id = "$app_id"
|
||||||
|
base-url = "http://localhost:$port"
|
||||||
|
bind.address = "0.0.0.0"
|
||||||
|
bind.port = $port
|
||||||
|
full-text-search = {
|
||||||
|
$(prepare_solr_config)
|
||||||
|
}
|
||||||
|
mail-debug = false
|
||||||
|
extraction {
|
||||||
|
preview.dpi = 64
|
||||||
|
}
|
||||||
|
text-analysis {
|
||||||
|
nlp {
|
||||||
|
mode = full
|
||||||
|
clear-interval = "30 seconds"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
jdbc {
|
||||||
|
url = "${db_url}"
|
||||||
|
user = "${db_user}"
|
||||||
|
password = "${db_pass}"
|
||||||
|
}
|
||||||
|
scheduler {
|
||||||
|
pool-size = 1
|
||||||
|
wakeup-period = "10 minutes"
|
||||||
|
retries = 3
|
||||||
|
retry-delay = "10 seconds"
|
||||||
|
}
|
||||||
|
house-keeping {
|
||||||
|
schedule = "*-*-* 01:00:00"
|
||||||
|
cleanup-invites = {
|
||||||
|
older-than = "10 days"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#convert.ocrmypdf.command.program = "/some/path/bin/ocrmypdf"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_root() {
|
||||||
|
rm -rf "$run_root/work"
|
||||||
|
mkdir -p "$run_root"/{db,work,pkg}
|
||||||
|
}
|
||||||
|
|
||||||
|
get_session() {
|
||||||
|
set +e
|
||||||
|
session=$(tmux list-sessions | grep "$tmux_session_name" | cut -d':' -f1 | head -n1)
|
||||||
|
echo $session
|
||||||
|
set -e
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_no_session() {
|
||||||
|
local session=$(get_session)
|
||||||
|
if [ -n "$session" ]; then
|
||||||
|
echo "A tmux session already exists. Please stop this first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_project() {
|
||||||
|
local project="$1"
|
||||||
|
local number="$2"
|
||||||
|
local app_id="$project$number"
|
||||||
|
local wdir="$run_root/work/$project-$number"
|
||||||
|
mkdir -p "$wdir"
|
||||||
|
case "$project" in
|
||||||
|
"restserver")
|
||||||
|
local port=$(($rest_start_port + $number))
|
||||||
|
prepare_rest_config $port $app_id "$wdir/ds.conf"
|
||||||
|
;;
|
||||||
|
"joex")
|
||||||
|
local port=$(($joex_start_port + $number))
|
||||||
|
prepare_joex_config $port $app_id "$wdir/ds.conf"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown project: $project"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
download_zip() {
|
||||||
|
if [ -f "$run_root/pkg/joex.zip" ] && [ -f "$run_root/pkg/restserver.zip" ]; then
|
||||||
|
echo "Not downloading, files already exist"
|
||||||
|
else
|
||||||
|
echo "Downloading docspell..."
|
||||||
|
if [[ $ds_version == *SNAPSHOT ]]; then
|
||||||
|
curl -#Lo "$run_root/pkg/joex.zip" "https://github.com/eikek/docspell/releases/download/nightly/docspell-joex-${ds_version}.zip"
|
||||||
|
else
|
||||||
|
curl -#Lo "$run_root/pkg/joex.zip" "https://github.com/eikek/docspell/releases/download/v${ds_version}/docspell-joex-${ds_version}.zip"
|
||||||
|
fi
|
||||||
|
if [[ $ds_version == *SNAPSHOT ]]; then
|
||||||
|
curl -#Lo "$run_root/pkg/restserver.zip" "https://github.com/eikek/docspell/releases/download/nightly/docspell-restserver-${ds_version}.zip"
|
||||||
|
else
|
||||||
|
curl -#Lo "$run_root/pkg/restserver.zip" "https://github.com/eikek/docspell/releases/download/v${ds_version}/docspell-restserver-${ds_version}.zip"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Unzipping..."
|
||||||
|
rm -rf "$run_root/pkg"/docspell-joex-* "$run_root/pkg"/docspell-restserver-*
|
||||||
|
unzip -qq "$run_root/pkg/restserver.zip" -d "$run_root/pkg"
|
||||||
|
unzip -qq "$run_root/pkg/joex.zip" -d "$run_root/pkg"
|
||||||
|
}
|
||||||
|
|
||||||
|
start_project() {
|
||||||
|
local project="$1"
|
||||||
|
local number="$2"
|
||||||
|
|
||||||
|
local wdir="$run_root/work/$project-$number"
|
||||||
|
local cfgfile="$wdir/ds.conf"
|
||||||
|
local bindir=$(realpath "$run_root/pkg"/docspell-$project-*/bin)
|
||||||
|
local session=$(get_session)
|
||||||
|
local tempdir="$wdir/tmp"
|
||||||
|
mkdir -p "$tempdir"
|
||||||
|
|
||||||
|
if [ -z "$session" ]; then
|
||||||
|
echo "Starting in new session $project-$number..."
|
||||||
|
tmux new -d -s "$tmux_session_name" "cd $wdir && $bindir/docspell-$project -Djava.io.tmpdir=$tempdir -- $cfgfile"
|
||||||
|
else
|
||||||
|
echo "Starting $project-$number..."
|
||||||
|
tmux split-window -t "$tmux_session_name" "cd $wdir && $bindir/docspell-$project -Djava.io.tmpdir=$tempdir -- $cfgfile"
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
}
|
||||||
|
|
||||||
|
## === Main
|
||||||
|
|
||||||
|
assert_no_session
|
||||||
|
|
||||||
|
echo "Version: $ds_version"
|
||||||
|
echo "Restserver nodes: $rest_nodes"
|
||||||
|
echo "Joex nodes: $joex_nodes"
|
||||||
|
echo "tmux session: $tmux_session_name"
|
||||||
|
echo "Working directory root: $run_root"
|
||||||
|
echo "Database: $db_url"
|
||||||
|
echo "SOLR: ${solr_url}"
|
||||||
|
echo "Continue?"
|
||||||
|
read
|
||||||
|
|
||||||
|
prepare_root
|
||||||
|
download_zip
|
||||||
|
|
||||||
|
n=0
|
||||||
|
max=$(($rest_nodes > $joex_nodes ? rest_nodes : joex_nodes))
|
||||||
|
while [ $n -lt $max ]
|
||||||
|
do
|
||||||
|
if [ $n -lt $rest_nodes ]; then
|
||||||
|
prepare_project "restserver" $n
|
||||||
|
start_project "restserver" $n
|
||||||
|
fi
|
||||||
|
if [ $n -lt $joex_nodes ]; then
|
||||||
|
prepare_project "joex" $n
|
||||||
|
start_project "joex" $n
|
||||||
|
fi
|
||||||
|
|
||||||
|
n=$(($n + 1))
|
||||||
|
done
|
@ -1,10 +1,92 @@
|
|||||||
# Webextension for Docspell
|
# Webextension for Docspell
|
||||||
|
|
||||||
Idea: Inside the browser click on a PDF and send it to docspell. It is
|
The idea is to click on a file in firefox and send it to docspell. It
|
||||||
downloaded in the context of your current page. Then handed to an
|
is downloaded in the context of your current page. Then handed to an
|
||||||
application that finally pushes it to docspell.
|
application that pushes it to docspell. There is a browser add-on
|
||||||
|
implementing this in `tools/webextension`. This add-on only works with
|
||||||
|
firefox.
|
||||||
|
|
||||||
Please see the
|
Note: the same can be achieved by running the `dsc watch` on some
|
||||||
[microsite](https://docspell.org/doc/tools) for
|
directory and let the browser (and other programs) download files in
|
||||||
instructions or navigate to the corresponding [markdown
|
this directory.
|
||||||
file](../../modules/microsite/src/main/tut/doc/tools.md#webextension-for-docspell).
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Installation is a bit complicated, since you need to install external
|
||||||
|
tools and the web extension. Both work together.
|
||||||
|
|
||||||
|
# Build it
|
||||||
|
|
||||||
|
In the source root, run `sbt make-tools`. After it completes, there is
|
||||||
|
a zip file in the `tools/target` folder. Inside this zip, you can find
|
||||||
|
the web extension.
|
||||||
|
|
||||||
|
# Install `dsc`
|
||||||
|
|
||||||
|
First copy the [dsc](@/docs/tools/cli.md) tool somewhere in your
|
||||||
|
`PATH`, maybe `/usr/local/bin`.
|
||||||
|
|
||||||
|
|
||||||
|
# Install the native part
|
||||||
|
|
||||||
|
Then install the "native" part of the web extension:
|
||||||
|
|
||||||
|
Copy or symlink the `native.py` script into some known location. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
ln -s ~/docspell-checkout/tools/webextension/native/native.py /usr/local/share/docspell/native.py
|
||||||
|
```
|
||||||
|
|
||||||
|
Then copy the `app_manifest.json` to
|
||||||
|
`$HOME/.mozilla/native-messaging-hosts/docspell.json`. For example:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cp ~/docspell-checkout/tools/webextension/native/app_manifest.json ~/.mozilla/native-messaging-hosts/docspell.json
|
||||||
|
```
|
||||||
|
|
||||||
|
See
|
||||||
|
[here](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#manifest_location)
|
||||||
|
for details.
|
||||||
|
|
||||||
|
And you might want to modify this json file, so the path to the
|
||||||
|
`native.py` script is correct (it must be absolute).
|
||||||
|
|
||||||
|
If the `dsc` tool is in your `$PATH`, then this should work. You need
|
||||||
|
to provide a default source id in your `~/.config/dsc/config.toml` so
|
||||||
|
that the upload command can be used without further arguments.
|
||||||
|
|
||||||
|
Otherwise, edit the `native.py` script and change the path to the tool
|
||||||
|
and/or the arguments. Or create a file
|
||||||
|
`$HOME/.config/docspell/dsc.cmd` whose content is the path to the
|
||||||
|
`dsc` tool.
|
||||||
|
|
||||||
|
|
||||||
|
# Install the extension
|
||||||
|
|
||||||
|
An extension file can be build using the `make-xpi.sh` script. But
|
||||||
|
installing it in "standard" firefox won't work, because [Mozilla
|
||||||
|
requires extensions to be signed by
|
||||||
|
them](https://wiki.mozilla.org/Add-ons/Extension_Signing). This means
|
||||||
|
creating an account and going through some process…. So here are two
|
||||||
|
alternatives:
|
||||||
|
|
||||||
|
1. Open firefox and type `about:debugging` in the addressbar. Then
|
||||||
|
click on *'Load Temporary Add-on...'* and select the
|
||||||
|
`manifest.json` file. The extension is now installed. The downside
|
||||||
|
is, that the extension will be removed once firefox is closed.
|
||||||
|
2. Use Firefox ESR, which allows to install Add-ons not signed by
|
||||||
|
Mozilla. But it has to be configured: Open firefox and type
|
||||||
|
`about:config` in the address bar. Search for key
|
||||||
|
`xpinstall.signatures.required` and set it to `false`. This is
|
||||||
|
described on the last paragraph on [this
|
||||||
|
page](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox).
|
||||||
|
|
||||||
|
When you right click on a file link, there should be a context menu
|
||||||
|
entry *'Docspell Upload Helper'*. The add-on will download this file
|
||||||
|
using the browser and then send the file path to the `native.py`
|
||||||
|
script. This script will in turn call `dsc` which finally uploads it
|
||||||
|
to your configured URLs.
|
||||||
|
|
||||||
|
Open the Add-ons page (`Ctrl`+`Shift`+`A`), the new add-on should be
|
||||||
|
there.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user