Metadata-Version: 2.1
Name: mxmake
Version: 1.0a2
Summary: Generates a Python project-specific Makefile by using an extensible library of configurable Makefile snippets.
Author-email: MX Stack Developers <dev@bluedynamics.com>
License: BSD 2-Clause License
Project-URL: Homepage, https://github.com/mxstack/mxmake
Project-URL: Documentation, https://mxstack.github.io/mxmake
Project-URL: Bug Reports, https://github.com/mxstack/mxmake/issues
Project-URL: Source, https://github.com/mxstack/mxmake
Keywords: development,deployment,environment
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Provides-Extra: mypy
Provides-Extra: docs
Provides-Extra: test
License-File: LICENSE.md

<img src="docs/source/_static/mxmake-logo.svg?raw=true"
     alt="mxmake logo"
     align="right"
     style="float: right; margin-left: 10px; margin-bottom: 10px; width: 25%" /> *mxmake* [mɪks meɪk] generates a project-specific Makefile by using an extensible library of configurable Makefile snippets.

It targets the development environments for Python packages but may be used outside of this playground.

[![Latest PyPI version](https://img.shields.io/pypi/v/mxmake.svg)](https://pypi.python.org/pypi/mxmake)
[![Number of PyPI downloads](https://img.shields.io/pypi/dm/mxmake.svg)](https://pypi.python.org/pypi/mxmake)
[![tests](https://github.com/mxstack/mxmake/actions/workflows/test.yaml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/test.yaml)
[![mypy](https://github.com/mxstack/mxmake/actions/workflows/mypy.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/mypy.yml)
[![Lint](https://github.com/mxstack/mxmake/actions/workflows/codestyle.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/codestyle.yml)

# Documentation

The detailed `mxmake` documentation is available [mxstack.github.io/mxmake](https://mxstack.github.io/mxmake).


# Copyright

- Copyright (c) 2022-2023 mxstack Contributors
- BSD 2-clause license (see below)

Contributors
============

- Robert Niederreiter
- Jens Klein
# Changelog

## 1.0a2 (2023-07-07)

- Add support for `pip.conf` file.

- Fixes #18: VENV_CREATE is ignored.

- Fix error when new source package gets added to `mx.ini` in
  `Hook.generate_additional_sources_targets`.

- Add `PROJECT_CONFIG` as the dependency target of `SOURCES_TARGET` to make
  sure the target runs when a new source package gets added to `mx.ini`.

## 1.0a1 (2023-05-05)

- Add `zest-releaser` domain to `applications` topic.

- Support custom makefile include.

- Support `pytest` as a test runner and make it default if not configured
  otherwise.

- Add `RUN_TARGET` setting to `base` domain and generate `run` target in
  `Makefile`.

- Create `twisted` domain in `applications` topic.

- Test and coverage templates consider `mxmake-test-path`, `mxmake-source-path`
  and `mxmake-omit-path` in `settings` section of `mx.ini` to support inclusion
  of local package in `run-tests.sh` and `run-coverage.sh` scripts.

- Create `scss` domain in `js` topic.

- Create `gettext` domain in `i18n` topic.

- Create `lingua` domain in `i18n` topic.

- Conditional add local [requirement|constraints}.txt to LOCAL_PACKAGE_FILES.

- Generate one Makefile from snippets instead of including several files from
  subfolder.

- Semantic overhaul. "Domains" become "Topics" and "Makefile" becomes "Domain".

- Use inquirer to configure included domains and targets.

- Generate initial `mx.ini` config file.

- Generate "Topic" and "Domain" docs.

- Change docs format from `rst` to `md`.

- Rename `_SENTINEL` to `_TARGET` in domains.

- generic `install` `dirty` and `clean` targets in main makefile template.

- Rename `.sentinels` folder to `.mxmake-sentinels`.

- Provide a set of default targets and a mechanism to extend it's dependency
  targets in domain make files.

- Rename `install` domain to `packages`.

- Rename `files` domain to `mxfiles`.

- Rename `venv` domain to `mxenv`.

- Extend hook to generate `sources` dependency targets for package reinstall
  (setup.py, setup.cfg, pyproject.toml, requirements.txt, constraints.txt).

- Move `tests` and `coverage` domains to `qa` topic.

- Create `black`, `mypy`, `isort` and domains in `qa` topic.

- Move `system-dependencies` to `system` topic.

- Rename `docs` domain to `sphinx` and move to `docs` topic.

- Create `zpretty` domains in `qa` topic.

- Add topic related metadata containing a topic description.

- Create `npm` domains in `js` topic.

- Create `jsdoc` domain, in `docs` topic.

- Create `rollup` domains in `js` topic.

- Create `karma` domain, in `js` topic.

- Create `zope` domain, in `applications` topic.

- Add `soft-depends` setting in domains to define conditional order of domain
  rendering.

- Make `sources` target an optional dependency.

- Extend makefile parser to provide multi line settings.

- Take local package into account to "dirty" if there (pyproject.toml,
  setup.[cfg|py]

- Check for the existence of pip in `*-clean` targets before uninstalling a
  package, to ensure the targets are working when running via the default
  `clean` target, where the entire virtual env gets removed.

- Remove redundant dependencies from `zope` domain.

- `sources` domain is now a soft dependency of `mxfiles` domain instead of the
  `packages` domain. This ensures source package checkout happens before mxmake
  generates files, because templates might gain information from source
  packages if present.

- `karma` and `rollup` targets depend on `NPM_TARGET` now.

## 0.1 (2022-05-19)

- Initial release.

# License

Copyright (c) 2022-2023, mxstack Contributors

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this
  list of conditions and the following disclaimer in the documentation and/or
  other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
