rodo/args.rkt

47 lines
1.4 KiB
Racket

#lang racket/base
(require (prefix-in config: "config.rkt")
(prefix-in init: "init.rkt")
(prefix-in file: racket/file)
(prefix-in messages: "messages.rkt")
(prefix-in utils: "utils.rkt"))
(provide (all-defined-out))
(define (check-args args)
(let ([args-length (length args)]
[is-member? (lambda (command) (member (list-ref args 0) command))])
(cond
[(equal? args-length 0)
(utils:display-messages '(show-usage))]
;; help
[(and (equal? args-length 1)
(is-member? config:help-commands))
(utils:display-messages '(show-help))]
;; initialize
[(and (equal? args-length 1)
(is-member? config:initialize-commands))
(init:check-initialize-conditions)]
;; add
[(and (>= args-length 2)
(is-member? config:add-commands))
(utils:check-add-conditions args)]
;; list
[(and (equal? args-length 1)
(is-member? config:list-commands))
(utils:check-list-conditions)]
;; remove
[(and (equal? args-length 2)
(is-member? config:remove-commands)
(real? (string->number (list-ref args 1)))
(or (positive? (string->number (list-ref args 1)))
(zero? (string->number (list-ref args 1)))))
(utils:check-remove-conditions args)]
[else (utils:display-messages '(show-usage))])))