github.com/swaros/contxt/module/taskrun@v0.0.0-20240305083542-3dbd4436ac40/parshlp.go (about) 1 // Copyright (c) 2020 Thomas Ziegler <thomas.zglr@googlemail.com>. All rights reserved. 2 // 3 // # Licensed under the MIT License 4 // 5 // Permission is hereby granted, free of charge, to any person obtaining a copy 6 // of this software and associated documentation files (the "Software"), to deal 7 // in the Software without restriction, including without limitation the rights 8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 // copies of the Software, and to permit persons to whom the Software is 10 // furnished to do so, subject to the following conditions: 11 // 12 // The above copyright notice and this permission notice shall be included in all 13 // copies or substantial portions of the Software. 14 // 15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 // SOFTWARE. 22 package taskrun 23 24 // note: parshlp = parsing-helper. 25 26 import ( 27 "fmt" 28 "strings" 29 ) 30 31 func SplitArgs(cmdList []string, prefix string, arghandler func(string, map[string]string)) []string { 32 var cleared []string 33 var args map[string]string = make(map[string]string) 34 35 for _, value := range cmdList { 36 argArr := strings.Split(value, " ") 37 cleared = append(cleared, argArr[0]) 38 if len(argArr) > 1 { 39 for index, v := range argArr { 40 args[fmt.Sprintf("%s%v", prefix, index)] = v 41 } 42 arghandler(argArr[0], args) 43 } 44 } 45 return cleared 46 } 47 48 func StringSplitArgs(argLine string, prefix string) (string, map[string]string) { 49 GetLogger().WithField("args", argLine).Debug("parsing argumented string") 50 var args map[string]string = make(map[string]string) 51 argArr := strings.Split(argLine, " ") 52 for index, v := range argArr { 53 args[fmt.Sprintf("%s%v", prefix, index)] = v 54 } 55 return argArr[0], args 56 }