Skip to content

Commit

Permalink
Fix imports, recurse through imported directories (#58)
Browse files Browse the repository at this point in the history
* replace missing block of code that sets Import Prefix

Signed-off-by: Scott Weiss <[email protected]>

* collect proto descriptors from custom imports as well

Signed-off-by: Scott Weiss <[email protected]>
  • Loading branch information
ilackarms authored Jan 4, 2019
1 parent 2e36533 commit f2b636e
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 28 deletions.
44 changes: 25 additions & 19 deletions pkg/code-generator/cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,31 +218,37 @@ func collectDescriptorsFromRoot(root string, customImports, skipDirs []string, w
descriptors = append(descriptors, f)
}
var g errgroup.Group
walkErr := filepath.Walk(root, func(protoFile string, info os.FileInfo, err error) error {
if !strings.HasSuffix(protoFile, ".proto") {
return nil
for _, dir := range append([]string{root}, customImports...) {
absoluteDir, err := filepath.Abs(dir)
if err != nil {
return nil, err
}
for _, skip := range skipDirs {
skipRoot := filepath.Join(root, skip)
if strings.HasPrefix(protoFile, skipRoot) {
log.Warnf("skipping proto %v because it is %v is a skipped directory", protoFile, skipRoot)
walkErr := filepath.Walk(absoluteDir, func(protoFile string, info os.FileInfo, err error) error {
if !strings.HasSuffix(protoFile, ".proto") {
return nil
}
}
for _, skip := range skipDirs {
skipRoot := filepath.Join(absoluteDir, skip)
if strings.HasPrefix(protoFile, skipRoot) {
log.Warnf("skipping proto %v because it is %v is a skipped directory", protoFile, skipRoot)
return nil
}
}

// parallelize parsing the descriptors as each one requires file i/o and is slow
g.Go(func() error {
return addDescriptorsForFile(addDescriptor, root, protoFile, customImports, wantCompile)
// parallelize parsing the descriptors as each one requires file i/o and is slow
g.Go(func() error {
return addDescriptorsForFile(addDescriptor, absoluteDir, protoFile, customImports, wantCompile)
})
return nil
})
return nil
})
if walkErr != nil {
return nil, walkErr
}
if walkErr != nil {
return nil, walkErr
}

// Wait for all descriptor parsing to complete.
if err := g.Wait(); err != nil {
return nil, err
// Wait for all descriptor parsing to complete.
if err := g.Wait(); err != nil {
return nil, err
}
}
sort.SliceStable(descriptors, func(i, j int) bool {
return descriptors[i].GetName() < descriptors[j].GetName()
Expand Down
13 changes: 4 additions & 9 deletions pkg/code-generator/parser/parser_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,6 @@ type ProtoMessageWrapper struct {
Message *protokit.Descriptor
}

func findMessage(messages []ProtoMessageWrapper, name, protoPackage string) (ProtoMessageWrapper, error) {
for _, msg := range messages {
if msg.Message.GetName() == name && msg.Message.GetPackage() == protoPackage {
return msg, nil
}
}
return ProtoMessageWrapper{}, errors.Errorf("message %v.%v not found", name, protoPackage)
}

// note (ilackarms): this function supports the deprecated method of using magic comments to declare resource groups.
// this will be removed in a future release of solo kit
func resourceGroupsFromMessages(messages []ProtoMessageWrapper) map[string][]model.ResourceConfig {
Expand Down Expand Up @@ -103,6 +94,10 @@ func getResources(project *model.Project, messages []ProtoMessageWrapper) ([]*mo
if err != nil {
return nil, nil, err
}
if resource.ProtoPackage != project.ProtoPackage {
importPrefix := strings.Replace(resource.ProtoPackage, ".", "_", -1) + "."
resource.ImportPrefix = importPrefix
}
resourcesForGroup = append(resourcesForGroup, resource)
}

Expand Down

0 comments on commit f2b636e

Please sign in to comment.