mirror of
https://github.com/thegeneralist01/archivr
synced 2026-07-21 18:55:36 +02:00
feat: add db and multi-archive web UI foundation (#8)
* Add SQLite metadata database support * Implement archive metadata database * chore: let's guess cargoHash because there's something wrong with nixpkgs! * Gate test-only database helpers behind cfg(test) * Fix archive database row identity * Use serde for archive metadata JSON * Finalize archive runs at command level * Handle archive command errors without panics * Cover tweet entry metadata recording * Document static regex invariants * docs: add web UI design spec * docs: add web UI implementation plan * chore: move cli into workspace crate * chore: track workspace crates directory * refactor: extract archive core crate * refactor: add core archive opening APIs * refactor: rename taxonomy model to tags * feat: add archive query APIs * feat: add web server registry * feat: expose archive server APIs * feat: add archive table web UI * fix: complete web UI smoke path * docs: add architecture mental model * docs: remove private superpowers plans * nix: split cli and server packages * chore: remove PLAN.md
This commit is contained in:
parent
cc380ec5ba
commit
b56c969624
25 changed files with 3928 additions and 171 deletions
89
flake.nix
89
flake.nix
|
|
@ -59,12 +59,45 @@
|
|||
tweetPython = pkgs.python312.withPackages (ps: [
|
||||
twitterApiClient
|
||||
]);
|
||||
archivr_unwrapped = pkgs.rustPlatform.buildRustPackage {
|
||||
pname = "archivr";
|
||||
version = "0.1.0";
|
||||
src = pkgs.lib.cleanSource ./.;
|
||||
cargoHash = "sha256-4m+4SMYA/rJ0eHEOc32zA2VdZI1pqzB5NenD0R0f2zM=";
|
||||
nativeBuildInputs = [ pkgs.pkg-config ];
|
||||
version = "0.1.0";
|
||||
src = pkgs.lib.cleanSource ./.;
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
};
|
||||
nativeBuildInputs = [ pkgs.pkg-config ];
|
||||
archivr_cli_unwrapped = pkgs.rustPlatform.buildRustPackage {
|
||||
pname = "archivr-cli";
|
||||
inherit
|
||||
version
|
||||
src
|
||||
cargoLock
|
||||
nativeBuildInputs
|
||||
;
|
||||
cargoBuildFlags = [
|
||||
"-p"
|
||||
"archivr-cli"
|
||||
];
|
||||
cargoTestFlags = [
|
||||
"-p"
|
||||
"archivr-cli"
|
||||
];
|
||||
};
|
||||
archivr_server_unwrapped = pkgs.rustPlatform.buildRustPackage {
|
||||
pname = "archivr-server";
|
||||
inherit
|
||||
version
|
||||
src
|
||||
cargoLock
|
||||
nativeBuildInputs
|
||||
;
|
||||
cargoBuildFlags = [
|
||||
"-p"
|
||||
"archivr-server"
|
||||
];
|
||||
cargoTestFlags = [
|
||||
"-p"
|
||||
"archivr-server"
|
||||
];
|
||||
};
|
||||
archivr = pkgs.stdenv.mkDerivation {
|
||||
pname = "archivr-wrapped";
|
||||
|
|
@ -77,29 +110,43 @@
|
|||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/libexec/archivr
|
||||
cp -r ${archivr_unwrapped}/bin/* $out/bin/
|
||||
cp ${archivr_cli_unwrapped}/bin/archivr $out/libexec/archivr/archivr
|
||||
cp ${./vendor/twitter/scrape_user_tweet_contents.py} $out/libexec/archivr/scrape_user_tweet_contents.py
|
||||
chmod +x $out/libexec/archivr/scrape_user_tweet_contents.py
|
||||
for f in $out/bin/*; do
|
||||
mv "$f" "$f.orig"
|
||||
makeWrapper "$f.orig" "$f" \
|
||||
--set ARCHIVR_YT_DLP ${pkgs.yt-dlp}/bin/yt-dlp \
|
||||
--set ARCHIVR_TWEET_PYTHON ${tweetPython}/bin/python3 \
|
||||
--set ARCHIVR_TWEET_SCRAPER $out/libexec/archivr/scrape_user_tweet_contents.py \
|
||||
--prefix PATH : ${
|
||||
lib.makeBinPath [
|
||||
pkgs.yt-dlp
|
||||
tweetPython
|
||||
]
|
||||
}
|
||||
done
|
||||
makeWrapper $out/libexec/archivr/archivr $out/bin/archivr \
|
||||
--set ARCHIVR_YT_DLP ${pkgs.yt-dlp}/bin/yt-dlp \
|
||||
--set ARCHIVR_TWEET_PYTHON ${tweetPython}/bin/python3 \
|
||||
--set ARCHIVR_TWEET_SCRAPER $out/libexec/archivr/scrape_user_tweet_contents.py \
|
||||
--prefix PATH : ${
|
||||
lib.makeBinPath [
|
||||
pkgs.yt-dlp
|
||||
tweetPython
|
||||
]
|
||||
}
|
||||
'';
|
||||
};
|
||||
archivr_server = pkgs.stdenv.mkDerivation {
|
||||
pname = "archivr-server-wrapped";
|
||||
inherit version;
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/libexec/archivr-server $out/share/archivr-server/static
|
||||
cp ${archivr_server_unwrapped}/bin/archivr-server $out/libexec/archivr-server/archivr-server
|
||||
cp -r ${./crates/archivr-server/static}/* $out/share/archivr-server/static/
|
||||
makeWrapper $out/libexec/archivr-server/archivr-server $out/bin/archivr-server \
|
||||
--set ARCHIVR_STATIC_DIR $out/share/archivr-server/static
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
default = archivr;
|
||||
archivr = archivr;
|
||||
archivr-unwrapped = archivr_unwrapped;
|
||||
archivr-cli = archivr;
|
||||
archivr-cli-unwrapped = archivr_cli_unwrapped;
|
||||
archivr-unwrapped = archivr_cli_unwrapped;
|
||||
archivr-server = archivr_server;
|
||||
archivr-server-unwrapped = archivr_server_unwrapped;
|
||||
}
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue