Fix a few edge cases for raco pkg new
Also fix typos/indentation
This commit is contained in:
parent
bfbce31382
commit
b38c81139a
|
@ -36,4 +36,20 @@
|
||||||
(shelly-case
|
(shelly-case
|
||||||
"folder already exists"
|
"folder already exists"
|
||||||
$ "raco pkg new repeat"
|
$ "raco pkg new repeat"
|
||||||
$ "raco pkg new repeat" =exit> 1)))))
|
$ "raco pkg new repeat" =exit> 1)
|
||||||
|
|
||||||
|
(shelly-case
|
||||||
|
"package 9999"
|
||||||
|
$ "raco pkg new 9999"
|
||||||
|
$ "raco pkg install 9999/"
|
||||||
|
$ "raco pkg remove 9999")
|
||||||
|
|
||||||
|
(shelly-case
|
||||||
|
"package %12"
|
||||||
|
$ "raco pkg new %12" =exit> 1)
|
||||||
|
|
||||||
|
(shelly-case
|
||||||
|
"package _"
|
||||||
|
$ "raco pkg new _"
|
||||||
|
$ "raco pkg install _/"
|
||||||
|
$ "raco pkg remove _")))))
|
||||||
|
|
|
@ -7,9 +7,13 @@
|
||||||
racket/system
|
racket/system
|
||||||
racket/string
|
racket/string
|
||||||
racket/date
|
racket/date
|
||||||
|
racket/format
|
||||||
setup/collection-name
|
setup/collection-name
|
||||||
"print.rkt")
|
"print.rkt")
|
||||||
|
|
||||||
|
(define (package-name? package)
|
||||||
|
(regexp-match-exact? #rx"[-_a-zA-Z0-9]*" package))
|
||||||
|
|
||||||
(define (pkg-new name)
|
(define (pkg-new name)
|
||||||
|
|
||||||
;; Useful strings
|
;; Useful strings
|
||||||
|
@ -30,9 +34,16 @@
|
||||||
(define year
|
(define year
|
||||||
(number->string (date-year (current-date))))
|
(number->string (date-year (current-date))))
|
||||||
|
|
||||||
|
(define sanitized-name
|
||||||
|
(if (string->number name)
|
||||||
|
(string-append "|" name "|")
|
||||||
|
name))
|
||||||
|
|
||||||
;; Because I wish I had @-expressions
|
;; Because I wish I had @-expressions
|
||||||
(define (expand/display str [table (hash #"name" name #"user" user
|
(define (expand/display str [table (hash #"name" name #"user" user
|
||||||
#"====" ==== #"year" year)])
|
#"====" ==== #"year" year
|
||||||
|
#"sanitized-name"
|
||||||
|
sanitized-name)])
|
||||||
(let ([in (open-input-string str)])
|
(let ([in (open-input-string str)])
|
||||||
(let loop ()
|
(let loop ()
|
||||||
(let ([m (regexp-match #rx"<<([^>]*)>>" in 0 #f (current-output-port))])
|
(let ([m (regexp-match #rx"<<([^>]*)>>" in 0 #f (current-output-port))])
|
||||||
|
@ -44,7 +55,7 @@
|
||||||
(cond
|
(cond
|
||||||
[(directory-exists? name)
|
[(directory-exists? name)
|
||||||
(pkg-error (format "cannot make package, folder exists~n path: ~a" name))]
|
(pkg-error (format "cannot make package, folder exists~n path: ~a" name))]
|
||||||
[(not (collection-name-element? name))
|
[(not (package-name? name))
|
||||||
(pkg-error (format "cannot make package, invalid collection name~n name: ~a"
|
(pkg-error (format "cannot make package, invalid collection name~n name: ~a"
|
||||||
name))]
|
name))]
|
||||||
[else
|
[else
|
||||||
|
@ -165,13 +176,13 @@ EOS
|
||||||
|
|
||||||
;; Notice
|
;; Notice
|
||||||
;; To install (from within the package directory):
|
;; To install (from within the package directory):
|
||||||
;; $ raco pkg install
|
;; $ raco pkg install
|
||||||
;; To install (once uploaded to pkgs.racket-lang.org):
|
;; To install (once uploaded to pkgs.racket-lang.org):
|
||||||
;; $ raco pkg install <<name>>
|
;; $ raco pkg install <<name>>
|
||||||
;; To uninstall:
|
;; To uninstall:
|
||||||
;; $ raco pkg remove <<name>>
|
;; $ raco pkg remove <<name>>
|
||||||
;; To view documentation:
|
;; To view documentation:
|
||||||
;; $ raco doc <<name>>
|
;; $ raco doc <<name>>
|
||||||
;;
|
;;
|
||||||
;; For your convenience, we have included a LICENSE.txt file, which links to
|
;; For your convenience, we have included a LICENSE.txt file, which links to
|
||||||
;; the GNU Lesser General Public License.
|
;; the GNU Lesser General Public License.
|
||||||
|
@ -191,7 +202,7 @@ EOS
|
||||||
)
|
)
|
||||||
|
|
||||||
(module+ main
|
(module+ main
|
||||||
;; Main entry point, executed when run with racket executable or DrRacket.
|
;; Main entry point, executed when run with the `racket` executable or DrRacket.
|
||||||
)
|
)
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
|
@ -203,13 +214,13 @@ EOS
|
||||||
(with-output-to-file (format "~a.scrbl" name)
|
(with-output-to-file (format "~a.scrbl" name)
|
||||||
(lambda () (expand/display #<<EOS
|
(lambda () (expand/display #<<EOS
|
||||||
#lang scribble/manual
|
#lang scribble/manual
|
||||||
@require[@for-label[<<name>>
|
@require[@for-label[<<sanitized-name>>
|
||||||
racket/base]]
|
racket/base]]
|
||||||
|
|
||||||
@title{<<name>>}
|
@title{<<name>>}
|
||||||
@author{<<user>>}
|
@author{<<user>>}
|
||||||
|
|
||||||
@defmodule[<<name>>]
|
@defmodule[<<sanitized-name>>]
|
||||||
|
|
||||||
Package Description Here
|
Package Description Here
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user