diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/database/liquibase/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/database/liquibase/default.nix | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/database/liquibase/default.nix b/nixpkgs/pkgs/development/tools/database/liquibase/default.nix new file mode 100644 index 000000000000..ae993f9611e0 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/database/liquibase/default.nix @@ -0,0 +1,66 @@ +{ stdenv, fetchurl, jre, makeWrapper +, mysqlSupport ? true, mysql_jdbc ? null }: + +assert mysqlSupport -> mysql_jdbc != null; + +with stdenv.lib; +let + extraJars = optional mysqlSupport mysql_jdbc; +in + +stdenv.mkDerivation rec { + pname = "liquibase"; + version = "3.10.0"; + + src = fetchurl { + url = "https://github.com/liquibase/liquibase/releases/download/v${version}/${pname}-${version}.tar.gz"; + sha256 = "1h5mcbs6mkk6cqjm8qm63rynz7611gq32v2jirl1qn71x2s7pq6y"; + }; + + buildInputs = [ jre makeWrapper ]; + + unpackPhase = '' + tar xfz ${src} + ''; + + installPhase = + let addJars = dir: '' + for jar in ${dir}/*.jar; do + CP="\$CP":"\$jar" + done + ''; + in '' + mkdir -p $out + mv ./{lib,licenses,liquibase.jar} $out/ + + mkdir -p $out/share/doc/${pname}-${version} + mv LICENSE.txt \ + README.txt \ + ABOUT.txt \ + changelog.txt \ + $out/share/doc/${pname}-${version} + + mkdir -p $out/bin + # there’s a lot of escaping, but I’m not sure how to improve that + cat > $out/bin/liquibase <<EOF + #!/usr/bin/env bash + # taken from the executable script in the source + CP="$out/liquibase.jar" + ${addJars "$out/lib"} + ${concatStringsSep "\n" (map (p: addJars "${p}/share/java") extraJars)} + + ${getBin jre}/bin/java -cp "\$CP" \$JAVA_OPTS \ + liquibase.integration.commandline.Main \''${1+"\$@"} + EOF + chmod +x $out/bin/liquibase + ''; + + meta = { + description = "Version Control for your database"; + homepage = "http://www.liquibase.org/"; + changelog = "https://raw.githubusercontent.com/liquibase/liquibase/v${version}/changelog.txt"; + license = licenses.asl20; + maintainers = with maintainers; [ nequissimus ]; + platforms = with platforms; unix; + }; +} |