Compare commits

...

3 commits

Author SHA1 Message Date
Prunebutt
8542ea2ef7 add barebones dispatch command 2025-09-26 00:28:32 +02:00
Prunebutt
f672c6c706 add a flask server 2025-09-26 00:26:43 +02:00
Prunebutt
e1a7632b40 allow unfree 2025-09-25 18:01:34 +02:00
5 changed files with 126 additions and 7 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
*.pdf *.pdf
__pycache__

27
flake.lock generated Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1758427187,
"narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "554be6495561ff07b6c724047bdd7e0716aa7b46",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

View file

@ -7,14 +7,53 @@
nixpkgs, nixpkgs,
} @ inputs: let } @ inputs: let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages."${system}"; pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in { in {
packages."${system}".default = pkgs.writeShellApplication { devShells.${system}.default = pkgs.mkShell {
name = "hello_world"; packages = with pkgs; [
python313
python313Packages.flask
python313Packages.waitress
];
runtimeInputs = with pkgs; [sane-backends brscan5 ghostscript]; shellHook = ''
python --version
exec zsh
'';
};
packages.${system} = let
scanbuddy = pkgs.writeShellApplication {
name = "scanbuddy-script";
text = builtins.readFile ./scanbuddy.bash; runtimeInputs = with pkgs; [sane-backends brscan5 ghostscript];
text = builtins.readFile ./scanbuddy.bash;
};
wrapper = pkgs.writeShellApplication {
name = "scanbuddy-wrapper";
text =
/*
bash
*/
''
#!/usr/bin/env bash
readarray -d '_' args < <(printf "%s" "$1")
scanbuddy "''${args[@]}"
'';
};
package = pkgs.symlinkJoin {
name = "scanbuddy";
paths = [scanbuddy wrapper];
};
in {
default = package;
inherit scanbuddy;
inherit wrapper;
}; };
}; };
} }

View file

@ -103,9 +103,9 @@ case "$1" in
"${PAPERLESS_URL}/api/documents/post_document/") || FAILED=1 "${PAPERLESS_URL}/api/documents/post_document/") || FAILED=1
if [ -v FAILED ]; then if [ -v FAILED ]; then
echo "Paperless failed with message:\n$PAPERLESS_STATUS" printf "Paperless failed with message:\n%s" "$PAPERLESS_STATUS"
else else
echo "Paperless consumption job: '$PAPERLESS_STATUS'" printf "Paperless consumption job: %s\n" "$PAPERLESS_STATUS"
fi fi
;; ;;
*) *)

52
server.py Executable file
View file

@ -0,0 +1,52 @@
#!/usr/bin/env python3
# Run this stuff with `waitress-serve --port=5000 --call server:create_app`
import os
import subprocess
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello, World! Yoyoyo"
@app.route("/scan")
def scan():
command = ["bash", f"{os.getcwd()}/scanbuddy.bash", "scan"]
command += ["-d"] if (request.args.get("duplex", "n") == 'y') else []
result = subprocess.run(command, stdout=subprocess.PIPE, text=True)
output = result.stdout.strip()
print("Scanbuddy output: ")
print(output)
return output
# return f"Scanning {'duplex' if duplex == 'y' else ''}..."
@app.route("/dispatch")
def dispatch():
command = ["bash", f"{os.getcwd()}/scanbuddy.bash", "dispatch"]
user = request.args.get("user", "")
result = subprocess.run(command, stdout=subprocess.PIPE, text=True)
output = result.stdout.strip()
print("Scanbuddy output: ")
print(output)
return "Dispatching..."
@app.route("/unscan")
def unscan():
return "Unscanning..."
def create_app():
return app
if __name__=='__main__':
from waitress import serve
serve(app, host="0.0.0.0", port=8080)