Unverified Commit d1d5334c authored by Masum Reza's avatar Masum Reza Committed by GitHub
Browse files

adminer-pematon: init at 4.12 (#358530)

parents 19f40a30 33f90436
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
<?php

declare(strict_types=1);

namespace nixos {
    use AdminerPlugin;

    use function sprintf;

    function adminer_object(): object
    {
        require_once __DIR__ . '/plugins/plugin.php';

        if (!file_exists(__DIR__ . '/plugins.json')) {
            return new AdminerPlugin();
        }

        $plugins = array_map(
            static function (string $name): ?object {
                $plugin = sprintf('%s/plugins/%s.php', __DIR__, $name);

                if (!is_readable($plugin)) {
                    return null;
                }

                require $plugin;

                preg_match_all('/(\w+)/', $name, $matches);

                return new sprintf('Adminer%s', implode('', array_map('ucfirst', $matches[1])));
            },
            json_decode(file_get_contents(sprintf('%s/plugins.json', __DIR__), true))
        );

        return new AdminerPlugin(array_filter($plugins));
    }
}

namespace {
	function adminer_object() {
		return \nixos\adminer_object();
	}

	require(__DIR__ . '/adminer.php');
}
+75 −0
Original line number Diff line number Diff line
{
  lib,
  stdenvNoCC,
  fetchFromGitHub,
  php,
  writeText,
  nix-update-script,
  theme ? null,
  plugins ? [ ],
}:
stdenvNoCC.mkDerivation (finalAttrs: {
  pname = "adminer-pematon";
  version = "4.12";

  src = fetchFromGitHub {
    owner = "pematon";
    repo = "adminer";
    rev = "refs/tags/v${finalAttrs.version}";
    hash = "sha256-ExCHEsZ+VFmrom3632/1OOjb3zbZgiaZJDapBkBGUnQ=";
  };

  nativeBuildInputs = [
    php
  ];

  buildPhase = ''
    runHook preBuild

    php compile.php

    runHook postBuild
  '';

  installPhase = ''
    runHook preInstall

    mkdir $out
    cp temp/adminer-${finalAttrs.version}.php $out/adminer.php
    cp ${./index.php} $out/index.php

    ${lib.optionalString (theme != null) ''
      cp designs/${theme}/adminer.css $out/adminer.css
    ''}

    # Copy base plugin
    mkdir -p $out/plugins
    cp plugins/plugin.php $out/plugins/plugin.php

    ${lib.optionalString (plugins != [ ]) ''
      cp plugins/*.php $out/plugins/
      cp ${writeText "$out/plugins.json" ''
        ${toString (builtins.toJSON plugins)}
      ''} $out/plugins.json
    ''}

    runHook postInstall
  '';

  passthru = {
    updateScript = nix-update-script { };
  };

  meta = {
    description = "Database management in a single PHP file (Pematon fork)";
    homepage = "https://github.com/pematon/adminer";
    license = with lib.licenses; [
      asl20
      gpl2Only
    ];
    maintainers = with lib.maintainers; [
      johnrtitor
    ];
    platforms = lib.platforms.all;
  };
})