diff --git a/activate.sh b/activate.sh deleted file mode 100644 index 58d9b67..0000000 --- a/activate.sh +++ /dev/null @@ -1 +0,0 @@ -export PATH="$PATH:$PWD/scripts/bin" \ No newline at end of file diff --git a/build_binaries.sh b/build_binaries.sh deleted file mode 100755 index 3b00fcd..0000000 --- a/build_binaries.sh +++ /dev/null @@ -1,2 +0,0 @@ -cd ./scripts -go build -o ./bin/inv-alias ./inv-alias.go \ No newline at end of file diff --git a/scripts/bin/hosto b/scripts/bin/hosto deleted file mode 100755 index c86affa..0000000 --- a/scripts/bin/hosto +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env bash - -VERSION="0.1.0" - -function help() { - echo -e \ - "Usage: $(basename $0) [OPTIONS] [COMMAND]\n\n" \ - "Options:\n" \ - " -i, --inv-file Specify the Ansible inventory to add.\n" \ - " -h, --help Show help.\n" \ - " -v, --version Show version." -} - -if [[ $# -eq 0 ]]; then - help - exit 1 -fi - -INVENTORY_FILE="$(pwd)/inventory" - -while [[ $# -gt 0 ]]; do - case $1 in - -i|--inv-file) - INVENTORY_FILE="$2" - shift - shift - ;; - -h|--help) - help - exit 1 - ;; - -v|--version) - echo $VERSION - exit 1 - ;; - -*|--*) - echo "hosto: unrecognized option '$1'" - help - exit 1 - ;; - *) - break - ;; - esac -done - -if [ -f $INVENTORY_FILE ]; then - sudo inv-alias add $INVENTORY_FILE - eval $@ - sudo inv-alias rm $INVENTORY_FILE -else - echo "hosto: Could not find inventory file at $INVENTORY_FILE" - eval $@ -fi diff --git a/scripts/inv-alias.go b/scripts/inv-alias.go deleted file mode 100644 index 530076b..0000000 --- a/scripts/inv-alias.go +++ /dev/null @@ -1,150 +0,0 @@ -package main - -import ( - "bufio" - "fmt" - "io" - "io/fs" - "io/ioutil" - "log" - "os" - "path/filepath" - "regexp" - "strings" -) - -type AliasMap map[string]string - -const ( - HostsFile string = "/etc/hosts" -) - -func FixedSplit(s, sep string, parts int) []string { - n := make([]string, parts) - p := strings.SplitN(s, sep, parts) - copy(n, p) - return n -} - -func IsLegalLine(line string) bool { - c := line[0] - return c != '[' && c != '#' -} - -func BuildRegionString(regionName string, aliases AliasMap) string { - b := strings.Builder{} - b.WriteString("#region ") - b.WriteString(regionName) - b.WriteString("\n") - - for ip, alias := range aliases { - b.WriteString(ip) - b.WriteString("\t") - b.WriteString(alias) - b.WriteString("\n") - } - - b.WriteString("#endregion") - return b.String() -} - -func BuildRegionRegexp(regionName string) *regexp.Regexp { - b := strings.Builder{} - b.WriteString("(?s)\n#region ") - b.WriteString(regexp.QuoteMeta(regionName)) - b.WriteString(".*#endregion") - r := regexp.MustCompile(b.String()) - return r -} - -func ScanAliases(fileReader io.Reader) (AliasMap, error) { - aliasMap := AliasMap{} - scanner := bufio.NewScanner(fileReader) - for scanner.Scan() { - line := scanner.Text() - if IsLegalLine(line) { - s := FixedSplit(line, "#", 2) - ip, alias := strings.TrimSpace(s[0]), strings.TrimSpace(s[1]) - if _, ok := aliasMap[ip]; !ok && alias != "" { - aliasMap[ip] = alias - } - } - } - - if err := scanner.Err(); err != nil { - return nil, err - } - - return aliasMap, nil -} - -func AddAliases(fileName string) { - file, err := os.Open(fileName) - if err != nil { - log.Fatal(err) - } - - h, err := ScanAliases(file) - if err != nil { - log.Fatal(err) - } - - file.Close() - - r := BuildRegionRegexp(fileName) - s := BuildRegionString(fileName, h) - - content, err := ioutil.ReadFile(HostsFile) - if err != nil { - log.Fatal(err) - } - - c := r.ReplaceAllString(string(content), s) - if !r.MatchString(c) { - c += ("\n" + s) - } - - err = os.WriteFile(HostsFile, []byte(c[:]), fs.FileMode(os.O_WRONLY|os.O_TRUNC)) - if err != nil { - log.Fatal(err) - } -} - -func RemoveAliases(fileName string) { - regionReg := BuildRegionRegexp(fileName) - content, err := ioutil.ReadFile(HostsFile) - if err != nil { - log.Fatal(err) - } - - c := regionReg.ReplaceAll(content, []byte("")) - err = os.WriteFile(HostsFile, c, fs.FileMode(os.O_WRONLY|os.O_TRUNC)) - if err != nil { - log.Fatal(err) - } -} - -func main() { - u := fmt.Sprintf("Please use: %s \n", os.Args[0]) - - if len(os.Args) < 3 { - fmt.Println(u) - os.Exit(1) - } - - p, err := filepath.Abs(os.Args[2]) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - switch os.Args[1] { - case "add": - AddAliases(p) - case "rm": - RemoveAliases(p) - default: - fmt.Println(u) - os.Exit(1) - } -}