commit
c8f885a4d0
|
@ -14,7 +14,6 @@ import (
|
|||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strconv"
|
||||
|
@ -802,7 +801,7 @@ func StripComments(input []byte, commentMarker []byte) []byte {
|
|||
var output []byte
|
||||
for _, currentLine := range lines {
|
||||
var commentIndex = bytes.Index(currentLine, commentMarker)
|
||||
if ( commentIndex == -1 ) {
|
||||
if commentIndex == -1 {
|
||||
output = append(output, currentLine...)
|
||||
} else {
|
||||
output = append(output, currentLine[:commentIndex]...)
|
||||
|
@ -867,10 +866,18 @@ func ParseRepositoryTag(repos string) (string, string) {
|
|||
return repos, ""
|
||||
}
|
||||
|
||||
type User struct {
|
||||
Uid string // user id
|
||||
Gid string // primary group id
|
||||
Username string
|
||||
Name string
|
||||
HomeDir string
|
||||
}
|
||||
|
||||
// UserLookup check if the given username or uid is present in /etc/passwd
|
||||
// and returns the user struct.
|
||||
// If the username is not found, an error is returned.
|
||||
func UserLookup(uid string) (*user.User, error) {
|
||||
func UserLookup(uid string) (*User, error) {
|
||||
file, err := ioutil.ReadFile("/etc/passwd")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -878,7 +885,7 @@ func UserLookup(uid string) (*user.User, error) {
|
|||
for _, line := range strings.Split(string(file), "\n") {
|
||||
data := strings.Split(line, ":")
|
||||
if len(data) > 5 && (data[0] == uid || data[2] == uid) {
|
||||
return &user.User{
|
||||
return &User{
|
||||
Uid: data[2],
|
||||
Gid: data[3],
|
||||
Username: data[0],
|
||||
|
@ -890,13 +897,13 @@ func UserLookup(uid string) (*user.User, error) {
|
|||
return nil, fmt.Errorf("User not found in /etc/passwd")
|
||||
}
|
||||
|
||||
type DependencyGraph struct{
|
||||
type DependencyGraph struct {
|
||||
nodes map[string]*DependencyNode
|
||||
}
|
||||
|
||||
type DependencyNode struct{
|
||||
id string
|
||||
deps map[*DependencyNode]bool
|
||||
type DependencyNode struct {
|
||||
id string
|
||||
deps map[*DependencyNode]bool
|
||||
}
|
||||
|
||||
func NewDependencyGraph() DependencyGraph {
|
||||
|
@ -917,7 +924,7 @@ func (graph *DependencyGraph) NewNode(id string) string {
|
|||
return id
|
||||
}
|
||||
nd := &DependencyNode{
|
||||
id: id,
|
||||
id: id,
|
||||
deps: map[*DependencyNode]bool{},
|
||||
}
|
||||
graph.addNode(nd)
|
||||
|
@ -979,7 +986,7 @@ func (graph *DependencyGraph) GenerateTraversalMap() ([][]string, error) {
|
|||
// If at least one dep hasn't been processed yet, we can't
|
||||
// add it.
|
||||
ok := true
|
||||
for dep, _ := range node.deps {
|
||||
for dep := range node.deps {
|
||||
if !processed[dep] {
|
||||
ok = false
|
||||
break
|
||||
|
@ -991,7 +998,7 @@ func (graph *DependencyGraph) GenerateTraversalMap() ([][]string, error) {
|
|||
}
|
||||
}
|
||||
Debugf("Round %d: found %d available nodes", len(result), len(tmp_processed))
|
||||
// If no progress has been made this round,
|
||||
// If no progress has been made this round,
|
||||
// that means we have circular dependencies.
|
||||
if len(tmp_processed) == 0 {
|
||||
return nil, fmt.Errorf("Could not find a solution to this dependency graph")
|
||||
|
@ -1004,4 +1011,4 @@ func (graph *DependencyGraph) GenerateTraversalMap() ([][]string, error) {
|
|||
result = append(result, round)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue