// Command line tool to manage remote hosts // Copyright (C) 2021-2023 Simon Ruderich // // This program 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. // // This program 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 this program. If not, see . package main import ( "log" "os" "ruderich.org/simon/safcm/cmd/safcm/config" ) func usage() { log.SetFlags(0) log.Fatalf("usage: %[1]s sync [] \n"+ " %[1]s fixperms\n"+ " %[1]s version\n"+ "", os.Args[0]) } func main() { if len(os.Args) < 2 { usage() } var err error switch os.Args[1] { case "sync": err = MainSync(os.Args) case "fixperms": if len(os.Args) != 2 { usage() } err = MainFixperms() case "version": if len(os.Args) != 2 { usage() } err = MainVersion() default: usage() } if err != nil { log.Fatal(err) } } func LoadBaseFiles() (*config.Config, *config.Hosts, map[string][]string, error) { cfg, err := config.LoadConfig() if err != nil { return nil, nil, nil, err } hosts, err := config.LoadHosts() if err != nil { return nil, nil, nil, err } groups, err := config.LoadGroups(cfg, hosts) if err != nil { return nil, nil, nil, err } return cfg, hosts, groups, nil }