pyKook 0.0.1 - a simple build tool similar to Make or Ant
I have released pyKook 0.0.1.
pyKook is a simple build tool similar to Make, Ant, Rake, or SCons. pyKook regards software project as cooking. Terms used in pyKook are cooking terms.
For example:
- cookbook : Makefile
- product : target file
- ingredient : source file
- recipe : how to create target from source
Cookbook (= Makefile) is written in pure Python. You can write any statements or expressions in cookbook.
Example of cookbook (Kookbook.py)
##
## properties
##
cc = prop('cc', 'gcc')
cflags = prop('cflags', '-g -Wall')
##
## recipes
##
@ingreds("hello")
def task_all(c):
pass
@product("hello")
@ingreds("hello.o")
def file_command(c):
"""generates hello command"""
system(c%"$(cc) $(cflags) -o $(product) $(ingred)")
@product("*.o")
@ingreds("$(1).c", if_exists("$(1).h"))
def file_ext_o(c):
"""compile '*.c' and '*.h'"""
system(c%"$(cc) $(cflags) -c $(1).c")
def task_clean(c):
rm_f("*.o")
Exampe of result
sh> ls
Kookbook.py hello.c hello.h
sh> pykook -l
Properties:
cc : 'gcc'
cflags : '-g -Wall'
Task recipes:
all : cook all products
clean : remove by-products
File recipes:
hello : generates hello command
*.o : compile '*.c' and '*.h'
(Tips: you can set 'kook_default_product' variable in your kookbook.)
sh> pykook all # or, pykook --cc=gcc4 all
### *** hello.o (func=file_ext_o)
$ gcc -g -Wall -c hello.c
### ** hello (func=file_command)
$ gcc -g -Wall -o hello hello.o
### * all (func=task_all)
See users-guide for more details.
Have fun!