Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: update helm chart transformer #60

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion maven-helmchartgen-wasm/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# How to build this WASM Transformer

1. Ensure you have the [TinyGo](https://tinygo.org/) compiler installed. Move2Kube WASM modules currently do not support WASI modules built by the Go compiler.
1. Ensure you have the [TinyGo](https://tinygo.org/) compiler installed. The official Golang compiler doesn't fully support WASM exports yet https://github.com/golang/go/issues/65199
2. Run the following command:
```
$ tinygo build -o helmchartgen.wasm -target=wasi transformer.go
Expand Down
Binary file modified maven-helmchartgen-wasm/helmchartgen.wasm
Binary file not shown.
56 changes: 26 additions & 30 deletions maven-helmchartgen-wasm/transformer.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,25 @@ const PomFile = "pom.xml"

var input []byte = make([]byte, 2048)

// Reads a null-terminated string (ala C strings) from the provided pointer
func readPtr(dataPointer *int32) string {
nth := 0
var dataStr strings.Builder
pointer := uintptr(unsafe.Pointer(dataPointer))
for {
s := *(*int32)(unsafe.Pointer(pointer + uintptr(nth)))
if byte(s) == 0 {
break
}
func unpack(combined uint64) (uint32, uint32) {
pointer := uint32(combined >> 32) // Extracts the upper 32 bits
size := uint32(combined) // Extracts the lower 32 bits
return pointer, size
}

dataStr.WriteByte(byte(s))
nth++
}
func pack(pointer uint32, size uint32) uint64 {
return (uint64(pointer) << 32) | uint64(size)
}

return dataStr.String()
func readData(dataPointer uint64) string {
pointer, size := unpack(dataPointer)
dataStr := unsafe.String((*byte)(unsafe.Pointer(uintptr(pointer))), size)
return strings.Clone(dataStr)
}

//export directoryDetect
func directoryDetect(dataPointer *int32) *int32 {
dir := readPtr(dataPointer)
func directoryDetect(dataPointer uint64) uint64 {
dir := readData(dataPointer)
dataFilePath := filepath.Join(dir, PomFile)

transform_return_data := make(map[string]interface{})
Expand All @@ -58,11 +56,11 @@ func directoryDetect(dataPointer *int32) *int32 {
fmt.Println(err)
os.Exit(1)
}
r := make([]int32, 2)
r[0] = int32(uintptr(unsafe.Pointer(&(transform_return_data_byt[0]))))
r[1] = int32(len(transform_return_data_byt))

return &r[0]
DDptr := uint32(uintptr(unsafe.Pointer(&(transform_return_data_byt[0]))))
DDsize := uint32(len(transform_return_data_byt))

return pack(DDptr, DDsize)
} else {
fmt.Printf("wasm stat failed: %v\n", err)
}
Expand All @@ -73,16 +71,15 @@ func directoryDetect(dataPointer *int32) *int32 {
fmt.Println(err)
os.Exit(1)
}
r := make([]int32, 2)
r[0] = int32(uintptr(unsafe.Pointer(&(transform_return_data_byt[0]))))
r[1] = int32(len(transform_return_data_byt))
DDptr := uint32(uintptr(unsafe.Pointer(&(transform_return_data_byt[0]))))
DDsize := uint32(len(transform_return_data_byt))

return &r[0]
return pack(DDptr, DDsize)
}

//export transform
func transform(dataPointer *int32) *int32 {
rawData := readPtr(dataPointer)
func transform(dataPointer uint64) uint64 {
rawData := readData(dataPointer)

var data map[string]interface{}
err := json.Unmarshal([]byte(rawData), &data)
Expand Down Expand Up @@ -138,11 +135,10 @@ func transform(dataPointer *int32) *int32 {
fmt.Println(err)
os.Exit(1)
}
r := make([]int32, 2)
r[0] = int32(uintptr(unsafe.Pointer(&(transform_return_data_byt[0]))))
r[1] = int32(len(transform_return_data_byt))
TTptr := uint32(uintptr(unsafe.Pointer(&(transform_return_data_byt[0]))))
TTsize := uint32(len(transform_return_data_byt))

return &r[0]
return pack(TTptr, TTsize)
}

// getServiceName extracts service name from pom file
Expand Down
1 change: 1 addition & 0 deletions maven-helmchartgen-wasm/transformer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ spec:
move2kube.konveyor.io/built-in: "true"
config:
wasm_module: helmchartgen.wasm
compile_aot: true
Loading