+ (when
+ (not (cl-ppcre:scan "^[0-9A-Za-z-]*$" name))
+ (error "Name contains invalid characters"))
+ (when
+ (not (git nil "ls-remote" src))
+ (error "Project uri is not a valid git repository"))
+ (when
+ (find name *all-project* :test #'string= :key #'project-name)
+ (error "Project name already taken"))
+ (let
+ ((project (make-project :name name :src src)))
+ (ensure-directories-exist (project-dir project))
+ (git project "clone" src "."))