From 875d01169002113225a07bc4afcb9a1732aa349d Mon Sep 17 00:00:00 2001 From: Zuckerberg Date: Mon, 4 Sep 2023 14:36:06 -0600 Subject: [PATCH] Package server --- flake.nix | 10 +++---- server/{smartcrop.nix => default.nix} | 39 ++++++++++++++++++++++----- server/main.go | 27 +++++-------------- server/server.nix | 10 ------- 4 files changed, 45 insertions(+), 41 deletions(-) rename server/{smartcrop.nix => default.nix} (61%) delete mode 100644 server/server.nix diff --git a/flake.nix b/flake.nix index f145775..efe16ec 100644 --- a/flake.nix +++ b/flake.nix @@ -10,13 +10,13 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; - server = pkgs.callPackage ./server/server.nix { }; - smartcrop = pkgs.callPackage ./server/smartcrop.nix { }; + server = pkgs.callPackage ./server { }; in { - packages."dynamic-frame-server" = server; - packages."dynamic-frame-smartcrop" = smartcrop; - packages.default = server; + packages = { + inherit (server) server smartcrop; + }; + packages.default = server.server; devShell = pkgs.callPackage ./shell.nix { }; } ); diff --git a/server/smartcrop.nix b/server/default.nix similarity index 61% rename from server/smartcrop.nix rename to server/default.nix index 44cbf49..ec7836a 100644 --- a/server/smartcrop.nix +++ b/server/default.nix @@ -2,6 +2,8 @@ , python3 , fetchFromGitHub , makeWrapper +, buildGoModule +, stdenv }: with python3.pkgs; @@ -57,10 +59,35 @@ let ''; }; + server = buildGoModule rec { + pname = "dynamic-frame-server"; + version = "0.0.1"; + + src = ./.; + + vendorSha256 = "qr3hNJxCT8YPQntKCCPNO2yaETswziGXAd4lQELsDGg="; + }; + + # Wrap server so it has access to smartcrop in its PATH + serverWrapped = stdenv.mkDerivation { + pname = server.pname; + version = server.version; + src = server; + + buildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + cp ${server}/bin/* $out/bin/ + + wrapProgram $out/bin/server \ + --set PATH "${smartcrop-cli}/bin:$PATH" + ''; + + meta.mainProgram = "server"; + }; in - -# python3.withPackages (ps: with ps; [ -# smartcrop -# ]) - -smartcrop-cli \ No newline at end of file +{ + server = serverWrapped; + smartcrop = smartcrop-cli; +} diff --git a/server/main.go b/server/main.go index c6f73ec..7307d48 100644 --- a/server/main.go +++ b/server/main.go @@ -20,19 +20,7 @@ import ( "github.com/go-chi/chi/v5/middleware" ) -// Define a function to handle incoming requests -func requestHandler(w http.ResponseWriter, r *http.Request) { - // Get the 'name' variable from the request - name := chi.URLParam(r, "name") - - // Use a default value if 'name' is not present - if name == "" { - name = "World" - } - - // Respond with a greeting message - fmt.Fprintf(w, "Hello, %s!\n", name) -} +var imageDir = "./img" func getRandomFile(dir string) (string, error) { files, err := ioutil.ReadDir(dir) @@ -120,9 +108,11 @@ func basicAuth(next http.Handler) http.Handler { } func main() { - fmt.Println("Starting server") + if len(os.Args) > 1 { + imageDir = os.Args[1] + } + fmt.Println("Choosing images from: ", imageDir) - // Create a new Chi router router := chi.NewRouter() router.Use(middleware.RequestID) @@ -130,17 +120,14 @@ func main() { router.Use(middleware.Logger) router.Use(middleware.Recoverer) - // Register the requestHandler function to handle requests at the root path - // and a path with the 'name' parameter - router.Get("/", requestHandler) - router.Get("/{name}", requestHandler) - router.Group(func(r chi.Router) { // r.Use(basicAuth) r.Post("/fetchImage", fetchImage) r.Post("/calibrationImage", calibrationImage) }) + fmt.Println("Started server") + // Start the HTTP server on port 8080 and log any errors log.Fatal(http.ListenAndServe("0.0.0.0:8080", router)) } diff --git a/server/server.nix b/server/server.nix deleted file mode 100644 index 5384ce4..0000000 --- a/server/server.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ pkgs, ... }: - -pkgs.buildGoModule rec { - pname = "dynamic-frame-server"; - version = "0.0.1"; - - src = ./.; - - vendorSha256 = "uTqGdqswbnmPsEm5NISD0Nh9ry4GLMAsuVF7+U8BRdA="; -}