! Copyright (C) 2017 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays concurrency.combinators concurrency.semaphores fry
-io io.directories io.encodings.utf8 io.files.info io.launcher
-io.pathnames kernel math namespaces sequences splitting
-system-info unicode ;
+USING: accessors arrays concurrency.combinators
+concurrency.semaphores io io.directories io.encodings.utf8
+io.files.info io.launcher io.pathnames kernel math namespaces
+sequences splitting system-info unicode ;
IN: cli.git
SYMBOL: cli-git-num-parallel
cli-git-num-parallel [ cpus 2 * ] initialize
-: git-command>string ( quot -- string )
+: git-command>string ( desc -- string )
utf8 <process-reader> stream-contents [ blank? ] trim-tail ;
-: git-command>lines ( quot -- string )
- utf8 <process-reader> stream-lines ;
-
: git-clone-as ( uri path -- process ) [ { "git" "clone" } ] 2dip 2array append run-process ;
: git-clone ( uri -- process ) [ { "git" "clone" } ] dip suffix run-process ;
: git-pull* ( -- process ) { "git" "pull" } run-process ;
: git-rev-parse* ( branch -- string ) [ { "git" "rev-parse" } ] dip suffix git-command>string ;
: git-rev-parse ( path branch -- string ) '[ _ git-rev-parse* ] with-directory ;
: git-diff-name-only* ( from to -- lines )
- [ { "git" "diff" "--name-only" } ] 2dip 2array append git-command>lines ;
+ [ { "git" "diff" "--name-only" } ] 2dip 2array append process-lines ;
: git-diff-name-only ( path from to -- lines )
'[ _ _ git-diff-name-only* ] with-directory ;
_ [ update-repository ] with-semaphore
] parallel-each
] with-ensure-directory ;
+
+: directory-entries-without-git ( directory -- entries )
+ recursive-directory-entries
+ [ name>> "/.git/" swap subseq? ] reject ;
\ No newline at end of file