summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorNick White <git@njw.name>2024-02-06 08:17:24 +0000
committerNick White <git@njw.name>2024-02-06 15:11:22 +0000
commitd2399a7ce0af49098a065c48409d1512f37c7c21 (patch)
treebe8d15fd3631ca3a0fe6e1f76e8146abadc933ac /cmd
parentf9199fe32b894757bce1065ac99dec6a8ce65f89 (diff)
Fix selecting a custom training file in flatpak
This is done by copying any training to the temporary tesseract directory, and always using that as the TESSDIR. This works as it's writeable (unlike the /app/share directory that flatpak would otherwise work)
Diffstat (limited to 'cmd')
-rw-r--r--cmd/rescribe/gui.go8
-rw-r--r--cmd/rescribe/main.go32
-rw-r--r--cmd/rescribe/xyz.rescribe.rescribe.yml16
3 files changed, 43 insertions, 13 deletions
diff --git a/cmd/rescribe/gui.go b/cmd/rescribe/gui.go
index 8790f03..73f1db2 100644
--- a/cmd/rescribe/gui.go
+++ b/cmd/rescribe/gui.go
@@ -134,14 +134,18 @@ func trainingSelectOnChange(sel *widget.Select, parent fyne.Window) func(string)
newpath := filepath.Join(os.Getenv("TESSDATA_PREFIX"), name)
f, err := os.Create(newpath)
if err != nil {
- // TODO: surface error somewhere, prob with a dialog box
+ msg := fmt.Sprintf("Error creating temporary file to store custom training: %v\n", err)
+ dialog.ShowError(errors.New(msg), parent)
+ fmt.Fprintf(os.Stderr, msg)
sel.SetSelectedIndex(0)
return
}
defer f.Close()
_, err = io.Copy(f, uri)
if err != nil {
- // TODO: surface error somewhere, prob with a dialog box
+ msg := fmt.Sprintf("Error copying custom training to temporary file: %v\n", err)
+ dialog.ShowError(errors.New(msg), parent)
+ fmt.Fprintf(os.Stderr, msg)
sel.SetSelectedIndex(0)
return
}
diff --git a/cmd/rescribe/main.go b/cmd/rescribe/main.go
index b33a66c..f532678 100644
--- a/cmd/rescribe/main.go
+++ b/cmd/rescribe/main.go
@@ -241,11 +241,33 @@ These training files are included in rescribe, and are always available:
}
}
- // if trainingPath doesn't exist, set it to the embedded training instead
- _, err = os.Stat(trainingPath)
- if err != nil && !os.IsExist(err) {
- trainingPath = filepath.Base(trainingPath)
- trainingPath = filepath.Join(tessdatadir, trainingPath)
+ // copy training path to the tessdir directory, so that we can keep that a
+ // writeable space, which is needed opening other trainings in sandboxes
+ // like flatpak
+ in, err := os.Open(trainingPath)
+ trainingPath = filepath.Join(tessdatadir, filepath.Base(trainingPath))
+ if err != nil {
+ in, err = os.Open(trainingPath)
+ if err != nil {
+ log.Fatalf("Error opening training file %s: %v", trainingPath, err)
+ }
+ }
+ defer in.Close()
+ newPath := trainingPath + ".new"
+ out, err := os.Create(newPath)
+ if err != nil {
+ log.Fatalf("Error creating training file %s: %v", newPath, err)
+ }
+ defer out.Close()
+ _, err = io.Copy(out, in)
+ if err != nil {
+ log.Fatalf("Error copying training file to %s: %v", newPath, err)
+ }
+ in.Close()
+ out.Close()
+ err = os.Rename(newPath, trainingPath)
+ if err != nil {
+ log.Fatalf("Error moving new training file to %s: %v", trainingPath, err)
}
abstraining, err := filepath.Abs(trainingPath)
diff --git a/cmd/rescribe/xyz.rescribe.rescribe.yml b/cmd/rescribe/xyz.rescribe.rescribe.yml
index ae87d59..d994b88 100644
--- a/cmd/rescribe/xyz.rescribe.rescribe.yml
+++ b/cmd/rescribe/xyz.rescribe.rescribe.yml
@@ -1,6 +1,6 @@
app-id: xyz.rescribe.rescribe
runtime: org.freedesktop.Platform
-runtime-version: '22.08'
+runtime-version: '23.08'
sdk: org.freedesktop.Sdk
sdk-extensions: org.freedesktop.Sdk.Extension.golang
build-options:
@@ -30,12 +30,16 @@ modules:
- cp -r tessdata/* $FLATPAK_DEST/share/tessdata/
sources:
- type: git
- url: https://github.com/rescribe/bookpipeline
- tag: v1.1.0
- commit: 3dd003691436ed954d3b7de54affbb10b509d5a6
+ url: ../..
+ commit: HEAD
+ #url: https://github.com/rescribe/bookpipeline
+ #tag: v1.1.0
+ #commit: 3dd003691436ed954d3b7de54affbb10b509d5a6
- type: archive
- url: https://rescribe.xyz/rescribe/modules-20230213-3dd003.tar.xz
- sha256: 36553c4b97ceefc2c4711d18f26c98d89a9a610cb99bd2a38b7a0bbf3236eb4a
+ url: https://rescribe.xyz/tmp/modules.tar.xz # TODO: move to /rescribe once stable
+ sha256: 98b769cf61cc4178303e7d9e0aa0e036f819a46041aa442982713cb847e4657a
+ #url: https://rescribe.xyz/rescribe/modules-20230213-3dd003.tar.xz
+ #sha256: 36553c4b97ceefc2c4711d18f26c98d89a9a610cb99bd2a38b7a0bbf3236eb4a
strip-components: 0
- type: archive
url: https://rescribe.xyz/rescribe/embeds/tessdata.20220322.zip