setbfree: 0.8.12 -> 0.8.13 (#372025)
[NixPkgs.git] / pkgs / by-name / me / melos / package.nix
blob4d9654af977c695342e6254c7648a5dca3e15544
2   lib,
3   fetchFromGitHub,
4   buildDartApplication,
5 }:
6 let
7   pname = "melos";
8   version = "6.2.0";
9   src = fetchFromGitHub {
10     owner = "invertase";
11     repo = "melos";
12     rev = "melos-v${version}";
13     hash = "sha256-00K/LwrwjvO4LnXM2PDooQMJ6sXcJy9FBErtEwoMZlM=";
14   };
16 buildDartApplication {
17   inherit pname version src;
19   sourceRoot = "${src.name}/packages/melos";
21   patches = [
22     # This patch (created a melos 6.1.0) modify the method melos use to find path to the root of the projects.
23     # It is needed because when melos is in the nixstore, it break it and fail to find the projects root with melos.yaml
24     ./add-generic-main.patch
25   ];
27   pubspecLock = lib.importJSON ./pubspec.lock.json;
29   # hard code the path to the melos templates
30   preBuild = ''
31     substituteInPlace lib/src/common/utils.dart --replace-fail "final melosPackageFileUri = await Isolate.resolvePackageUri(melosPackageUri);" "return \"$out\";"
32     substituteInPlace lib/src/common/utils.dart --replace-fail "return p.normalize('\''${melosPackageFileUri!.toFilePath()}/../..');" " "
33     mkdir -p $out
34     cp -r templates $out/
35   '';
37   meta = {
38     homepage = "https://github.com/invertase/melos";
39     description = "A tool for managing Dart projects with multiple packages. With IntelliJ and Vscode IDE support. Supports automated versioning, changelogs & publishing via Conventional Commits. ";
40     mainProgram = "melos";
41     license = lib.licenses.asl20;
42     maintainers = [ lib.maintainers.eymeric ];
43   };