
releases:

  - release:  0.0.3
    date:
    changes:

      - IMPORTANT!!
        New '@recipe' decorator is required for each recipe function.
        If function is decorated by '@recipe', 'task_' prefix is not necessary.

        ex:
          ## previous version
          def task_clean(c):    # 'task_' prefix is required
            rm_rf("*.o")
        
          ## since this release
          @release              # @release decorator is required
          def clean(c):         # 'task_' prefix is not necessary
            rm_rf("*.o")
        
        See http://www.kuwata-lab.com/kook/pykook-users-guide.html#cookbook-recipekind
        for details.

      - Library codes are much refactored.

    enhancements:

      - IMPORTANT!!
        New feature to support command-line script framework.
        You can convert Kookbook.py into command-line script.
        See http://www.kuwata-lab.com/kook/pykook-users-guide.html#topic-framework
        for details.

      - New command-line option '-n' (no exec) supported.
        If you specify '-n', commands such as 'cp()' or 'rm()' are not executed.
        In other words, '-n' means 'dry-run'.

      - Add a lot of test scripts.

    bugfixes:

      - A bug related timestamp detection is now fixed.
        There was a case that product file was not updated even when
        ingredient files were updated.

      - A bug about recipe tree is fixed. There was a case that the same recipe
        can be invoke more than once when an intermediate recipe was required
        from several recipes.


  - release:  0.0.2
    date:     2009-07-30
    enhancements:

      - Python 3 support.

      - Add 'kk' script which is shortcat for kk command.

    changes:

      - Decorator '@cmdopts()' is renamed to '@spices()', and
        there is no need to call parse_cmdopts().
        
            ### prev version
            @cmdopts('-v: verbose', '-f file: filename')
            def task_example(c, *args):
                opts, rests = c.parse_cmdopts(args)
                verbose = opts.get('v', False):
                fileame = opts.get('f', None)
            
            ### since this release (0.0.2)
            @spices('-v: verbose', '-f file: filename')
            def task_example(c, *args, *kwargs):
                opts, rests = kwarts, args
                verbose = opts.get('v', False):
                fileame = opts.get('f', None)

      - Remove 'pyk' script

      - Testing library is changed from Python's unittest library
        into 'test/oktest.py'.

    bugfixes:

      - glob2() now recognizes files on current directory.


  - release:  0.0.1
    date:     2008-10-19
    enhancements:

      - First release
