about summary refs log tree commit diff
path: root/pkgs/by-name/di/diesel-cli/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/di/diesel-cli/package.nix')
-rw-r--r--pkgs/by-name/di/diesel-cli/package.nix109
1 files changed, 109 insertions, 0 deletions
diff --git a/pkgs/by-name/di/diesel-cli/package.nix b/pkgs/by-name/di/diesel-cli/package.nix
new file mode 100644
index 0000000000000..970d4458077ae
--- /dev/null
+++ b/pkgs/by-name/di/diesel-cli/package.nix
@@ -0,0 +1,109 @@
+{
+  lib,
+  stdenv,
+  fetchCrate,
+  rustPlatform,
+  installShellFiles,
+  darwin,
+  libiconv,
+  libmysqlclient,
+  nix-update-script,
+  openssl,
+  pkg-config,
+  postgresql,
+  sqlite,
+  testers,
+  zlib,
+  diesel-cli,
+  sqliteSupport ? true,
+  postgresqlSupport ? true,
+  mysqlSupport ? true,
+}:
+assert lib.assertMsg (lib.elem true [
+  postgresqlSupport
+  mysqlSupport
+  sqliteSupport
+]) "support for at least one database must be enabled";
+
+rustPlatform.buildRustPackage rec {
+  pname = "diesel-cli";
+  version = "2.2.1";
+
+  src = fetchCrate {
+    inherit version;
+    crateName = "diesel_cli";
+    hash = "sha256-B+AHTJgOBUGVc4J2VcwuqVwAbm0wpsFHc9+gc5g2RAM=";
+  };
+
+  cargoHash = "sha256-HFhkePq2fZ7MxZfH0jLlS5B10jqf15+RUcGZnDbML5Q=";
+
+  nativeBuildInputs = [
+    installShellFiles
+    pkg-config
+  ];
+
+  buildInputs =
+    [ openssl ]
+    ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security
+    ++ lib.optional (stdenv.isDarwin && mysqlSupport) libiconv
+    ++ lib.optional sqliteSupport sqlite
+    ++ lib.optional postgresqlSupport postgresql
+    ++ lib.optionals mysqlSupport [
+      libmysqlclient
+      zlib
+    ];
+
+  buildNoDefaultFeatures = true;
+  buildFeatures =
+    lib.optional sqliteSupport "sqlite"
+    ++ lib.optional postgresqlSupport "postgres"
+    ++ lib.optional mysqlSupport "mysql";
+
+  checkFlags = [
+    # all of these require a live database to be running
+    # `DATABASE_URL must be set in order to run tests: NotPresent`
+    "--skip=infer_schema_internals::information_schema::tests::get_primary_keys_only_includes_primary_key"
+    "--skip=infer_schema_internals::information_schema::tests::load_table_names_loads_from_custom_schema"
+    "--skip=infer_schema_internals::information_schema::tests::load_table_names_loads_from_public_schema_if_none_given"
+    "--skip=infer_schema_internals::information_schema::tests::load_table_names_output_is_ordered"
+    "--skip=infer_schema_internals::information_schema::tests::skip_views"
+    "--skip=infer_schema_internals::mysql::test::get_table_data_loads_column_information"
+    "--skip=infer_schema_internals::mysql::test::gets_table_comment"
+    "--skip=infer_schema_internals::pg::test::get_foreign_keys_loads_foreign_keys"
+    "--skip=infer_schema_internals::pg::test::get_foreign_keys_loads_foreign_keys_with_same_name"
+    "--skip=infer_schema_internals::pg::test::get_table_data_loads_column_information"
+    "--skip=infer_schema_internals::pg::test::gets_table_comment"
+  ];
+  cargoCheckFeatures = buildFeatures;
+
+  # Tests currently fail due to *many* duplicate definition errors
+  doCheck = false;
+
+  postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
+    installShellCompletion --cmd diesel \
+      --bash <($out/bin/diesel completions bash) \
+      --fish <($out/bin/diesel completions fish) \
+      --zsh <($out/bin/diesel completions zsh)
+  '';
+
+  # Fix the build with mariadb, which otherwise shows "error adding symbols:
+  # DSO missing from command line" errors for libz and libssl.
+  env.NIX_LDFLAGS = lib.optionalString mysqlSupport "-lz -lssl -lcrypto";
+
+  passthru = {
+    tests.version = testers.testVersion { package = diesel-cli; };
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    description = "Database tool for working with Rust projects that use Diesel";
+    homepage = "https://diesel.rs";
+    changelog = "https://github.com/diesel-rs/diesel/releases/tag/v${version}";
+    license = with lib.licenses; [
+      mit
+      asl20
+    ];
+    maintainers = with lib.maintainers; [ getchoo ];
+    mainProgram = "diesel";
+  };
+}