Metadata-Version: 2.2
Name: makex
Version: 20250301
Summary: Build tool
Author: Nate Skulic, MetaCompany
License: LicenseRef-MetaCompany-Source-License-2024-1
Project-URL: Homepage, https://meta.company/go/makex
Project-URL: Documentation, https://meta.company/go/makex
Project-URL: Repository, https://hg.sr.ht/~metacompany/makex
Project-URL: History, https://hg.sr.ht/~metacompany/makex/browse/HISTORY.md?rev=tip
Keywords: build,make,automation
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: toml>=0.10.2; python_version < "3.11"
Provides-Extra: use-reflink
Provides-Extra: use-xattr
Provides-Extra: development
Requires-Dist: pyproject-requirements; extra == "development"
Provides-Extra: fix
Requires-Dist: libcst; extra == "fix"
Requires-Dist: black; extra == "fix"
Provides-Extra: build
Requires-Dist: build; extra == "build"
Requires-Dist: shtab; extra == "build"
Requires-Dist: pex; extra == "build"
Requires-Dist: nuitka; extra == "build"
Requires-Dist: pytest; extra == "build"
Requires-Dist: shtab; extra == "build"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-benchmark; extra == "test"
Requires-Dist: pytest-cov~=3.0.0; extra == "test"
Provides-Extra: documents
Requires-Dist: sphinx; extra == "documents"
Requires-Dist: sphinx-better-theme; extra == "documents"
Requires-Dist: sphinx-notfound-page; extra == "documents"
Requires-Dist: myst-parser; extra == "documents"
Requires-Dist: markdown-it-py[linkify,plugins]; extra == "documents"
Provides-Extra: typechecking
Requires-Dist: typing_extensions; extra == "typechecking"
Requires-Dist: mypy; extra == "typechecking"

# makex

<!-- heading -->

Makex is a modern build and automation tool.

It __*makex*__ stuff happen. 🙂

<!-- heading:end -->

<!-- features -->

## What Makex is used for

- Compiling software/applications/firmware
- Building file systems/trees/images/file archives
- Building and deploying websites and web applications
- Running things repeatably
- Replacing most or all of the other build systems

## Features 🍩

- Task based
- Familiar Syntax
- File Hashing and Checksums
- Dependency Graphs
- Caching
- Workspaces
- Copy on Write

<!-- features:end -->

<!-- links -->
## Links 🔗

- [Documentation](https://meta.company/go/makex)
- [Installation Instructions](https://documents.meta.company/makex/latest/install)
- [Troubleshooting](https://documents.meta.company/makex/latest/trouble)
- Support: [Google Groups](http://groups.google.com/group/makex) or [makex@googlegroups.com](mailto://makex@googlegroups.com)

<!-- links:end -->

<!-- quick-start -->

## Requirements 

- Python >= 3.9

## Quick Start 🏎️

1. Install:

  ```shell
  pip install makex
  ```

2. Define a Makex file and name it `Makexfile` (or `makexfile`, if you prefer):

  ```python 
  task(
      name="hello",
      steps=[
          write("hello-world.txt", "Hello World!"),
  
          # you may also execute things:
          # execute("echo", "Hello World!"),
          
          # or just print things:
          # print("Hello World!"),
          
          # more actions can go here; 
          # such as copying, mirroring or archiving...
      ],
      outputs=[
          "hello-world.txt",
      ],
  )
  ```

3. Run makex, specifying the task name:

  ```shell
  makex run hello
  ```

4. A file at `$PWD/_output_/hello/hello-world.txt` shall have the following contents:

  ```
  Hello World!
  ```

Read the [documentation](https://meta.company/go/makex) to learn more.

## Limitations

- Mac support is not tested.
- Windows is not tested or supported (yet).


## Pronunciation 🗣

Makex is pronounced "makes", ˈmeɪks, ˈmeɪkˈɛks (or just "make" 🙂)

## Related

- [Make](https://en.wikipedia.org/wiki/Make_(software))

## Coming Soon

- Dynamic Task/Resource Allocation
- Task Tags/Labels
- Regular Expressions
- Intellij/VSCode integration

```{note}
This is an early release of Makex. Things may change. Those changes will be noted in the HISTORY file (especially major ones).

With that, Makex is being used extensively by us. We've created many tasks and Makex files, and we don't want to create more work. 🫡

If you have any problems, feel free to contact us. 
```

<!--
# or, you can use the shell, but it is not recommended:
# shell(f"echo 'Hello World!' > {self.path}/hello-world.txt"),
-->

