Feat : add generic Makefile for build all binary by go source filename
This commit is contained in:
parent
4ada72d89c
commit
8353479476
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
bin/
|
||||||
|
!bin/.gitkeep
|
29
Makefile
Normal file
29
Makefile
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.PHONY: all
|
||||||
|
|
||||||
|
#OPT_VERBOSE=-v
|
||||||
|
OPT_VERBOSE=
|
||||||
|
|
||||||
|
# Basic go commands
|
||||||
|
GOCMD=go
|
||||||
|
GOBUILD=$(GOCMD) build
|
||||||
|
GOCLEAN=$(GOCMD) clean
|
||||||
|
GOTEST=$(GOCMD) test
|
||||||
|
GOINSTALL=$(GOCMD) install $(OPT_VERBOSE)
|
||||||
|
GOGET=$(GOCMD) get $(OPT_VERBOSE)
|
||||||
|
|
||||||
|
SRCS := $(wildcard *.go)
|
||||||
|
# This is a substitution reference. http://www.gnu.org/software/make/manual/make.html#Substitution-Refs
|
||||||
|
BINS := $(SRCS:%.go=bin/%)
|
||||||
|
|
||||||
|
all: $(BINS)
|
||||||
|
|
||||||
|
$(BINS) : bin/% : %.go | bin
|
||||||
|
@echo "constructing : $@"
|
||||||
|
@$(GOBUILD) -o "$@" "$^"
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(GOCLEAN)
|
||||||
|
rm -f ${GOPATH}/bin/$(PROGRAM_NAME)
|
||||||
|
|
||||||
|
get:
|
||||||
|
$(GOGET) github.com/docker/docker-credential-helpers/client
|
0
bin/.gitkeep
Normal file
0
bin/.gitkeep
Normal file
18
defer.go
Normal file
18
defer.go
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func t(i *int) *int {
|
||||||
|
*i+=1
|
||||||
|
fmt.Println("world : "+ strconv.Itoa(*i))
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
a := 2
|
||||||
|
defer t(&a)
|
||||||
|
|
||||||
|
a = 6
|
||||||
|
fmt.Println("hello : " + strconv.Itoa(a))
|
||||||
|
}
|
21
docker-credential-extractor.go
Normal file
21
docker-credential-extractor.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"os"
|
||||||
|
osx "github.com/docker/docker-credential-helpers/client"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
p := osx.NewShellProgramFunc("docker-credential-desktop")
|
||||||
|
|
||||||
|
creds, err := osx.Get(p, os.Args[1])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Got credentials for user `%s` in `%s` with secret `%s` \n", creds.Username, creds.ServerURL, creds.Secret)
|
||||||
|
}
|
@ -1,13 +1,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
//mathRand "math/rand"
|
|
||||||
cryptoRand "crypto/rand"
|
cryptoRand "crypto/rand"
|
||||||
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"main/employee"
|
"antoine-roux.ml/projects/go/test/employee"
|
||||||
)
|
)
|
||||||
|
|
||||||
var a, b int = 1, 2
|
var a, b int = 1, 2
|
23
example.go
23
example.go
@ -1,23 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
//mathRand "math/rand"
|
|
||||||
cryptoRand "crypto/rand"
|
|
||||||
"math/big"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
fmt.Println("Hello, playground", time.Now())
|
|
||||||
nBig, err := cryptoRand.Int(cryptoRand.Reader, big.NewInt(27))
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
n := nBig.Int64()
|
|
||||||
|
|
||||||
//b := []byte{0}
|
|
||||||
//r := cryptoRand.Reader.Read(b)
|
|
||||||
fmt.Println("r", n)
|
|
||||||
//fmt.Println("Random", mathRand.Seed(r).Intn(9))
|
|
||||||
}
|
|
7
go.mod
Normal file
7
go.mod
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
module antoine-roux.ml/projects/go/test
|
||||||
|
|
||||||
|
go 1.15
|
||||||
|
|
||||||
|
require github.com/docker/docker-credential-helpers v0.6.3 // indirect
|
||||||
|
|
||||||
|
replace antoine-roux.ml/projects/go/test/employee => ./employee
|
2
go.sum
Normal file
2
go.sum
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ=
|
||||||
|
github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y=
|
26
goroutine.go
Normal file
26
goroutine.go
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
var battle = make(chan string)
|
||||||
|
|
||||||
|
func warrior(name string, done chan struct{}) {
|
||||||
|
select {
|
||||||
|
case opponent := <-battle:
|
||||||
|
fmt.Printf("%s beat %s\n", name, opponent)
|
||||||
|
case battle <- name:
|
||||||
|
// I lost :-(
|
||||||
|
}
|
||||||
|
done <- struct{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
done := make(chan struct{})
|
||||||
|
langs := []string{"Go", "C", "C++", "Java", "Perl", "Python"}
|
||||||
|
for _, l := range langs {
|
||||||
|
go warrior(l, done)
|
||||||
|
}
|
||||||
|
for range langs {
|
||||||
|
<-done
|
||||||
|
}
|
||||||
|
}
|
124
gtrad.go
Normal file
124
gtrad.go
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Declare cli supported flag
|
||||||
|
sourceLang := flag.String("f", "auto", "Source lang from traduction")
|
||||||
|
targetLang := flag.String("t", "fr", "Target lang to traduction")
|
||||||
|
flag.Parse()
|
||||||
|
flag.Usage = func() {
|
||||||
|
fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", os.Args[0])
|
||||||
|
flag.PrintDefaults()
|
||||||
|
iso, err := GetIsoCode()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
fmt.Printf("Supported lang are : %v \n", strings.Join(iso, ", "))
|
||||||
|
}
|
||||||
|
|
||||||
|
sentence := flag.Args()
|
||||||
|
// assert sentence is pass for traduction
|
||||||
|
if len(sentence) < 1 {
|
||||||
|
log.Println(errors.New("Too few argument pass sentence to traduct"))
|
||||||
|
flag.Usage()
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse and read args for reading original sentence from stdin if necessary
|
||||||
|
var strSentence string
|
||||||
|
if sentence[0] == "-" {
|
||||||
|
byteSentence, err := ioutil.ReadFile(os.Stdin.Name())
|
||||||
|
Check(err)
|
||||||
|
strSentence = string(byteSentence)
|
||||||
|
} else {
|
||||||
|
strSentence = strings.Join(sentence[:], " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare http parameter
|
||||||
|
domain := "translate.googleapis.com"
|
||||||
|
schema := "https"
|
||||||
|
params := url.Values{
|
||||||
|
"client": {"gtx"},
|
||||||
|
"sl": {*sourceLang},
|
||||||
|
"tl": {*targetLang},
|
||||||
|
"dt": {"t"},
|
||||||
|
"q": {strSentence},
|
||||||
|
}
|
||||||
|
url := fmt.Sprintf("%s://%s/translate_a/single?%s", schema, domain, params.Encode())
|
||||||
|
|
||||||
|
// Made http Get request
|
||||||
|
resp, err := http.Get(url)
|
||||||
|
Check(err)
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
fmt.Println(ParseAnswer(resp.Body))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParseAnswer parsing google traduction response
|
||||||
|
func ParseAnswer(data io.Reader) string {
|
||||||
|
var res []json.RawMessage
|
||||||
|
err := json.NewDecoder(data).Decode(&res)
|
||||||
|
Check(err)
|
||||||
|
|
||||||
|
var resSentence [][]json.RawMessage
|
||||||
|
err = json.Unmarshal(res[0], &resSentence)
|
||||||
|
Check(err)
|
||||||
|
|
||||||
|
var finalSentence string
|
||||||
|
// Print traducted sentence
|
||||||
|
for _, e := range resSentence {
|
||||||
|
// Extract traducted sentence from json response
|
||||||
|
var r string
|
||||||
|
err = json.Unmarshal(e[0], &r)
|
||||||
|
Check(err)
|
||||||
|
finalSentence += r
|
||||||
|
}
|
||||||
|
return finalSentence
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check error handling
|
||||||
|
func Check(err error) {
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
flag.Usage()
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIsoCode return list of all iso 639-1 langage abreviation
|
||||||
|
func GetIsoCode() ([]string, error) {
|
||||||
|
// File returned had following format aar||aa on multiline
|
||||||
|
resp, err := http.Get("http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt")
|
||||||
|
if err != nil {
|
||||||
|
return []string{}, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
var iso []string
|
||||||
|
sc := bufio.NewScanner(resp.Body)
|
||||||
|
for sc.Scan() {
|
||||||
|
langAbr := strings.Split(sc.Text(), "|")[2]
|
||||||
|
if langAbr != "" {
|
||||||
|
iso = append(iso, langAbr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err := sc.Err(); err != nil {
|
||||||
|
return []string{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return iso, nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user