From 437ced8331f8db91a30decf563d02b354f292e7b Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Wed, 15 Nov 2023 22:04:36 +0100 Subject: wp-cli: allow overriding entire config file --- pkgs/by-name/wp/wp-cli/package.nix | 80 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 pkgs/by-name/wp/wp-cli/package.nix (limited to 'pkgs/by-name/wp') diff --git a/pkgs/by-name/wp/wp-cli/package.nix b/pkgs/by-name/wp/wp-cli/package.nix new file mode 100644 index 0000000000000..396930d858e8a --- /dev/null +++ b/pkgs/by-name/wp/wp-cli/package.nix @@ -0,0 +1,80 @@ +{ stdenv +, lib +, fetchurl +, formats +, installShellFiles +, makeWrapper +, php +, phpIniFile ? null +}: + +let + version = "2.9.0"; + + completion = fetchurl { + url = "https://raw.githubusercontent.com/wp-cli/wp-cli/v${version}/utils/wp-completion.bash"; + hash = "sha256-RDygYQzK6NLWrOug7EqnkpuH7Wz1T2Zq/tGNZjoYo5U="; + }; + + ini = + if phpIniFile == null + then + (formats.ini { }).generate "php.ini" + { + PHP.memory_limit = -1; # no limit as composer uses a lot of memory + Phar."phar.readonly" = "Off"; + } + else phpIniFile; + +in +stdenv.mkDerivation (finalAttrs: { + pname = "wp-cli"; + inherit version; + + src = fetchurl { + url = "https://github.com/wp-cli/wp-cli/releases/download/v${version}/wp-cli-${version}.phar"; + hash = "sha256-r2t8zCHtCQfLUE21oFnw4SAReQWmAXv91Ddc7jyT2GQ="; + }; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = [ installShellFiles makeWrapper ]; + + installPhase = '' + runHook preInstall + + install -Dm444 ${finalAttrs.src} $out/share/wp-cli/wp-cli.phar + install -Dm444 ${ini} $out/etc/${ini.name} + installShellCompletion --bash --name wp ${completion} + + makeWrapper ${lib.getExe php} $out/bin/${finalAttrs.meta.mainProgram} \ + --set-default XDG_CACHE_HOME \$HOME/.cache \ + --set-default XDG_CONFIG_HOME \$HOME/.config \ + --set-default XDG_DATA_HOME \$HOME/.local/share \ + --set-default WP_CLI_CONFIG_PATH \$XDG_CONFIG_HOME}/wp-cli \ + --set-default WP_CLI_PACKAGES_DIR \$XDG_DATA_HOME/wp-cli \ + --set-default WP_CLI_CACHE_DIR \$XDG_CACHE_HOME/wp-cli \ + --add-flags "-c $out/etc/${ini.name}" \ + --add-flags "-f $out/share/wp-cli/wp-cli.phar" \ + --add-flags "--" + + runHook postInstall + ''; + + doInstallCheck = true; + + installCheckPhase = '' + $out/bin/wp --info + ''; + + meta = with lib; { + description = "A command line interface for WordPress"; + homepage = "https://wp-cli.org"; + license = licenses.mit; + maintainers = with maintainers; [ peterhoeg ]; + platforms = platforms.all; + mainProgram = "wp"; + }; +}) -- cgit 1.4.1