mirror of
https://github.com/IBM/fp-go.git
synced 2025-11-23 22:14:53 +02:00
fix: initial release
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
88
cli/identity.go
Normal file
88
cli/identity.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
C "github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
func identityHKT(typeA string) string {
|
||||
return typeA
|
||||
}
|
||||
|
||||
func generateIdentityTraverseTuple(f *os.File, i int) {
|
||||
generateTraverseTuple1(identityHKT, "")(f, i)
|
||||
}
|
||||
|
||||
func generateIdentitySequenceTuple(f *os.File, i int) {
|
||||
generateSequenceTuple1(identityHKT, "")(f, i)
|
||||
}
|
||||
|
||||
func generateIdentitySequenceT(f *os.File, i int) {
|
||||
generateSequenceT1(identityHKT, "")(f, i)
|
||||
}
|
||||
|
||||
func generateIdentityHelpers(filename string, count int) error {
|
||||
dir, err := os.Getwd()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
absDir, err := filepath.Abs(dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
pkg := filepath.Base(absDir)
|
||||
f, err := os.Create(filepath.Clean(filename))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
// log
|
||||
log.Printf("Generating code in [%s] for package [%s] with [%d] repetitions ...", filename, pkg, count)
|
||||
|
||||
// some header
|
||||
fmt.Fprintln(f, "// Code generated by go generate; DO NOT EDIT.")
|
||||
fmt.Fprintln(f, "// This file was generated by robots at")
|
||||
fmt.Fprintf(f, "// %s\n", time.Now())
|
||||
|
||||
fmt.Fprintf(f, "package %s\n\n", pkg)
|
||||
|
||||
fmt.Fprintf(f, `
|
||||
import (
|
||||
A "github.com/ibm/fp-go/internal/apply"
|
||||
T "github.com/ibm/fp-go/tuple"
|
||||
)
|
||||
`)
|
||||
|
||||
for i := 1; i <= count; i++ {
|
||||
// sequenceT
|
||||
generateIdentitySequenceT(f, i)
|
||||
// sequenceTuple
|
||||
generateIdentitySequenceTuple(f, i)
|
||||
// traverseTuple
|
||||
generateIdentityTraverseTuple(f, i)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func IdentityCommand() *C.Command {
|
||||
return &C.Command{
|
||||
Name: "identity",
|
||||
Usage: "generate code for Identity",
|
||||
Flags: []C.Flag{
|
||||
flagCount,
|
||||
flagFilename,
|
||||
},
|
||||
Action: func(ctx *C.Context) error {
|
||||
return generateIdentityHelpers(
|
||||
ctx.String(keyFilename),
|
||||
ctx.Int(keyCount),
|
||||
)
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user