Add clone
ZSH function
This commit is contained in:
parent
844a10074b
commit
5a934bf843
|
@ -1,3 +1,5 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -5,6 +7,38 @@
|
||||||
dotDir = ".config/zsh";
|
dotDir = ".config/zsh";
|
||||||
|
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
|
# Based on https://github.com/rwxrob/dot/blob/f4240010a82609da352b203103ab548f213a4328/.bashrc#L313.
|
||||||
|
clone() {
|
||||||
|
repo_url="$1"
|
||||||
|
|
||||||
|
# TODO: work with Bitbucket and GitLab.
|
||||||
|
|
||||||
|
user_and_repo_name="''${repo_url#https://github.com/}"
|
||||||
|
user_and_repo_name="''${repo_url#git@github.com:}"
|
||||||
|
|
||||||
|
if [[ "''${user_and_repo_name}" =~ / ]]; then
|
||||||
|
user="''${user_and_repo_name%%/*}"
|
||||||
|
else
|
||||||
|
user="$GITUSER"
|
||||||
|
[[ -z "$user" ]] && user="$USER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
repo_name="''${user_and_repo_name##*/}"
|
||||||
|
repo_name="''${repo_name%.git}"
|
||||||
|
|
||||||
|
user_path="''${HOME}/Code/github.com/''${user}"
|
||||||
|
|
||||||
|
user_repo_path="''${user_path}/''${repo_name}"
|
||||||
|
[[ -d "''${user_repo_path}" ]] && cd "''${user_repo_path}" && return
|
||||||
|
|
||||||
|
${pkgs.coreutils}/bin/mkdir -p "''${user_path}"
|
||||||
|
cd "''${user_path}"
|
||||||
|
|
||||||
|
${pkgs.git}/bin/git clone "''${repo_url}" "''${repo_name}"
|
||||||
|
|
||||||
|
# TODO: create a new tmux session with `bin/t`?
|
||||||
|
}
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
source "''${ZPLUG_REPOS}/robbyrussell/oh-my-zsh/plugins/git/git.plugin.zsh"
|
source "''${ZPLUG_REPOS}/robbyrussell/oh-my-zsh/plugins/git/git.plugin.zsh"
|
||||||
source "''${ZPLUG_REPOS}/robbyrussell/oh-my-zsh/plugins/vi-mode/vi-mode.plugin.zsh"
|
source "''${ZPLUG_REPOS}/robbyrussell/oh-my-zsh/plugins/vi-mode/vi-mode.plugin.zsh"
|
||||||
|
|
Loading…
Reference in a new issue