From 7ef0759b2eca4b2400563a7118a2fbe52197b239 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Tue, 23 Sep 2025 13:33:27 +0100 Subject: [PATCH] Add `serve` script using openapi-mock Signed-off-by: Oliver Davies --- openapi/.gitignore | 1 + openapi/flake.nix | 10 +++++++++- openapi/openapi-mock.nix | 15 +++++++++++++++ openapi/serve | 7 +++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 openapi/.gitignore create mode 100644 openapi/openapi-mock.nix create mode 100755 openapi/serve diff --git a/openapi/.gitignore b/openapi/.gitignore new file mode 100644 index 0000000..c4a847d --- /dev/null +++ b/openapi/.gitignore @@ -0,0 +1 @@ +/result diff --git a/openapi/flake.nix b/openapi/flake.nix index 29586cc..9f15689 100644 --- a/openapi/flake.nix +++ b/openapi/flake.nix @@ -2,16 +2,24 @@ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = - { nixpkgs, ... }: + { nixpkgs, self, ... }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; in { + packages.${system} = { + openapi-mock = import ./openapi-mock.nix { + inherit (pkgs) buildGoModule fetchFromGitHub; + }; + }; + devShells.${system}.default = pkgs.mkShell { packages = with pkgs; [ openapi-generator-cli openapi-tui + + self.packages.${system}.openapi-mock ]; }; }; diff --git a/openapi/openapi-mock.nix b/openapi/openapi-mock.nix new file mode 100644 index 0000000..a71ac8b --- /dev/null +++ b/openapi/openapi-mock.nix @@ -0,0 +1,15 @@ +{ buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "openapi-mock"; + version = "0.3.9"; + + src = fetchFromGitHub { + owner = "muonsoft"; + repo = pname; + rev = "v${version}"; + hash = "sha256-7u//uwcVV1/EI6Rr3ju7KOwMYt/dXivyvBWIpTaoWZk="; + }; + + vendorHash = "sha256-KPCRunuCIbBX+YpHgshixmrxM3Ey0LIdEC0Z4CtpQoI="; +} diff --git a/openapi/serve b/openapi/serve new file mode 100755 index 0000000..18274ab --- /dev/null +++ b/openapi/serve @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -euo pipefail + +openapi-mock serve \ + --specification-url petstore.yaml \ + "$@"