...

Source file src/github.com/chai2010/gettext-go/cmd/xgettext-go/utils.go

Documentation: github.com/chai2010/gettext-go/cmd/xgettext-go

     1  // Copyright 2020 ChaiShushan <chaishushan{AT}gmail.com>. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package main
     6  
     7  import (
     8  	"bytes"
     9  	"log"
    10  	"os/exec"
    11  	"path/filepath"
    12  	"sort"
    13  	"strings"
    14  )
    15  
    16  func gopkgDir(pkgpath string) string {
    17  	cmd := exec.Command("go", "list", "-f", `"{{.Dir}}"`, pkgpath)
    18  	output, err := cmd.Output()
    19  	if err != nil {
    20  		log.Fatal(err)
    21  	}
    22  	output = bytes.TrimSpace(output)
    23  	output = bytes.Trim(output, `"`)
    24  	return string(output)
    25  }
    26  
    27  func gopkgName(pkgpath string) string {
    28  	cmd := exec.Command("go", "list", "-f", `"{{.Name}}"`, pkgpath)
    29  	output, err := cmd.Output()
    30  	if err != nil {
    31  		log.Fatal(err)
    32  	}
    33  	output = bytes.TrimSpace(output)
    34  	output = bytes.Trim(output, `"`)
    35  	return string(output)
    36  }
    37  
    38  func gopkgPath(pkgpath string) string {
    39  	cmd := exec.Command("go", "list", pkgpath)
    40  	output, err := cmd.Output()
    41  	if err != nil {
    42  		log.Fatal(err)
    43  	}
    44  
    45  	output = bytes.TrimSpace(output)
    46  	output = bytes.Trim(output, `"`)
    47  	return string(output)
    48  }
    49  
    50  func gopkgFiles(pkgpath string) []string {
    51  	cmd := exec.Command("go", "list", "-f", `"{{.GoFiles}}"`, pkgpath)
    52  	output, err := cmd.Output()
    53  	if err != nil {
    54  		log.Fatal(err)
    55  	}
    56  
    57  	// [a.go b.go ...]
    58  	output = bytes.TrimSpace(output)
    59  	output = bytes.Trim(output, `["]`)
    60  
    61  	files := strings.Split(string(output), " ")
    62  	for i, s := range files {
    63  		files[i] = s
    64  	}
    65  	sort.Strings(files)
    66  	return files
    67  }
    68  
    69  func gopkgFilesAbspath(pkgpath string) []string {
    70  	dir := gopkgDir(pkgpath)
    71  	files := gopkgFiles(pkgpath)
    72  
    73  	for i, s := range files {
    74  		files[i] = filepath.Join(dir, s)
    75  	}
    76  
    77  	sort.Strings(files)
    78  	return files
    79  }
    80  

View as plain text