func (s *CTagsToPrototypes) Run(ctx *types.Context) error { tags := ctx.CTagsCollected lineWhereToInsertPrototypes := findLineWhereToInsertPrototypes(tags) if lineWhereToInsertPrototypes != -1 { ctx.PrototypesLineWhereToInsert = lineWhereToInsertPrototypes } ctx.Prototypes = toPrototypes(tags) return nil }
func (s *CTagsRunner) Run(ctx *types.Context) error { buildProperties := ctx.BuildProperties ctagsTargetFilePath := ctx.CTagsTargetFile logger := ctx.GetLogger() properties := buildProperties.Clone() properties.Merge(buildProperties.SubTree(constants.BUILD_PROPERTIES_TOOLS_KEY).SubTree(constants.CTAGS)) properties[constants.BUILD_PROPERTIES_SOURCE_FILE] = ctagsTargetFilePath pattern := properties[constants.BUILD_PROPERTIES_PATTERN] if pattern == constants.EMPTY_STRING { return i18n.ErrorfWithLogger(logger, constants.MSG_PATTERN_MISSING, constants.CTAGS) } commandLine := properties.ExpandPropsInString(pattern) command, err := utils.PrepareCommand(commandLine, logger) if err != nil { return i18n.WrapError(err) } verbose := ctx.Verbose if verbose { fmt.Println(commandLine) } sourceBytes, err := command.Output() if err != nil { return i18n.WrapError(err) } ctx.CTagsOutput = string(sourceBytes) parser := &ctags.CTagsParser{} ctx.CTagsOfPreprocessedSource = parser.Parse(ctx.CTagsOutput) protos, line := parser.GeneratePrototypes() if line != -1 { ctx.PrototypesLineWhereToInsert = line } ctx.Prototypes = protos return nil }