1

Following this: Find out git branch creator

I making a python script that provides me a sorted set of emails out of the result of

git for-each-ref --format='%(authoremail)%09%(refname)' | sort -k5n -k2M -k3n -k4n | grep remotes | awk -F "\t" '{ printf "%-32s %-27s %s\n", $1, $2, $3 }'

so that I can email them that these are you branches up on remote please delete them.

but when I try to put it together in python I getting error

intitial =  "git for-each-ref --format='%(authoremail)%09%(refname)' | sort -k5n -k2M -k3n -k4n | grep remotes | awk -F "
addTab = "\t"
printf = '{ printf "%-32s %-27s %s\n", $1, $2, $3 }'

gitCommnad = "%s%s %s " % (intitial, addTab, printf)




def _exec_git_command(command, verbose=False):
    """ Function used to get data out of git commads
        and errors in case of failure.
        Args:
            command(string): string of a git command
            verbose(bool): whether to display every command
            and its resulting data.
        Returns:
            (tuple): string of Data and error if present
    """
    # converts multiple spaces to single space
    command = re.sub(' +',' ',command)
    pr = subprocess.Popen(command, shell=True,
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    msg = pr.stdout.read()
    err = pr.stderr.read()
    if err:
        print err
        if 'Could not resolve host' in err:
            return
    if verbose and msg:
        print "Executing '%s' %s" % (command, msg)

    return msg, err


print _exec_git_command(gitCommnad)
Community
  • 1
  • 1
Ciasto piekarz
  • 7,853
  • 18
  • 101
  • 197

1 Answers1

0

The issue is that you are not putting \t or { printf "%-32s %-27s %s\n", $1, $2, $3 } inside quotes, hence awk reports a Syntax error. You should use -

intitial =  "git for-each-ref --format='%(authoremail)%09%(refname)' | sort -k5n -k2M -k3n -k4n | grep remotes | awk -F"
addTab = "\t"
printf = '{ printf "%-32s %-27s %s\n", $1, $2, $3 }'

gitCommnad = "%s \"%s\" '%s' " % (intitial, addTab, printf)
Anand S Kumar
  • 88,551
  • 18
  • 188
  • 176