blob: 4885d4386b5b8fb557b1534526b0bf60b8206fbf [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package world
import (
"context"
"fmt"
"path/filepath"
"regexp"
"strings"
)
func (w *World) AddLicenseUrls() error {
ctx := context.Background()
urlFolderPattern := regexp.MustCompile(`.*\.com\/(.*)`)
git, err := NewGit()
if err != nil {
return err
}
for _, p := range w.FilteredProjects {
plus := "+"
dir := p.Root
url, err := git.GetURL(ctx, dir)
if err != nil {
return err
}
url = strings.ReplaceAll(url, "sso://turquoise-internal", "https://turquoise-internal.googlesource.com")
if strings.HasPrefix(dir, "prebuilt") {
url = "https://fuchsia-license.teams.x20web.corp.google.com/notices"
plus = "%2B"
}
urlFolder := ""
urlFolderList := urlFolderPattern.FindStringSubmatch(url)
if len(urlFolderList) > 1 {
urlFolder = urlFolderList[1]
}
if strings.Contains(url, "dart-pkg") {
urlFolder = filepath.Join(urlFolder, "pub")
}
hash, err := git.GetCommitHash(ctx, dir)
if err != nil {
return err
}
for _, l := range p.LicenseFile {
if l.Url != "" {
continue
}
path := l.Path
if strings.Contains(path, Config.FuchsiaDir) {
path, _ = filepath.Rel(Config.FuchsiaDir, path)
}
if strings.HasPrefix(path, urlFolder) {
path, _ = filepath.Rel(urlFolder, path)
}
l.Url = fmt.Sprintf("%v/%v/%v/%v", url, plus, hash, path)
if strings.HasPrefix(dir, "prebuilt") {
plusVal(X20Licenses, l.Url)
}
}
}
return nil
}