Perhaps I should have clarified this better, but

My application is an executable built with "create-embedding-executable", not a 
package, I'm not sure that the info.rkt can be compiled and packaged inside an 
exe.

I would like to have this information compiled as a .zo file and embedded into 
this executable, so it cannot easily changed. My current solution is writing a 
separate file which is read at run-time, similar to what you proposed, but this 
has the downside that one can change the version just by editing the file.

For reference, the application is https://github.com/alex-hhh/ActivityLog2, you 
can have a look at build.rkt for how it is currently done (it creates the file 
build-id.txt).

Cheers,
Alex.

On Friday, January 6, 2017 at 10:31:43 AM UTC+8, WarGrey Gyoudmon Ju wrote:
> A racket application usually has an `info.rkt` file in the root directory of 
> the project/package/collection.
> see https://docs.racket-lang.org/raco/getinfo.html
> 
> 
> You can put your meta information in that file than read it with 
> (get-info/full dirpath) which returns a function that works like `hash-ref`.
> 
> 
> I recommend that way, there are also other alternatives.
> One that match your example is, just (write)ing a racket list into 
> "app-version.rktl" (note, "rktl" is also a conventional name, the "l" stands 
> for "load"),
> then you can (read) back it:
> 
> 
> 
> (match-define (list app-version app-commit-id app-build-date)
>   (with-handlers ([exn:fail:filesystem? (lambda [e] (list "dev build" 
> "unknown" "no build"))])
>     (call-with-input-file "app-version.rkt" read)))
> 
> 
> This alternative is simpler than the one using `info.rkt` when you update the 
> meta information programmatically.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to