2

I'm trying to create a bash function so I can get this.

The user, via terminal, goes to the git project path like:

/home/daniel/projects/my_super_project

So the user will type open and the browser will open in the github.com like:

http://github.com/bla/my_super_project.git

So far I have this code:

function teste {
     if [ -d .git ]; then
         remotes=$(git remote -v | awk -F'[email protected]:' '{print $2}' | cut -d" " -f1)
         url="https://github.com/"
         url="$url$($remotes | cut -d" " -f1)"
         # here I'll open the browser
     else
       # git rev-parse --git-dir 2> /dev/null;
       echo "Not a git repo"
     fi;
}

I check if there is a .git folder, if so, I look for the remote origin and get its value that is inside the remote_url. I was trying to concatenate the https://github.com with the remote_url but no success because the terminal think it is a path so I get this:

bash: bla/my_super_project.git: No such file or directory

How can I concatenate these two values?

1

1 Answer 1

2

Problem solved:

function opengit {
    if [ -d .git ]; then
        remotes=$(git remote -v | awk -F'[email protected]:' '{print $2}' | cut -d" " -f1)
        if [ -z "$remotes" ];
        then
            remotes=$(git remote -v | awk -F'https://github.com/' '{print $2}' | cut -d" " -f1)
        fi

        remote_url=$(echo $remotes | cut -d" " -f1)
        url="https://github.com/"
        url="${url}${remote_url}"
        xdg-open $url
    else
      echo "Not a git repo"
    fi;
}
1
  • 1
    For those that doesn't understand what is happening, OP at first tried to execute the command $($remotes | cut -d" " -f1)" with $(...) instead of expanding it as he's doing with ${...}.
    – Braiam
    Feb 17, 2014 at 2:07

You must log in to answer this question.