# yam: yet another make
[![tests][test_badge]][test_url]
[![license][licence_badge]][licence_url]
[![pypi][pypi_badge]][pypi_url]
[![downloads][pepy_badge]][pepy_url]
[![code style: black][black_badge]][black_url]
[![build automation: yam][yam_badge]][yam_url]
[![Lint: ruff][ruff_badge]][ruff_url]
`yam` offers an alternative tool to control the housekeeping tasks of a project,
as well as the creation of executables and non-source files from source files. It's
inspired from `GNU make`, but offers more flexibility with regular expressions
and phony targets.
## Features
### Phony timestamps
Makefiles are nowadays used more and more often to execute phony targets as with
interpreted languages, there is no compiled file as output. The prerequisites are
often other phony targets, which can add unnecessary rebuilds. `yam` can keep the
track if there is a need to rebuild the phony target, and avoid them.
### Regex recipes
`GNU make` targets can only have only a single % in a pattern. This is rather restrictive,
especially in web development. `yam` allows a prerequisite or a target to be a regex,
allowing much more flexibility.
### Variety of configuration files
`yam` allows a multiple file types to configure it, to fit your needs: `toml`, `yaml`,
and `json` files are all welcome here.
### Local overrides
We realise that the modern development is a team sport, and that developers need the
freedom to configure something that isn't optimal for their environment. Following the
great UNIX tradition, everything in a cookbook can be locally overridden by files with
the same extension inside a directory named `<cookbook_filename>.d/`.
## Links
- [Documentation]
- [Changelog]
[test_badge]: https://github.com/spapanik/yamk/actions/workflows/tests.yml/badge.svg
[test_url]: https://github.com/spapanik/yamk/actions/workflows/tests.yml
[licence_badge]: https://img.shields.io/pypi/l/yamk
[licence_url]: https://github.com/spapanik/yamk/blob/main/docs/LICENSE.md
[pypi_badge]: https://img.shields.io/pypi/v/yamk
[pypi_url]: https://pypi.org/project/yamk
[pepy_badge]: https://pepy.tech/badge/yamk
[pepy_url]: https://pepy.tech/project/yamk
[black_badge]: https://img.shields.io/badge/code%20style-black-000000.svg
[black_url]: https://github.com/psf/black
[yam_badge]: https://img.shields.io/badge/build%20automation-yamk-success
[yam_url]: https://github.com/spapanik/yamk
[ruff_badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json
[ruff_url]: https://github.com/charliermarsh/ruff
[Documentation]: https://yamk.readthedocs.io/en/stable/
[Changelog]: https://github.com/spapanik/yamk/blob/main/docs/CHANGELOG.md
[Project Euler]: https://projecteuler.net/
[leetcode]: https://leetcode.com/
[topcoder]: https://www.topcoder.com/
Raw data
{
"_id": null,
"home_page": "https://yamk.readthedocs.io/en/stable/",
"name": "yamk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "build, cli, make",
"author": "Stephanos Kuma",
"author_email": "\"Stephanos Kuma\" <stephanos@kuma.ai>",
"download_url": "https://files.pythonhosted.org/packages/58/d7/0ebfce329f38c9c4706defab4c81ff57508a8fbb93d29f0b7860620b7c18/yamk-8.1.2.tar.gz",
"platform": null,
"description": "# yam: yet another make\n\n[![tests][test_badge]][test_url]\n[![license][licence_badge]][licence_url]\n[![pypi][pypi_badge]][pypi_url]\n[![downloads][pepy_badge]][pepy_url]\n[![code style: black][black_badge]][black_url]\n[![build automation: yam][yam_badge]][yam_url]\n[![Lint: ruff][ruff_badge]][ruff_url]\n\n`yam` offers an alternative tool to control the housekeeping tasks of a project,\nas well as the creation of executables and non-source files from source files. It's\ninspired from `GNU make`, but offers more flexibility with regular expressions\nand phony targets.\n\n## Features\n\n### Phony timestamps\n\nMakefiles are nowadays used more and more often to execute phony targets as with\ninterpreted languages, there is no compiled file as output. The prerequisites are\noften other phony targets, which can add unnecessary rebuilds. `yam` can keep the\ntrack if there is a need to rebuild the phony target, and avoid them.\n\n### Regex recipes\n\n`GNU make` targets can only have only a single % in a pattern. This is rather restrictive,\nespecially in web development. `yam` allows a prerequisite or a target to be a regex,\nallowing much more flexibility.\n\n### Variety of configuration files\n\n`yam` allows a multiple file types to configure it, to fit your needs: `toml`, `yaml`,\nand `json` files are all welcome here.\n\n### Local overrides\n\nWe realise that the modern development is a team sport, and that developers need the\nfreedom to configure something that isn't optimal for their environment. Following the\ngreat UNIX tradition, everything in a cookbook can be locally overridden by files with\nthe same extension inside a directory named `<cookbook_filename>.d/`.\n\n## Links\n\n- [Documentation]\n- [Changelog]\n\n[test_badge]: https://github.com/spapanik/yamk/actions/workflows/tests.yml/badge.svg\n[test_url]: https://github.com/spapanik/yamk/actions/workflows/tests.yml\n[licence_badge]: https://img.shields.io/pypi/l/yamk\n[licence_url]: https://github.com/spapanik/yamk/blob/main/docs/LICENSE.md\n[pypi_badge]: https://img.shields.io/pypi/v/yamk\n[pypi_url]: https://pypi.org/project/yamk\n[pepy_badge]: https://pepy.tech/badge/yamk\n[pepy_url]: https://pepy.tech/project/yamk\n[black_badge]: https://img.shields.io/badge/code%20style-black-000000.svg\n[black_url]: https://github.com/psf/black\n[yam_badge]: https://img.shields.io/badge/build%20automation-yamk-success\n[yam_url]: https://github.com/spapanik/yamk\n[ruff_badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json\n[ruff_url]: https://github.com/charliermarsh/ruff\n[Documentation]: https://yamk.readthedocs.io/en/stable/\n[Changelog]: https://github.com/spapanik/yamk/blob/main/docs/CHANGELOG.md\n[Project Euler]: https://projecteuler.net/\n[leetcode]: https://leetcode.com/\n[topcoder]: https://www.topcoder.com/\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Yet another make",
"version": "8.1.2",
"project_urls": {
"Documentation": "https://yamk.readthedocs.io/en/stable/",
"Homepage": "https://yamk.readthedocs.io/en/stable/",
"Repository": "https://github.com/spapanik/yamk"
},
"split_keywords": [
"build",
" cli",
" make"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "348408e69a07690fa12d666599dee6dfe1849f9ec905e46d4f31c114d3b1f06d",
"md5": "519dabc8f4d024bd65f53f6c772d0c08",
"sha256": "03b7b35f02b2c356eafab598ce93037b826b9ded0ddde2eb18271a5c356c785e"
},
"downloads": -1,
"filename": "yamk-8.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "519dabc8f4d024bd65f53f6c772d0c08",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 13850,
"upload_time": "2024-10-18T15:04:32",
"upload_time_iso_8601": "2024-10-18T15:04:32.187206Z",
"url": "https://files.pythonhosted.org/packages/34/84/08e69a07690fa12d666599dee6dfe1849f9ec905e46d4f31c114d3b1f06d/yamk-8.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "58d70ebfce329f38c9c4706defab4c81ff57508a8fbb93d29f0b7860620b7c18",
"md5": "c8337c6d52f018d5a17341325928aed3",
"sha256": "420561b75c3f8144dd3a1154930926cdb6e5bdc29d40529053ea28dd38733756"
},
"downloads": -1,
"filename": "yamk-8.1.2.tar.gz",
"has_sig": false,
"md5_digest": "c8337c6d52f018d5a17341325928aed3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 13169,
"upload_time": "2024-10-18T15:04:33",
"upload_time_iso_8601": "2024-10-18T15:04:33.995986Z",
"url": "https://files.pythonhosted.org/packages/58/d7/0ebfce329f38c9c4706defab4c81ff57508a8fbb93d29f0b7860620b7c18/yamk-8.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-18 15:04:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "spapanik",
"github_project": "yamk",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "yamk"
}