Unverified Commit 307fb7dd authored by OTABI Tomoya's avatar OTABI Tomoya Committed by GitHub
Browse files

zenn-cli: init at 0.1.155 (#338580)

parents 68b8ec77 2f139767
Loading
Loading
Loading
Loading
+102 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  fetchurl,
  autoPatchelfHook,
  makeWrapper,
  nodejs,
  pnpm_9,
  testers,
}:
let
  go-turbo-version = "1.7.4";
  go-turbo-srcs = {
    x86_64-linux = fetchurl {
      url = "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-${go-turbo-version}.tgz";
      hash = "sha256-bwi+jthoDe+SEvCPPNNNv9AR8n5IA1fc4I8cnfC095Y=";
    };
    aarch64-linux = fetchurl {
      url = "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-${go-turbo-version}.tgz";
      hash = "sha256-j3mUd3x16tYR3QQweIB07IbCKYuKPeEkKkUHhrpHzyc=";
    };
  };
  go-turbo = stdenv.mkDerivation {
    pname = "go-turbo";
    version = go-turbo-version;
    src = go-turbo-srcs.${stdenv.hostPlatform.system};
    nativeBuildInputs = [ autoPatchelfHook ];
    dontBuild = true;
    installPhase = ''
      install -Dm755 bin/go-turbo -t $out/bin
    '';
  };
in

stdenv.mkDerivation (finalAttrs: {
  pname = "zenn-cli";
  version = "0.1.155";

  src = fetchFromGitHub {
    owner = "zenn-dev";
    repo = "zenn-editor";
    rev = "refs/tags/${finalAttrs.version}";
    hash = "sha256-3SM57DRCz8VuizyUrW6sI9FuBq4NrjoCqriEYUQg27M=";
    # turborepo requires .git directory
    leaveDotGit = true;
  };

  nativeBuildInputs = [
    nodejs
    pnpm_9.configHook
    makeWrapper
  ];

  pnpmDeps = pnpm_9.fetchDeps {
    inherit (finalAttrs) pname version src;
    hash = "sha256-FfqBe1WQc6ditizjxYLmjb8mvCjQJMpvyUDdaW29sXY=";
  };

  preBuild =
    ''
      echo VITE_EMBED_SERVER_ORIGIN="https://embed.zenn.studio" > packages/zenn-cli/.env
    ''
    # replace go-turbo since the existing one can't be executed
    + lib.optionalString stdenv.hostPlatform.isLinux ''
      cp ${go-turbo}/bin/go-turbo node_modules/.pnpm/turbo-linux-*/node_modules/turbo-linux*/bin/go-turbo
    '';

  buildPhase = ''
    runHook preBuild

    pnpm build --no-daemon

    runHook postBuild
  '';

  installPhase = ''
    runHook preInstall

    mkdir -p $out/{bin,lib/node_modules/zenn-cli}
    cp -r packages/zenn-cli/{dist,LICENSE,package.json,README.md} $out/lib/node_modules/zenn-cli

    makeWrapper "${lib.getExe nodejs}" "$out/bin/zenn" \
      --add-flags "$out/lib/node_modules/zenn-cli/dist/server/zenn.js"

    runHook postInstall
  '';

  passthru = {
    tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
  };

  meta = {
    description = "Preview Zenn content locally";
    homepage = "https://github.com/zenn-dev/zenn-editor";
    changelog = "https://github.com/zenn-dev/zenn-editor/releases/tag/${finalAttrs.version}";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ natsukium ];
    mainProgram = "zenn";
    platforms = nodejs.meta.platforms;
  };
})