Skip to content

Commit

Permalink
#296: Fix output on Windows systems (#299)
Browse files Browse the repository at this point in the history
* Initial commit for #296
* Add new line char
  • Loading branch information
fubarhouse committed Feb 12, 2021
1 parent de8414b commit 768e8ab
Show file tree
Hide file tree
Showing 9 changed files with 66 additions and 40 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ require (
github.com/gorilla/mux v1.7.4 // indirect
github.com/imdario/mergo v0.3.11
github.com/logrusorgru/aurora v2.0.3+incompatible
github.com/mattn/go-colorable v0.1.8
github.com/mitchellh/go-homedir v1.1.0
github.com/mitchellh/mapstructure v1.3.0 // indirect
github.com/moby/term v0.0.0-20200611042045-63b9a826fb74 // indirect
Expand Down
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,11 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
Expand Down Expand Up @@ -335,6 +339,8 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9 h1:YTzHMGlqJu67/uEo1lBv0n3wBXhXNeUbB1XfN2vmTm0=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand Down
13 changes: 13 additions & 0 deletions service/color/color.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package color

import (
"fmt"

"github.com/mattn/go-colorable"
)

var colorableOutput = colorable.NewColorableStdout()

func Print(input interface{}) {
fmt.Fprint(colorableOutput, input)
}
15 changes: 8 additions & 7 deletions service/interface/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
"github.com/fubarhouse/pygmy-go/service/color"
"github.com/fubarhouse/pygmy-go/service/interface/docker"
. "github.com/logrusorgru/aurora"
)
Expand Down Expand Up @@ -63,7 +64,7 @@ func (Service *Service) Start() error {
}

if s && !Service.HostConfig.AutoRemove && !discrete {
fmt.Print(Green(fmt.Sprintf("Already running %s\n", name)))
color.Print(Green(fmt.Sprintf("Already running %s\n", name)))
return nil
}

