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!

Leave a reply