Metadata-Version: 2.1
Name: ixian
Version: 0.2.6
Summary: Task tool with make-like features.
Home-page: https://github.com/kreneskyp/ixian
Author: Peter Krenesky
Author-email: kreneskyp@gmail.com
Maintainer: Peter Krenesky
Maintainer-email: kreneskyp@gmail.com
License: Apache License, Version 2.0
Keywords: tasks, shovel, rake, make, ixian, ix
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Build Tools
Description-Content-Type: text/markdown
Requires-Dist: argcomplete (==1.9.4)
Requires-Dist: argparse (==1.4.0)
Requires-Dist: string-color (==1.2.1)

![test](https://github.com/kreneskyp/ixian/workflows/test/badge.svg)
[![Documentation Status](https://readthedocs.org/projects/docs/badge/?version=latest)](https://ixian.readthedocs.io/en/latest/)

# Ixian

Ixian is a modular task tool written in python3. It is intended to be a
replacement for Make, emulating and expanding on some of it's most useful 
features.

## Installation

``` 
pip install ixian
```

## Setup

Create an `ixian.py` file where you intend to call `ix` from. Optionally set `IXIAN_CONFIG` to tell
ixian where to find it.

Within that file create an `init` method that loads modules and configures settings.

```python
from ixian.config import CONFIG
from ixian.module import load_module


def init():
    # Load modules which contain tasks
    load_module('ixian.modules.core')

    # Update settings
    CONFIG.PROJECT_NAME = 'testing'
```

## Create a task 

Tasks are created by extending the task class. 

```python
from ixian.task import Task

class MyTask(Task):
    """
    The docstring will be used as help text.
    """

    name = 'my_task'
    short_description = 'description will be shown in general help'

    def execute(self, *args, **kwargs)
        print(args, kwargs)
```

## Run a task
The task may then be called using the `ix` runner. 

```
ix my_task
```

Args passed to the runner are passed to the task as `args`
```
ix my_task arg1 arg2
```

## Builtin help
A list of available commands is available by calling `ix` or `ix --help`.

Access built-in help for any task by calling `ix help my_task`. Builtin help should display how to
use the task, enumerate any relevent environment variables, and display the status of any checks.



