-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrefreshcmd.go
98 lines (79 loc) · 1.85 KB
/
refreshcmd.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// Copyright (C) 2017, 2018 Damon Revoe. All rights reserved.
// Use of this source code is governed by the MIT
// license, which can be found in the LICENSE file.
package main
import (
"bufio"
"errors"
"log"
"os"
"path"
"github.com/spf13/cobra"
)
func readPackageSelection(pi *packageIndex, privateDir string) (
packageDefinitionList, error) {
file, err := os.Open(path.Join(privateDir,
filenameForSelectedPackages))
if err != nil {
return nil, err
}
defer func() {
closeErr := file.Close()
if err == nil {
err = closeErr
}
}()
var selected packageDefinitionList
scanner := bufio.NewScanner(file)
for scanner.Scan() {
pkgName := scanner.Text()
pd := pi.packageByName[pkgName]
if pd == nil {
return nil, errors.New("previously selected package '" +
pkgName + "' could not be found")
}
selected = append(selected, pd)
}
if err := scanner.Err(); err != nil {
return nil, err
}
return selected, nil
}
func refreshWorkspace() error {
ws, err := loadWorkspace()
if err != nil {
return err
}
pi, err := readPackageDefinitions(ws.wp)
if err != nil {
return err
}
selection, err := readPackageSelection(pi, ws.absPrivateDir)
if err != nil {
return err
}
conftab, err := readConftab(path.Join(ws.absPrivateDir,
conftabFilename))
if err != nil {
return err
}
return generateAndBootstrapPackages(ws, pi, selection, conftab)
}
// refreshCmd represents the refresh command
var refreshCmd = &cobra.Command{
Use: "refresh",
Short: "Regenerate Autotools files in the current workspace",
Args: cobra.MaximumNArgs(0),
Run: func(_ *cobra.Command, _ []string) {
if err := refreshWorkspace(); err != nil {
log.Fatal(err)
}
},
}
func init() {
rootCmd.AddCommand(refreshCmd)
refreshCmd.Flags().SortFlags = false
addQuietFlag(refreshCmd)
addWorkspaceDirFlag(refreshCmd)
addNoBootstrapFlag(refreshCmd)
}