mirror of
				https://github.com/ansible-collections/community.general.git
				synced 2025-10-26 13:56:09 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // This file is part of Ansible
 | |
| //
 | |
| // Ansible is free software: you can redistribute it and/or modify
 | |
| // it under the terms of the GNU General Public License as published by
 | |
| // the Free Software Foundation, either version 3 of the License, or
 | |
| // (at your option) any later version.
 | |
| //
 | |
| // Ansible is distributed in the hope that it will be useful,
 | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| // GNU General Public License for more details.
 | |
| //
 | |
| // You should have received a copy of the GNU General Public License
 | |
| // along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| package main
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"fmt"
 | |
| 	"io/ioutil"
 | |
| 	"os"
 | |
| )
 | |
| 
 | |
| type ModuleArgs struct {
 | |
| 	Name string
 | |
| }
 | |
| 
 | |
| type Response struct {
 | |
| 	Msg     string `json:"msg"`
 | |
| 	Changed bool   `json:"changed"`
 | |
| 	Failed  bool   `json:"failed"`
 | |
| }
 | |
| 
 | |
| func ExitJson(responseBody Response) {
 | |
| 	returnResponse(responseBody)
 | |
| }
 | |
| 
 | |
| func FailJson(responseBody Response) {
 | |
| 	responseBody.Failed = true
 | |
| 	returnResponse(responseBody)
 | |
| }
 | |
| 
 | |
| func returnResponse(responseBody Response) {
 | |
| 	var response []byte
 | |
| 	var err error
 | |
| 	response, err = json.Marshal(responseBody)
 | |
| 	if err != nil {
 | |
| 		response, _ = json.Marshal(Response{Msg: "Invalid response object"})
 | |
| 	}
 | |
| 	fmt.Println(string(response))
 | |
| 	if responseBody.Failed {
 | |
| 		os.Exit(1)
 | |
| 	} else {
 | |
| 		os.Exit(0)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	var response Response
 | |
| 
 | |
| 	if len(os.Args) != 2 {
 | |
| 		response.Msg = "No argument file provided"
 | |
| 		FailJson(response)
 | |
| 	}
 | |
| 
 | |
| 	argsFile := os.Args[1]
 | |
| 
 | |
| 	text, err := ioutil.ReadFile(argsFile)
 | |
| 	if err != nil {
 | |
| 		response.Msg = "Could not read configuration file: " + argsFile
 | |
| 		FailJson(response)
 | |
| 	}
 | |
| 
 | |
| 	var moduleArgs ModuleArgs
 | |
| 	err = json.Unmarshal(text, &moduleArgs)
 | |
| 	if err != nil {
 | |
| 		response.Msg = "Configuration file not valid JSON: " + argsFile
 | |
| 		FailJson(response)
 | |
| 	}
 | |
| 
 | |
| 	var name string = "World"
 | |
| 	if moduleArgs.Name != "" {
 | |
| 		name = moduleArgs.Name
 | |
| 	}
 | |
| 
 | |
| 	response.Msg = "Hello, " + name + "!"
 | |
| 	ExitJson(response)
 | |
| }
 |