fix: outputs espace (#404)

* fix: outputs espace

* refactor: move unescape to func

* refactor: fix ci lint

* refactor: unescape function
This commit is contained in:
Owen Young
2020-11-02 21:40:46 +08:00
committed by GitHub
parent 1e69525fb4
commit 92067eb1a5
2 changed files with 47 additions and 1 deletions

View File

@@ -38,7 +38,8 @@ func (rc *RunContext) commandHandler(ctx context.Context) common.LineHandler {
if resumeCommand != "" && command != resumeCommand {
return false
}
arg = unescapeCommandData(arg)
kvPairs = unescapeKvPairs(kvPairs)
switch command {
case "set-env":
rc.setEnv(ctx, kvPairs, arg)
@@ -95,3 +96,33 @@ func parseKeyValuePairs(kvPairs string, separator string) map[string]string {
}
return rtn
}
func unescapeCommandData(arg string) string {
escapeMap := map[string]string{
"%25": "%",
"%0D": "\r",
"%0A": "\n",
}
for k, v := range escapeMap {
arg = strings.Replace(arg, k, v, -1)
}
return arg
}
func unescapeCommandProperty(arg string) string {
escapeMap := map[string]string{
"%25": "%",
"%0D": "\r",
"%0A": "\n",
"%3A": ":",
"%2C": ",",
}
for k, v := range escapeMap {
arg = strings.Replace(arg, k, v, -1)
}
return arg
}
func unescapeKvPairs(kvPairs map[string]string) map[string]string {
for k, v := range kvPairs {
kvPairs[k] = unescapeCommandProperty(v)
}
return kvPairs
}