#StackBounty: #go avoid globlal in module and pass data between routes

Bounty: 100

I need to create bash.sh file from golang program
which should do the following .

create loop on dependencies and read the type and according to type
print different echo message (commands) I need it to work with switch
on the type of the dependency with golang


for each dependency entry add the type message of echo

for a in $(dependencies) 
  echo $runner

what I did is the following which doesn’t work
package main

import (

type File struct {
    TypeVersion string `yaml:"_type-version"`
    Dependency  []Dependency

type Dependency struct {
    Name    string
    Type    string
    CWD     string
    Install []Install

type Install map[string]string

var data = `
_type-version: "1.0.0"
  - name: ui
    type: runner
    cwd: /ui
       - name: api

  - name: ui2
    type: runner2
    cwd: /ui2
       - name: api2


func main() {
    f := File{}

    err := yaml.Unmarshal([]byte(data), &f)
    if err != nil {
        log.Fatalf("error: %v", err)

    d, err := yaml.Marshal(&f)
    if err != nil {
        log.Fatalf("error: %v", err)
    fmt.Printf("--- t dump:n%snn", string(d))

    wd, _ := os.Getwd()

    newfile, err := os.Create(wd + "/" + "bash.sh") // Truncates if file already exists
    if err != nil {
        fmt.Errorf("Failed to create file: %s , %s", wd+"/"+"bash.sh", err)


    const File = `
{{if .Type=runner2}}
 echo "type is runner2"
{{- else}}
echo "type is %S"
{{- end}}

    t := template.Must(template.New("bash.sh").Parse(File))

    for _, r := range f.Dependency {
        err := t.Execute(os.Stdout, r)
        if err != nil {
            log.Println("executing template:", err)


Get this bounty!!!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.