1// This file is part of Ansible 2// 3// Ansible is free software: you can redistribute it and/or modify 4// it under the terms of the GNU General Public License as published by 5// the Free Software Foundation, either version 3 of the License, or 6// (at your option) any later version. 7// 8// Ansible is distributed in the hope that it will be useful, 9// but WITHOUT ANY WARRANTY; without even the implied warranty of 10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11// GNU General Public License for more details. 12// 13// You should have received a copy of the GNU General Public License 14// along with Ansible. If not, see <http://www.gnu.org/licenses/>. 15 16package main 17 18import ( 19 "encoding/json" 20 "fmt" 21 "io/ioutil" 22 "os" 23) 24 25type ModuleArgs struct { 26 Name string 27} 28 29type Response struct { 30 Msg string `json:"msg"` 31 Changed bool `json:"changed"` 32 Failed bool `json:"failed"` 33} 34 35func ExitJson(responseBody Response) { 36 returnResponse(responseBody) 37} 38 39func FailJson(responseBody Response) { 40 responseBody.Failed = true 41 returnResponse(responseBody) 42} 43 44func returnResponse(responseBody Response) { 45 var response []byte 46 var err error 47 response, err = json.Marshal(responseBody) 48 if err != nil { 49 response, _ = json.Marshal(Response{Msg: "Invalid response object"}) 50 } 51 fmt.Println(string(response)) 52 if responseBody.Failed { 53 os.Exit(1) 54 } else { 55 os.Exit(0) 56 } 57} 58 59func main() { 60 var response Response 61 62 if len(os.Args) != 2 { 63 response.Msg = "No argument file provided" 64 FailJson(response) 65 } 66 67 argsFile := os.Args[1] 68 69 text, err := ioutil.ReadFile(argsFile) 70 if err != nil { 71 response.Msg = "Could not read configuration file: " + argsFile 72 FailJson(response) 73 } 74 75 var moduleArgs ModuleArgs 76 err = json.Unmarshal(text, &moduleArgs) 77 if err != nil { 78 response.Msg = "Configuration file not valid JSON: " + argsFile 79 FailJson(response) 80 } 81 82 var name string = "World" 83 if moduleArgs.Name != "" { 84 name = moduleArgs.Name 85 } 86 87 response.Msg = "Hello, " + name + "!" 88 ExitJson(response) 89} 90