/ / Wie mache ich einen envvar-modifizierenden Alias ​​- bash

Wie erstelle ich einen envvar-modifizierenden Alias ​​- bash

Ich führe mehrere Heroku-Apps aus demselben Ordner aus und muss oft eine bestimmte für einen Befehl auswählen, den ich über eine von zwei Umgebungsvariablen eintippe

Die verfügbaren Optionen sind:

heroku command --app MYAPPID
heroku command -r MYAPPSGITREMOTEID
HEROKU_APP=MYAPPID heroku command

Ich benutze derzeit -r, aber es ist schwierig, Aliase damit zu erstellen, besonders wenn ich die Ausgabe des Befehls heroku an einen anderen Befehl weiterleiten möchte ... ich kann nicht anrufen myalias -r myappid wenn der Aliasname ist heroku command | tail

Ich würde etwas lieber mögen

@production heroku command das würde zu bewerten HEROKU_APP=MYPRODUCTIONID heroku command

Bonuspunkte, wenn es mit Verkettungsaliases wie @production myalias Dies würde sowohl den Algnamen der Ziel-App envvar als auch den auszuführenden Befehl alias erweitern

irgendwelche Ideen?

Antworten:

2 für die Antwort № 1

Hier sind Shell-Funktionen die perfekte Lösung:

myheroku () {
local heroku_app=$1
shift
env HEROKU_APP="$heroku_app" heroku "$@"
}

myalias1 () {
myheroku "$1" specific command here
}
myalias2 () {
myheroku "$1" some other command
}
# ...

Dann

myalias1 @production

Wird sich schließlich aufrufen

env HEROKU_APP="@production" heroku specific command here