Expand All @@ -89,7 +90,7 @@ func (Service *Service) Start() error {

if c, err := Service.GetRunning(); c.ID != "" {
if !discrete {
fmt.Print(Green(fmt.Sprintf("Successfully started %s\n", name)))
color.Print(Green(fmt.Sprintf("Successfully started %s\n", name)))
return nil
}
if err != nil {
Expand Down Expand Up @@ -155,17 +156,17 @@ func (Service *Service) Clean() error {
name := strings.TrimLeft(container.Names[0], "/")
if e := docker.DockerKill(container.ID); e == nil {
if !Service.HostConfig.AutoRemove {
fmt.Print(Green(fmt.Sprintf("Successfully killed %s\n", name)))
color.Print(Green(fmt.Sprintf("Successfully killed %s\n", name)))
}
}
if e := docker.DockerStop(container.ID); e == nil {
if !Service.HostConfig.AutoRemove {
fmt.Print(Green(fmt.Sprintf("Successfully stopped %s\n", name)))
color.Print(Green(fmt.Sprintf("Successfully stopped %s\n", name)))
}
}
if e := docker.DockerRemove(container.ID); e != nil {
if !Service.HostConfig.AutoRemove {
fmt.Print(Green(fmt.Sprintf("Successfully removed %s\n", name)))
color.Print(Green(fmt.Sprintf("Successfully removed %s\n", name)))
}
}
}
Expand All @@ -187,7 +188,7 @@ func (Service *Service) Stop() error {
container, err := Service.GetRunning()
if err != nil {
if !discrete {
fmt.Print(Red(fmt.Sprintf("Not running %s\n", name)))
color.Print(Red(fmt.Sprintf("Not running %s\n", name)))
}
return nil
}
Expand All @@ -197,7 +198,7 @@ func (Service *Service) Stop() error {
if e := docker.DockerRemove(container.ID); e == nil {
if !discrete {
containerName := strings.Trim(name, "/")
fmt.Print(Green(fmt.Sprintf("Successfully removed %s\n", containerName)))
color.Print(Green(fmt.Sprintf("Successfully removed %s\n", containerName)))
}
}
}
Expand Down
9 changes: 5 additions & 4 deletions service/library/clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package library
import (
"fmt"

"github.com/fubarhouse/pygmy-go/service/color"
"github.com/fubarhouse/pygmy-go/service/interface/docker"
. "github.com/logrusorgru/aurora"
)
Expand All @@ -29,12 +30,12 @@ func Clean(c Config) {
if target {
err := docker.DockerKill(Container.ID)
if err == nil {
fmt.Print(Green(fmt.Sprintf("Successfully killed %s\n", Container.Names[0])))
color.Print(Green(fmt.Sprintf("Successfully killed %s\n", Container.Names[0])))
}

err = docker.DockerRemove(Container.ID)
if err == nil {
fmt.Print(Green(fmt.Sprintf("Successfully removed %s\n", Container.Names[0])))
color.Print(Green(fmt.Sprintf("Successfully removed %s\n", Container.Names[0])))
}
}
}
Expand All @@ -50,9 +51,9 @@ func Clean(c Config) {
fmt.Println(e)
}
if s, _ := docker.DockerNetworkStatus(NetworksToClean[n]); !s {
fmt.Print(Green(fmt.Sprintf("Successfully removed network %s\n", NetworksToClean[n])))
color.Print(Green(fmt.Sprintf("Successfully removed network %s\n", NetworksToClean[n])))
} else {
fmt.Print(Red(fmt.Sprintf("Successfully started %s\n", NetworksToClean[n])))
color.Print(Red(fmt.Sprintf("Successfully started %s\n", NetworksToClean[n])))
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions service/library/down.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package library
import (
"fmt"

"github.com/fubarhouse/pygmy-go/service/color"
"github.com/fubarhouse/pygmy-go/service/interface/docker"
. "github.com/logrusorgru/aurora"
)
Expand Down Expand Up @@ -36,9 +37,9 @@ func Down(c Config) {
fmt.Println(e)
}
if s, _ := docker.DockerNetworkStatus(network); !s {
fmt.Print(Green(fmt.Sprintf("Successfully removed network %s\n", network)))
color.Print(Green(fmt.Sprintf("Successfully removed network %s\n", network)))
} else {
fmt.Print(Red(fmt.Sprintf("Network %s was not removed\n", network)))
color.Print(Red(fmt.Sprintf("Network %s was not removed\n", network)))
}
}

Expand Down
23 changes: 12 additions & 11 deletions service/library/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"strings"

"github.com/fubarhouse/pygmy-go/service/color"
"github.com/fubarhouse/pygmy-go/service/endpoint"
"github.com/fubarhouse/pygmy-go/service/interface/docker"
"github.com/fubarhouse/pygmy-go/service/resolv"
Expand All @@ -20,9 +21,9 @@ func Status(c Config) {
if len(checks) > 0 {
for _, check := range checks {
if check.State {
fmt.Println(Green(check.Message))
color.Print(Green(check.Message + "\n"))
} else {
fmt.Println(Red(check.Message))
color.Print(Red(check.Message + "\n"))
}
}
fmt.Println()
Expand All @@ -43,9 +44,9 @@ func Status(c Config) {
}
if enabled && !discrete && name != "" {
if s, _ := Service.Status(); s {
fmt.Print(Green(fmt.Sprintf("[*] %s: Running as container %s\n", name, name)))
color.Print(Green(fmt.Sprintf("[*] %s: Running as container %s\n", name, name)))
} else {
fmt.Print(Red(fmt.Sprintf("[ ] %s is not running\n", name)))
color.Print(Red(fmt.Sprintf("[ ] %s is not running\n", name)))
}
}
}
Expand All @@ -58,35 +59,35 @@ func Status(c Config) {
name, _ := Service.GetFieldString("name")
discrete, _ := Service.GetFieldBool("discrete")
if !discrete {
fmt.Print(Red(fmt.Sprintf("[ ] %s is not running\n", name)))
color.Print(Red(fmt.Sprintf("[ ] %s is not running\n", name)))
}
}
}

for _, Network := range c.Networks {
for _, Container := range Network.Containers {
if x, _ := docker.DockerNetworkConnected(Network.Name, Container.Name); !x {
fmt.Print(Red(fmt.Sprintf("[ ] %s is not connected to network %s\n", Container.Name, Network.Name)))
color.Print(Red(fmt.Sprintf("[ ] %s is not connected to network %s\n", Container.Name, Network.Name)))
} else {
fmt.Print(Green(fmt.Sprintf("[*] %s is connected to network %s\n", Container.Name, Network.Name)))
color.Print(Green(fmt.Sprintf("[*] %s is connected to network %s\n", Container.Name, Network.Name)))
}
}
}

for _, resolver := range c.Resolvers {
r := resolv.Resolv{Name: resolver.Name, Data: resolver.Data, Folder: resolver.Folder, File: resolver.File}
if s := r.Status(); s {
fmt.Print(Green(fmt.Sprintf("[*] Resolv %v is properly connected\n", resolver.Name)))
color.Print(Green(fmt.Sprintf("[*] Resolv %v is properly connected\n", resolver.Name)))
} else {
fmt.Print(Red(fmt.Sprintf("[ ] Resolv %v is not properly conected\n", resolver.Name)))
color.Print(Red(fmt.Sprintf("[ ] Resolv %v is not properly conected\n", resolver.Name)))
}
}

for _, volume := range c.Volumes {
if s, _ := docker.DockerVolumeExists(volume); s {
fmt.Print(Green(fmt.Sprintf("[*] Volume %s has been created\n", volume.Name)))
color.Print(Green(fmt.Sprintf("[*] Volume %s has been created\n", volume.Name)))
} else {
fmt.Print(Green(fmt.Sprintf("[ ] Volume %s has not ben created\n", volume.Name)))
color.Print(Green(fmt.Sprintf("[ ] Volume %s has not ben created\n", volume.Name)))
}
}

Expand Down
15 changes: 8 additions & 7 deletions service/library/up.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"os"
"strings"

"github.com/fubarhouse/pygmy-go/service/color"
"github.com/fubarhouse/pygmy-go/service/endpoint"
"github.com/fubarhouse/pygmy-go/service/interface/docker"
. "github.com/logrusorgru/aurora"
Expand Down Expand Up @@ -33,12 +34,12 @@ func Up(c Config) {
if s, _ := docker.DockerVolumeExists(volume); !s {
_, err := docker.DockerVolumeCreate(volume)
if err == nil {
fmt.Print(Green(fmt.Sprintf("Created volume %s\n", volume.Name)))
color.Print(Green(fmt.Sprintf("Created volume %s\n", volume.Name)))
} else {
fmt.Println(err)
}
} else {
fmt.Print(Green(fmt.Sprintf("Already created volume %s\n", volume.Name)))
color.Print(Green(fmt.Sprintf("Already created volume %s\n", volume.Name)))
}
}

Expand Down Expand Up @@ -94,9 +95,9 @@ func Up(c Config) {
netVal, _ := docker.DockerNetworkStatus(Network.Name)
if !netVal {
if err := NetworkCreate(Network); err == nil {
fmt.Print(Green(fmt.Sprintf("Successfully created network %s\n", Network.Name)))
color.Print(Green(fmt.Sprintf("Successfully created network %s\n", Network.Name)))
} else {
fmt.Print(Red(fmt.Sprintf("Could not create network %s\n", Network.Name)))
color.Print(Red(fmt.Sprintf("Could not create network %s\n", Network.Name)))
}
}
}
Expand All @@ -110,15 +111,15 @@ func Up(c Config) {
if Network, _ := service.GetFieldString("network"); Network != "" && nameErr == nil {
if s, _ := docker.DockerNetworkConnected(Network, name); !s {
if s := NetworkConnect(Network, name); s == nil {
fmt.Print(Green(fmt.Sprintf("Successfully connected %s to %s\n", name, Network)))
color.Print(Green(fmt.Sprintf("Successfully connected %s to %s\n", name, Network)))
} else {
discrete, _ := service.GetFieldBool("discrete")
if !discrete {
fmt.Print(Red(fmt.Sprintf("Could not connect %s to %s\n", name, Network)))
color.Print(Red(fmt.Sprintf("Could not connect %s to %s\n", name, Network)))
}
}
} else {
fmt.Print(Green(fmt.Sprintf("Already connected %s to %s\n", name, Network)))
color.Print(Green(fmt.Sprintf("Already connected %s to %s\n", name, Network)))
}
}
}
Expand Down
19 changes: 10 additions & 9 deletions service/resolv/resolv.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"runtime"
"strings"

"github.com/fubarhouse/pygmy-go/service/color"
. "github.com/logrusorgru/aurora"
)

Expand Down Expand Up @@ -40,7 +41,7 @@ func (resolv Resolv) Configure() {
return
}
if resolv.Status() {
fmt.Print(Green(fmt.Sprintf("Already configured resolvr %s\n", resolv.Name)))
color.Print(Green(fmt.Sprintf("Already configured resolvr %s\n", resolv.Name)))
} else {
fullPath := fmt.Sprintf("%v%v%v", resolv.Folder, string(os.PathSeparator), resolv.File)
if _, err := os.Stat(fullPath); os.IsNotExist(err) {
Expand Down Expand Up @@ -109,16 +110,16 @@ func (resolv Resolv) Configure() {
if runtime.GOOS == "darwin" {
ifConfig := exec.Command("/bin/sh", "-c", "sudo ifconfig lo0 alias 172.16.172.16")
if err := ifConfig.Run(); err != nil {
fmt.Println(Sprintf(Red("error creating loopback UP alias")))
color.Print(Sprintf(Red("error creating loopback UP alias")))
}
killAll := exec.Command("/bin/sh", "-c", "sudo killall mDNSResponder")
if err := killAll.Run(); err != nil {
fmt.Println(Sprintf(Red("error restarting mDNSResponder")))
color.Print(Sprintf(Red("error restarting mDNSResponder")))
}
}

if resolv.Status() {
fmt.Print(Green(fmt.Sprintf("Successfully configured resolvr %s\n", resolv.Name)))
color.Print(Green(fmt.Sprintf("Successfully configured resolvr %s\n", resolv.Name)))
}
}
}
Expand Down Expand Up @@ -164,7 +165,7 @@ func (resolv Resolv) Clean() {
fmt.Println(err)
}
if !resolv.statusFile() {
fmt.Println(Sprintf(Green("Successfully removed resolver file")))
color.Print(Sprintf(Green("Successfully removed resolver file")))
}
}

Expand All @@ -175,20 +176,20 @@ func (resolv Resolv) Clean() {
ifConfig := exec.Command("/bin/sh", "-c", "sudo ifconfig lo0 -alias 172.16.172.16")
err := ifConfig.Run()
if err != nil {
fmt.Println(Sprintf(Red("error removing loopback UP alias"), Red(err)))
color.Print(Sprintf(Red("error removing loopback UP alias"), Red(err)))
} else {
if !resolv.statusNet() {
fmt.Println(Sprintf(Green("Successfully removed loopback alias IP.")))
color.Print(Sprintf(Green("Successfully removed loopback alias IP.")))
}
}
}

killAll := exec.Command("/bin/sh", "-c", "sudo killall mDNSResponder")
err := killAll.Run()
if err != nil {
fmt.Println(Sprintf(Red("error restarting mDNSResponder")))
color.Print(Sprintf(Red("error restarting mDNSResponder")))
} else {
fmt.Println(Sprintf(Green("Successfully restarted mDNSResponder")))
color.Print(Sprintf(Green("Successfully restarted mDNSResponder")))
}
}
}
Expand Down

0 comments on commit 768e8ab

Please sign in to comment.