]> gitweb.factorcode.org Git - factor.git/commitdiff
cli.git: Allow git commands from within the directory and from without..
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 4 Jul 2018 23:32:34 +0000 (18:32 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 4 Jul 2018 23:32:34 +0000 (18:32 -0500)
extra/cli/git/git.factor

index ce9bbcc7b01b1039c9236f4468b1a5936d30fc4f..1b589a008feefca86eb16782a5a38acb7b7dff34 100644 (file)
@@ -9,24 +9,37 @@ IN: cli.git
 SYMBOL: cli-git-num-parallel
 cli-git-num-parallel [ cpus 2 * ] initialize
 
-: git-clone-as ( ssh-url path -- process )
-    [ { "git" "clone" } ] 2dip 2array append run-process ;
-
-: git-clone ( ssh-url -- process )
-    [ { "git" "clone" } ] dip suffix run-process ;
-
-: git-pull ( path -- process )
-    [ { "git" "pull" } run-process ] with-directory ;
+: 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-pull ( path -- process ) [ git-pull* ] with-directory ;
+: git-fetch-all* ( -- process ) { "git" "fetch" "--all" } run-process ;
+: git-fetch-all ( path -- process ) [ git-fetch-all* ] with-directory ;
+: git-fetch-tags* ( -- process ) { "git" "fetch" "--tags" } run-process ;
+: git-fetch-tags ( path -- process ) [ git-fetch-tags* ] with-directory ;
+: git-checkout-new-branch* ( branch -- process ) [ { "git" "checkout" "-b" } ] dip suffix run-process ;
+: git-checkout-new-branch ( path branch -- process ) '[ _ git-checkout-new-branch* ] with-directory ;
+: git-checkout-existing-branch* ( branch -- process ) [ { "git" "checkout" } ] dip suffix run-process ;
+: git-checkout-existing-branch ( path branch -- process ) '[ _ git-checkout-existing-branch* ] with-directory ;
+: git-change-remote* ( remote uri -- process ) [ { "git" "remote" "set-url" } ] 2dip 2array append run-process ;
+: git-change-remote ( path remote uri -- process ) '[ _ _ git-change-remote* ] with-directory ;
+: git-remote-add* ( remote uri -- process ) [ { "git" "remote" "add" } ] 2dip 2array append run-process ;
+: git-remote-add ( path remote uri -- process ) '[ _ _ git-remote-add* ] with-directory ;
+: git-remote-get-url* ( remote -- process ) [ { "git" "remote" "get-url" } ] dip suffix run-process ;
+: git-remote-get-url ( path remote -- process ) '[ _ git-remote-get-url* ] with-directory ;
 
 : git-repository? ( directory -- ? )
     ".git" append-path current-directory get prepend-path
     ?file-info dup [ directory? ] when ;
 
+: git-current-branch* ( -- name )
+     ! { "git" "rev-parse" "--abbrev-ref" "HEAD" }
+     { "git" "name-rev" "--name-only" "HEAD" }
+     utf8 <process-reader> stream-contents
+     [ blank? ] trim-tail ;
+
 : git-current-branch ( directory -- name )
-    [
-        { "git" "rev-parse" "--abbrev-ref" "HEAD" }
-        utf8 <process-reader> stream-contents
-    ] with-directory [ blank? ] trim-tail ;
+    [ git-current-branch* ] with-directory ;
 
 : repository-url>name ( string -- string' )
     file-name ".git" ?tail drop ;