package dunolint
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
A linter for build files in dune projects
Install
dune-project
Dependency
Authors
Maintainers
Sources
dunolint-0.0.20260306.tbz
sha256=d92e0d705b661ea12b22dcc9bdd83815c507218c1de085d75140fd47bea0c5ec
sha512=fdf4fbb4906aba4aeab766dfa5202b64950c71c988b1b84363319dd05edb93b34142355f968a5687057977e40defdced20a2a17ee0614565096eb123655621f3
doc/src/dunolint.dunolint_engine/context.ml.html
Source file context.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87(*********************************************************************************) (* Dunolint - A tool to lint and help manage files in dune projects *) (* Copyright (C) 2024-2025 Mathieu Barbin <mathieu.barbin@gmail.com> *) (* *) (* This file is part of Dunolint. *) (* *) (* Dunolint is free software; you can redistribute it and/or modify it *) (* under the terms of the GNU Lesser General Public License as published by *) (* the Free Software Foundation either version 3 of the License, or any later *) (* version, with the LGPL-3.0 Linking Exception. *) (* *) (* Dunolint is distributed in the hope that it will be useful, but WITHOUT *) (* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *) (* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *) (* and the file `NOTICE.md` at the root of this repository for more details. *) (* *) (* You should have received a copy of the GNU Lesser General Public License *) (* and the LGPL-3.0 Linking Exception along with this library. If not, see *) (* <http://www.gnu.org/licenses/> and <https://spdx.org>, respectively. *) (*********************************************************************************) module Config_with_location = struct type t = { config : Dunolint.Config.t ; location : Relative_path.t } end module Enclosing_result = struct type 'a t = ('a, Dune_project_context.Invalid_dune_project.t) Result.t end module Dune_project_context_with_location = struct type t = { dune_project_context : Dune_project_context.t Enclosing_result.t ; location : Relative_path.t } end module Item = struct type t = | Config of Config_with_location.t | Dune_project_context of Dune_project_context_with_location.t open struct (* Future plans include making use of the dune linter to keep some contextual information (e.g. enclosing library context). This part of the project hasn't been written yet. In the meanwhile we wish to enforce the right dependency ordering between libraries, and silencing @unused-libs warnings. *) open! Dune_linter end end type t = Item.t list let empty = [] let configs (t : t) = (* Return configs in rule processing order: shallowest (root) to deepest. Since configs are added at the head as we traverse deeper, we reverse to get shallowest first. *) List.rev_filter_map t ~f:(function | Config config -> Some config | Dune_project_context _ -> None) ;; let add_config t ~config ~location = Item.Config { config; location } :: t let add_dune_project_context t ~dune_project_context ~location = Item.Dune_project_context { dune_project_context; location } :: t ;; let enclosing_dune_project_context (t : t) = List.find_map t ~f:(function | Config _ -> None | Dune_project_context { dune_project_context; location = _ } -> Some dune_project_context) ;; let enclosing_dune_lang_version (t : t) = Option.map (enclosing_dune_project_context t) ~f:(function | Error _ as err -> err | Ok dune_project_context -> Ok (Dune_project_context.dune_lang_version dune_project_context)) ;;
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>