#lang racket/base (require (for-syntax "make.rkt") (prefix-in ext: "extension.rkt") racket/contract) (define-struct user (name uid gid home shell) #:transparent) (define (build-user name uid gid home shell) (make-user (bytes->string/locale name) uid gid (bytes->path home) (bytes->path shell))) (define info (compose build-user (case-lambda (() (ext:info)) ((name) (ext:info (string->bytes/locale name)))))) (provide (struct-out user)) (provide/contract (info (->* () (string?) user?)))