Bagaimana untuk Menjana Skrip Bash Tersuai Menggunakan Templat Go, Pernyataan Kes Tukar dan Data YAML?

Barbara Streisand
Lepaskan: 2024-10-29 04:18:29
asal
180 orang telah melayarinya

How to Generate a Customized Bash Script Using Go Templates, Switch-Case Statements, and YAML Data?

Templat Golang dengan Suis & ForEach

Masalah: Bina skrip bash daripada program Golang yang berulang ke atas senarai kebergantungan, semak mereka jenis dan mencetak perintah tersuai berdasarkan jenis tersebut menggunakan penyataan kes suis.

Jawapan:

Kod Golang dikemas kini berikut mencapai kelakuan yang diingini:

<code class="go">package main

import (
    "log"
    "text/template"
    "gopkg.in/yaml.v2"
    "os"
)

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

type Dependency struct {
    Name    string
    Type    string
}

func main() {
    f := File{}

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

    const t = `
#!/bin/bash
{{range .Dependency}}
echo "type is {{.Type}}"
{{switch .Type}}
  case "runner1":
    echo "Submitting api1"
  case "runner2":
    echo "Submitting api2"
  default:
    echo "Unknown type"
{{end}}
{{end}}
`

    tt := template.Must(template.New("").Parse(t))
    err = tt.Execute(os.Stdout, f)
    if err != nil {
        log.Println("executing template:", err)
    }
}</code>
Salin selepas log masuk

Penjelasan:

  • Kod menggunakan teks/templat untuk memformat rentetan output.
  • Kata kunci julat berulang pada tatasusunan Ketergantungan.
  • Di dalam gelung, blok kes suis digunakan untuk menyesuaikan output berdasarkan Jenis kebergantungan.
  • Pernyataan kes mengendalikan nilai Jenis tertentu dan mencetak arahan yang diingini.
  • Kes lalai mengendalikan jenis yang tidak ditakrifkan secara khusus.

Keputusan:

Contoh skrip bash yang dihasilkan oleh kod ini ialah:

<code class="bash">#!/bin/bash

echo "type is runner"
Submitting api1


echo "type is runner2"
Submitting api2</code>
Salin selepas log masuk

Pertimbangan Tambahan:

  • Contoh data YAML dikodkan keras dalam pembolehubah data. Dalam senario dunia sebenar, ini boleh dimuatkan daripada fail atau pangkalan data.
  • Pemetaan API (daripada Jenis kepada arahan) boleh dilaksanakan sebagai peta atau fail konfigurasi berasingan untuk fleksibiliti yang dipertingkatkan.
  • Medan cwd dan Pasang dalam struct Dependency tidak digunakan dalam penyelesaian ini, kerana ia tidak diperlukan untuk demo.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Skrip Bash Tersuai Menggunakan Templat Go, Pernyataan Kes Tukar dan Data YAML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!