All Projects β†’ frissyn β†’ pyke

frissyn / pyke

Licence: MIT License
πŸ”¨πŸ Make-like build utility for Python projects with extensive DSL features

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to pyke

aseprite-macos-buildsh
Automated script to create latest release app (either beta, or release whichever is newer) of Aseprite for macOS
Stars: ✭ 143 (+1000%)
Mutual labels:  build-automation, build-tool
Xake
Another MAKE utility implementation on F#, fully declarative with no-brain parallelism, inspired by Shake
Stars: ✭ 24 (+84.62%)
Mutual labels:  build-automation, build-tool
millwright
The easiest build tool you'll ever use.
Stars: ✭ 27 (+107.69%)
Mutual labels:  build-automation, build-tool
Earthly
Repeatable builds
Stars: ✭ 5,805 (+44553.85%)
Mutual labels:  build-automation, build-tool
unity-build-pipeline
Custom BASH script for build, archive, export and upload APK and IPA to server with Telegram notification
Stars: ✭ 59 (+353.85%)
Mutual labels:  build-automation, build-tool
Build Harness
πŸ€–Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (+1715.38%)
Mutual labels:  build-automation, build-tool
UnityBuildManager
Utility for running builds sequence & pushing them to markets & keeping changelog
Stars: ✭ 53 (+307.69%)
Mutual labels:  build-automation, build-tool
Aria2 Build Msys2
aria2 build scripts on msys2 with custom patches.
Stars: ✭ 112 (+761.54%)
Mutual labels:  build-automation, build-tool
Nginx-builder
A tool to build deb or rpm package of required Nginx version from the source code, with the ability to connect third-party modules. Nginx parameters are set in the yaml configuration file.
Stars: ✭ 143 (+1000%)
Mutual labels:  build-automation, build-tool
makestudio
Setup your Delphi Environment very easily - build your projects with more comfort
Stars: ✭ 43 (+230.77%)
Mutual labels:  build-automation, build-tool
Zeus
An Electrifying Build System
Stars: ✭ 176 (+1253.85%)
Mutual labels:  build-automation, build-tool
build
Build system scripts based on GENie (https://github.com/bkaradzic/genie) project generator
Stars: ✭ 30 (+130.77%)
Mutual labels:  build-automation, build-tool
Baumeister
πŸ‘· The aim of this project is to help you to build your things. From Bootstrap themes over static websites to single page applications.
Stars: ✭ 171 (+1215.38%)
Mutual labels:  build-automation, build-tool
makeme
Embedthis MakeMe
Stars: ✭ 26 (+100%)
Mutual labels:  build-automation, build-tool
Nginx Builder
A tool to build deb or rpm package of required Nginx version from the source code, with the ability to connect third-party modules. Nginx parameters are set in the yaml configuration file.
Stars: ✭ 123 (+846.15%)
Mutual labels:  build-automation, build-tool
psh
PSH - PHP shell helper
Stars: ✭ 60 (+361.54%)
Mutual labels:  build-automation, build-tool
Make.go
A Go script that could replace your Makefile.
Stars: ✭ 105 (+707.69%)
Mutual labels:  build-automation, build-tool
Walk
A fast, general purpose, graph based build and task execution utility.
Stars: ✭ 108 (+730.77%)
Mutual labels:  build-automation, build-tool
native-samples
Samples of modern build automation for native languages with Gradle
Stars: ✭ 140 (+976.92%)
Mutual labels:  build-automation, build-tool
Textrude
Code generation from YAML/JSON/CSV models via SCRIBAN templates
Stars: ✭ 79 (+507.69%)
Mutual labels:  build-automation, build-tool

Pyke

(WIP, Beta Release) Make-like build automation tool for Python projects with extensive DSL features.

Features:

  • Users can specify tasks, subtasks, and task rules.
  • Use regex rules patterns to create targets for tasks.
  • Significantly less confusing than Makefiles (is that a tab or space...?)
  • Complete Python DSL with full access to builtins and external dependencies.
  • [WIP] Run and execute tasks in parallel with each other (threaded multitasking).

Example:

import pyke

# create a defualt task, named "build"
@pyke.task("build", default=True)
def build():
    print("Building the project...")

# create a task dependency. running `pyke dist` 
# will make the "build" task run first! 
@pyke.task("dist", deps=["build"])
def dist():
    print("Distributing the project...")

pyke.run()

Put that in a Pykefile and you're good to go. Then run pyke in the same directory and watch the magic happen!

$ pyke dist
Building the project...
Distributing the project...

Installation:

Install the pykefile library with pip. Requires Python 3.8 or higher.

python -m pip install pykefile

You can also add it your developement dependencies with poetry.

python -m poetry add pykefile --dev 

Usage:

Just like any other Makefile, you'll need the Pykefile in your current directory. (Pykefile.py also works)

Then use the pyke command to execute and run specified tasks.

Running pyke without any commands will call the default task if there is one. The first argument will call a task by that name.

Developement:

  1. Fork the repository: Fork
  2. Clone locally (git clone https://github.com/<username>/pyke.git)
  3. Create your feature branch (git checkout -b my-new-feature)
  4. Commit your changes (git commit -a -m 'Add some feature')
  5. Push to the branch (git push origin my-new-feature)
  6. Create a new Pull Request! πŸŽ‰

Local Developement:

In order to properly test the pyke commands, install the package locally like so:

python -m pip install -e .

You can now use pyke in your terminal, and it will automatically use the latest changes to the source code.

Use bash bin/build to build the project. bash bin/docs will update and start the documentation server locally.

Final Notes:

Pyke is still in beta and I'm open to feature requests or bug reports. Feel free to open an issue! Thanks for checking this project out and I hope it'll make your Python developement process easier!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].