Skip to content

Commit

Permalink
wip: killing providing ports
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian Francia committed Sep 2, 2021
1 parent 77aaee0 commit 826b09d
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 41 deletions.
77 changes: 45 additions & 32 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"
"os"
"runtime"
"strconv"
"strings"

"github.com/ctfrancia/gkp/cmd/cli"
Expand All @@ -17,48 +16,62 @@ func main() {
var xps []string = strings.Split(ports.Ports, " ")
var xrps []string = strings.Split(ports.PortRange, " ")

v.validateInputIsNumber(xps)
v.validateInputIsNumber(xrps)
_ = v.rangeOfPortsAreNumbers(xps)
intRangePorts := v.rangeOfPortsAreNumbers(xrps)

if len(xps) < 1 && len(xrps) < 1 {
fmt.Fprintf(os.Stderr, "no flags provided\n")
os.Exit(1)
}

if len(xps) > 1 && len(xrps) > 1 {
fmt.Println("cannot have range and port flag at the same time")
os.Exit(1)
}
v.oneFlagProvided(xps, xrps)
v.multipleFlagsNotProvided(xps, xrps)
/*
if len(xps) < 1 && len(xrps) < 1 {
fmt.Fprintf(os.Stderr, "no flags provided\n")
os.Exit(1)
}
*/

// checks if each port provided is an integer
for _, p := range xps {
if _, err := strconv.Atoi(p); err != nil {
fmt.Fprintf(os.Stderr, "Error: port argument is not a number %s \n", p)
/*
if len(xps) > 1 && len(xrps) > 1 {
fmt.Println("cannot have range and port flag at the same time")
os.Exit(1)
}
}
*/

if len(xrps) > 1 {
fmt.Println("shoiuld nto be here", xrps)
// check if the two numbers provided are valid integers
for _, rp := range xrps {
if _, err := strconv.Atoi(rp); err != nil {
fmt.Fprintf(os.Stderr, "Error: port argument is not a number %s \n", rp)
/*
// checks if each port provided is an integer
for _, p := range xps {
if _, err := strconv.Atoi(p); err != nil {
fmt.Fprintf(os.Stderr, "Error: port argument is not a number %s \n", p)
os.Exit(1)
}
}
}
if len(xrps) != 2 {
fmt.Fprintf(os.Stderr, "only two numbers are accepatble for a range, eg: '3000 3002'")
os.Exit(1)
}
if len(xrps) > 1 {
// check if the two numbers provided are valid integers
for _, rp := range xrps {
if _, err := strconv.Atoi(rp); err != nil {
fmt.Fprintf(os.Stderr, "Error: port argument is not a number %s \n", rp)
os.Exit(1)
}
}
}
*/

/*
if len(xrps) != 2 {
fmt.Fprintf(os.Stderr, "only two numbers are accepatble for a range, eg: '3000 3002'")
os.Exit(1)
}
*/

// checks to make sure that left to right the numbers increase
if xrps[0] > xrps[1] {
fmt.Fprintf(os.Stderr, "first argument must be less than second argument")
os.Exit(1)
}
/*
if xrps[0] > xrps[1] {
fmt.Fprintf(os.Stderr, "first argument must be less than second argument")
os.Exit(1)
}
*/

v.rangeAreAscending(intRangePorts[0], intRangePorts[1])
v.isValid()

if runtime.GOOS == "windows" {
msg, err := execWindows(xps, xrps)
Expand Down
47 changes: 38 additions & 9 deletions validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package main
import (
"fmt"
"os"
"strconv"
"strings"
)

// Validator struct defines the structure of errors to be passed in
Expand All @@ -16,24 +18,51 @@ func newValidator() *Validator {
return v
}

func (v *Validator) errorResponse(message string) {
msg := message + "\n"
fmt.Fprintf(os.Stderr, msg)
func (v *Validator) addError(e string) {
v.errors = append(v.errors, e)
}

func (v *Validator) errorResponse(message []string) {
msg := strings.Join(message, ", ")
fmt.Println(msg)
os.Exit(1)
}

func (v *Validator) validateInputIsNumber(input []string) {
func (v *Validator) multipleFlagsNotProvided(ports, portRange []string) {
if len(ports) > 1 && len(portRange) > 1 {
v.addError("cannot have range and port flag at the same time")
}
}

func (v *Validator) flagIsProvided(ports, portRange []string) {
func (v *Validator) rangeOfPortsAreNumbers(ports []string) []int {
var numPorts []int
for _, port := range ports {
if _, err := strconv.Atoi(port); err != nil {
msg := fmt.Sprintf("Error: port argument is not a number: %s \n", port)
v.addError(msg)
}

p, _ := strconv.Atoi(port)
numPorts = append(numPorts, p)
}

return numPorts
}

func (v *Validator) multipleFlagsNotProvided(ports, portRange []string) {
func (v *Validator) rangeAreAscending(p1, p2 int) {
if p1 > p2 {
v.addError("first argument must be less than second argument")
}
}

func (v *Validator) rangeOfPorts(rop []string) {
func (v *Validator) oneFlagProvided(ports, rangeOfPorts []string) {
if len(ports) < 1 && len(rangeOfPorts) < 1 {
v.errors = append(v.errors, "no flags provided\n")
}
}

func (v *Validator) isValid() error {
return nil
func (v *Validator) isValid() {
if len(v.errors) > 0 {
v.errorResponse(v.errors)
}
}

0 comments on commit 826b09d

Please sign in to comment.