Re: [Chicken-users] local metafile use to create an egg

2008-01-14 Thread minh thu
14 Jan 2008 18:02:15 -0200, Mario Domenech Goulart <[EMAIL PROTECTED]>:
> Hi minh thu,
>
> On Mon, 14 Jan 2008 15:02:55 +0100 "minh thu" <[EMAIL PROTECTED]> wrote:
>
> > Currently, I use a makefile to build an egg. Is it possible to create
> > it with the same process .meta file is automatically used when
> > committing in svn (i.e. locally, with no real commit)?
>
> I don't know if I understand what you want.  Maybe the script below
> can do the trick.  It packs an egg based on the information from the
> meta file found under the given egg directory.
>
> It assumes tar is installed and it doesn't generate the HTML
> documentation from eggdoc or wiki files (just ignores it).
>
> Example of use:
>
> $ csi -s eggify.scm ~/src/chicken-eggs/spiffy/trunk
> spiffy-base.scm
> spiffy.scm
> ssp-handler.scm
> web-scheme-handler.scm
> cgi-handler.scm
> simple-directory-handler.scm
> spiffy.setup
>
> $ cp ~/src/chicken-eggs/spiffy/trunk/spiffy.egg .
>
> $ chicken-setup spiffy.egg
>   gzip -d -c ../spiffy.egg | tar xf -
>   /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 
> -no-trace spiffy-base.scm
>   /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 
> -no-trace ssp-handler.scm
>   ...
>   rm -fr spiffy.egg-dir
>
>
> 8<
>
> (use posix (srfi 1))
>
> (define (eggify eggdir)
>   (let* ((metafiles (glob (make-pathname eggdir "*" "meta"
> (when (null? metafiles)
>   (die "Couldn't find any metafile."))
> (let* ((metafile (car metafiles))
>(metadata (handle-exceptions exn
> (die metafile ": syntax error.")
> (with-input-from-file metafile read)))
>(egg (car (alist-ref 'egg metadata)))
>(eggname (pathname-file egg))
>(doc-from-wiki (alist-ref 'doc-from-wiki metadata))
>(eggdoc (alist-ref 'eggdoc metadata))
>(files (alist-ref 'files metadata)))
>   (when (or doc-from-wiki eggdoc) ;; ignores documentation
> (set! files (delete (make-pathname #f eggname "html") files)))
>   (change-directory eggdir)
>   (system (string-append "tar czvf " egg " " (string-intersperse 
> files))
>
> (define (usage #!optional exit-code)
>   (print "Usage: " (program-name) " ")
>   (when exit-code
> (exit exit-code)))
>
> (define (die . msg)
>   (print (apply conc msg))
>   (exit 1))
>
> (let ((args (command-line-arguments)))
>   (if (< (length args) 1)
>   (usage 1)
>   (let ((arg1 (car args)))
> (if (member arg1 '("-h" "--help" "-help"))
> (usage 0)
> (begin
>   (unless (file-exists? arg1)
> (die eggdir " does not exist."))
>   (eggify arg1))
>
> >8
>
> Best wishes,
> Mario
>

Gee, I wasn't asking for that much ! You correctly understood,
although I was talking about the code used by the svn hook.

Thanks a lot,
thu


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] local metafile use to create an egg

2008-01-14 Thread Mario Domenech Goulart
Hi minh thu,

On Mon, 14 Jan 2008 15:02:55 +0100 "minh thu" <[EMAIL PROTECTED]> wrote:

> Currently, I use a makefile to build an egg. Is it possible to create
> it with the same process .meta file is automatically used when
> committing in svn (i.e. locally, with no real commit)?

I don't know if I understand what you want.  Maybe the script below
can do the trick.  It packs an egg based on the information from the
meta file found under the given egg directory.

It assumes tar is installed and it doesn't generate the HTML
documentation from eggdoc or wiki files (just ignores it).

Example of use:

$ csi -s eggify.scm ~/src/chicken-eggs/spiffy/trunk
spiffy-base.scm
spiffy.scm
ssp-handler.scm
web-scheme-handler.scm
cgi-handler.scm
simple-directory-handler.scm
spiffy.setup

$ cp ~/src/chicken-eggs/spiffy/trunk/spiffy.egg .

$ chicken-setup spiffy.egg
  gzip -d -c ../spiffy.egg | tar xf -
  /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 
-no-trace spiffy-base.scm
  /usr/local/chicken-2.732/bin/csc -feature compiling-extension -s -O2 
-no-trace ssp-handler.scm
  ...
  rm -fr spiffy.egg-dir


8<

(use posix (srfi 1))

(define (eggify eggdir)
  (let* ((metafiles (glob (make-pathname eggdir "*" "meta"
(when (null? metafiles)
  (die "Couldn't find any metafile."))
(let* ((metafile (car metafiles))
   (metadata (handle-exceptions exn
(die metafile ": syntax error.")
(with-input-from-file metafile read)))
   (egg (car (alist-ref 'egg metadata)))
   (eggname (pathname-file egg))
   (doc-from-wiki (alist-ref 'doc-from-wiki metadata))
   (eggdoc (alist-ref 'eggdoc metadata))
   (files (alist-ref 'files metadata)))
  (when (or doc-from-wiki eggdoc) ;; ignores documentation
(set! files (delete (make-pathname #f eggname "html") files)))
  (change-directory eggdir)
  (system (string-append "tar czvf " egg " " (string-intersperse files))
  
(define (usage #!optional exit-code)
  (print "Usage: " (program-name) " ")
  (when exit-code
(exit exit-code)))

(define (die . msg)
  (print (apply conc msg))
  (exit 1))

(let ((args (command-line-arguments)))
  (if (< (length args) 1)
  (usage 1)
  (let ((arg1 (car args)))
(if (member arg1 '("-h" "--help" "-help"))
(usage 0)
(begin
  (unless (file-exists? arg1)
(die eggdir " does not exist."))
  (eggify arg1))

>8

Best wishes,
Mario


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] local metafile use to create an egg

2008-01-14 Thread minh thu
Hi,

Currently, I use a makefile to build an egg. Is it possible to create
it with the same process .meta file is automatically used when
committing in svn (i.e. locally, with no real commit)?

Thanks,
mt


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users