github.com/google/osv-scalibr@v0.4.1/extractor/filesystem/os/winget/metadata/metadata.go (about)

     1  // Copyright 2025 Google LLC
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Package metadata defines a Metadata struct for winget packages.
    16  package metadata
    17  
    18  import (
    19  	pb "github.com/google/osv-scalibr/binary/proto/scan_result_go_proto"
    20  )
    21  
    22  // Metadata holds parsing information for a winget package.
    23  type Metadata struct {
    24  	Name     string
    25  	ID       string
    26  	Version  string
    27  	Moniker  string
    28  	Channel  string
    29  	Tags     []string
    30  	Commands []string
    31  }
    32  
    33  // SetProto sets the WingetMetadata field in the Package proto.
    34  func (m *Metadata) SetProto(p *pb.Package) {
    35  	if m == nil {
    36  		return
    37  	}
    38  	if p == nil {
    39  		return
    40  	}
    41  
    42  	p.Metadata = &pb.Package_WingetMetadata{
    43  		WingetMetadata: &pb.WingetPackageMetadata{
    44  			Name:     m.Name,
    45  			Id:       m.ID,
    46  			Version:  m.Version,
    47  			Moniker:  m.Moniker,
    48  			Channel:  m.Channel,
    49  			Tags:     m.Tags,
    50  			Commands: m.Commands,
    51  		},
    52  	}
    53  }
    54  
    55  // ToStruct converts the WingetPackageMetadata proto to a Metadata struct.
    56  func ToStruct(m *pb.WingetPackageMetadata) *Metadata {
    57  	if m == nil {
    58  		return nil
    59  	}
    60  
    61  	return &Metadata{
    62  		Name:     m.GetName(),
    63  		ID:       m.GetId(),
    64  		Version:  m.GetVersion(),
    65  		Moniker:  m.GetMoniker(),
    66  		Channel:  m.GetChannel(),
    67  		Tags:     m.GetTags(),
    68  		Commands: m.GetCommands(),
    69  	}
    70  }