mdformat: support plugins
This commit is contained in:
@@ -1,63 +1,100 @@
|
||||
{ lib
|
||||
, buildPythonApplication
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, importlib-metadata
|
||||
, makeWrapper
|
||||
, markdown-it-py
|
||||
, poetry-core
|
||||
, pytestCheckHook
|
||||
, python3
|
||||
, pythonOlder
|
||||
, setuptools
|
||||
, tomli
|
||||
, typing-extensions
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "mdformat";
|
||||
version = "0.7.16";
|
||||
format = "pyproject";
|
||||
let
|
||||
withPlugins = plugins: buildPythonApplication {
|
||||
pname = "${package.pname}";
|
||||
inherit (package) version;
|
||||
format = "other";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "executablebooks";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-6MWUkvZp5CYUWsbMGXM2gudjn5075j5FIuaNnCrgRNs=";
|
||||
dontUnpack = true;
|
||||
dontBuild = true;
|
||||
doCheck = false;
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
makeWrapper ${package}/bin/mdformat $out/bin/mdformat \
|
||||
--prefix PYTHONPATH : "${package}/${python3.sitePackages}:$PYTHONPATH"
|
||||
ln -sfv ${package}/lib $out/lib
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = package.propagatedBuildInputs ++ plugins;
|
||||
|
||||
passthru = package.passthru // {
|
||||
withPlugins = morePlugins: withPlugins (morePlugins ++ plugins);
|
||||
};
|
||||
|
||||
meta.mainProgram = "mdformat";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
poetry-core
|
||||
setuptools
|
||||
];
|
||||
package = buildPythonPackage rec {
|
||||
pname = "mdformat";
|
||||
version = "0.7.16";
|
||||
format = "pyproject";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
markdown-it-py
|
||||
tomli
|
||||
] ++ lib.optionals (pythonOlder "3.10") [
|
||||
importlib-metadata
|
||||
] ++ lib.optionals (pythonOlder "3.7") [
|
||||
typing-extensions
|
||||
];
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
src = fetchFromGitHub {
|
||||
owner = "executablebooks";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-6MWUkvZp5CYUWsbMGXM2gudjn5075j5FIuaNnCrgRNs=";
|
||||
};
|
||||
|
||||
disabledTests = [
|
||||
# AssertionError
|
||||
"test_no_codeblock_trailing_newline"
|
||||
# Issue with upper/lower case
|
||||
"default_style.md-options0"
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
poetry-core
|
||||
setuptools
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"mdformat"
|
||||
];
|
||||
propagatedBuildInputs = [
|
||||
markdown-it-py
|
||||
tomli
|
||||
] ++ lib.optionals (pythonOlder "3.10") [
|
||||
importlib-metadata
|
||||
] ++ lib.optionals (pythonOlder "3.7") [
|
||||
typing-extensions
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "CommonMark compliant Markdown formatter";
|
||||
homepage = "https://mdformat.rtfd.io/";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
# AssertionError
|
||||
"test_no_codeblock_trailing_newline"
|
||||
# Issue with upper/lower case
|
||||
"default_style.md-options0"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"mdformat"
|
||||
];
|
||||
|
||||
passthru = {inherit withPlugins;};
|
||||
|
||||
meta = with lib; {
|
||||
description = "CommonMark compliant Markdown formatter";
|
||||
homepage = "https://mdformat.rtfd.io/";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab aldoborrero ];
|
||||
};
|
||||
};
|
||||
}
|
||||
in package
|
||||
|
||||
Reference in New Issue
Block a user