1// Copyright 2017 The Go Authors. 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
5package main
6
7import (
8	"fmt"
9	"go/build"
10	"go/parser"
11
12	"golang.org/x/tools/go/loader"
13)
14
15const (
16	extractFile  = "extracted.gotext.json"
17	outFile      = "out.gotext.json"
18	gotextSuffix = ".gotext.json"
19)
20
21// NOTE: The command line tool already prefixes with "gotext:".
22var (
23	wrap = func(err error, msg string) error {
24		if err == nil {
25			return nil
26		}
27		return fmt.Errorf("%s: %v", msg, err)
28	}
29	errorf = fmt.Errorf
30)
31
32// TODO: still used. Remove when possible.
33func loadPackages(conf *loader.Config, args []string) (*loader.Program, error) {
34	if len(args) == 0 {
35		args = []string{"."}
36	}
37
38	conf.Build = &build.Default
39	conf.ParserMode = parser.ParseComments
40
41	// Use the initial packages from the command line.
42	args, err := conf.FromArgs(args, false)
43	if err != nil {
44		return nil, wrap(err, "loading packages failed")
45	}
46
47	// Load, parse and type-check the whole program.
48	return conf.Load()
49}
50