diff --git a/plugins/ae/impl/impl.go b/plugins/ae/impl/impl.go index cfc747a4eb3..54bbee8fbff 100644 --- a/plugins/ae/impl/impl.go +++ b/plugins/ae/impl/impl.go @@ -45,6 +45,14 @@ func (plugin AE) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) erro api.Init(config, logger, db) return nil } +func (plugin AE) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.AECommit{}, + &models.AEProject{}, + &models.AeConnection{}, + &models.AeResponse{}, + } +} func (plugin AE) Description() string { return "To collect and enrich data from AE" diff --git a/plugins/core/plugin_model.go b/plugins/core/plugin_model.go new file mode 100644 index 00000000000..5ddec7f6129 --- /dev/null +++ b/plugins/core/plugin_model.go @@ -0,0 +1,26 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package core + +type Tabler interface { + TableName() string +} + +type PluginModel interface { + GetTablesInfo() []Tabler +} diff --git a/plugins/dbt/dbt.go b/plugins/dbt/dbt.go index c3ce3d3e173..5fdbabd4dbf 100644 --- a/plugins/dbt/dbt.go +++ b/plugins/dbt/dbt.go @@ -42,6 +42,10 @@ func (plugin Dbt) SubTaskMetas() []core.SubTaskMeta { } } +func (plugin Dbt) GetTablesInfo() []core.Tabler { + return []core.Tabler{} +} + func (plugin Dbt) PrepareTaskData(taskCtx core.TaskContext, options map[string]interface{}) (interface{}, error) { var op tasks.DbtOptions err := mapstructure.Decode(options, &op) diff --git a/plugins/feishu/impl/impl.go b/plugins/feishu/impl/impl.go index e987077dc88..0b748cd4598 100644 --- a/plugins/feishu/impl/impl.go +++ b/plugins/feishu/impl/impl.go @@ -76,6 +76,13 @@ func (plugin Feishu) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) return nil } +func (plugin Feishu) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.FeishuConnection{}, + &models.FeishuMeetingTopUserItem{}, + } +} + func (plugin Feishu) Description() string { return "To collect and enrich data from Feishu" } diff --git a/plugins/gitee/impl/impl.go b/plugins/gitee/impl/impl.go index 44f8662a708..57bb4bae0a0 100644 --- a/plugins/gitee/impl/impl.go +++ b/plugins/gitee/impl/impl.go @@ -46,6 +46,27 @@ func (plugin Gitee) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) e return nil } +func (plugin Gitee) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.GiteeConnection{}, + &models.GiteeAccount{}, + &models.GiteeCommit{}, + &models.GiteeCommitStat{}, + &models.GiteeIssue{}, + &models.GiteeIssueComment{}, + &models.GiteeIssueLabel{}, + &models.GiteePullRequest{}, + &models.GiteePullRequestComment{}, + &models.GiteePullRequestCommit{}, + &models.GiteePullRequestIssue{}, + &models.GiteePullRequestLabel{}, + &models.GiteeRepo{}, + &models.GiteeRepoCommit{}, + &models.GiteeResponse{}, + &models.GiteeReviewer{}, + } +} + func (plugin Gitee) Description() string { return "To collect and enrich data from Gitee" } diff --git a/plugins/gitextractor/gitextractor.go b/plugins/gitextractor/gitextractor.go index 146e869da01..81686d99659 100644 --- a/plugins/gitextractor/gitextractor.go +++ b/plugins/gitextractor/gitextractor.go @@ -18,13 +18,14 @@ limitations under the License. package main import ( + "strings" + "github.com/apache/incubator-devlake/plugins/core" "github.com/apache/incubator-devlake/plugins/gitextractor/models" "github.com/apache/incubator-devlake/plugins/gitextractor/parser" "github.com/apache/incubator-devlake/plugins/gitextractor/store" "github.com/apache/incubator-devlake/plugins/gitextractor/tasks" "github.com/mitchellh/mapstructure" - "strings" ) var _ core.PluginMeta = (*GitExtractor)(nil) @@ -32,6 +33,10 @@ var _ core.PluginTask = (*GitExtractor)(nil) type GitExtractor struct{} +func (plugin GitExtractor) GetTablesInfo() []core.Tabler { + return []core.Tabler{} +} + func (plugin GitExtractor) Description() string { return "extract infos from git repository" } diff --git a/plugins/github/impl/impl.go b/plugins/github/impl/impl.go index 94dc18dea0b..92f88214ee0 100644 --- a/plugins/github/impl/impl.go +++ b/plugins/github/impl/impl.go @@ -46,6 +46,34 @@ func (plugin Github) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) return nil } +func (plugin Github) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.GithubConnection{}, + &models.GithubAccount{}, + &models.GithubAccountOrg{}, + &models.GithubCommit{}, + &models.GithubCommitStat{}, + &models.GithubIssue{}, + &models.GithubIssueComment{}, + &models.GithubIssueEvent{}, + &models.GithubIssueLabel{}, + &models.GithubJob{}, + &models.GithubMilestone{}, + &models.GithubPipeline{}, + &models.GithubPrComment{}, + &models.GithubPrCommit{}, + &models.GithubPrIssue{}, + &models.GithubPrLabel{}, + &models.GithubPrReview{}, + &models.GithubPullRequest{}, + &models.GithubRepo{}, + &models.GithubRepoAccount{}, + &models.GithubRepoCommit{}, + &models.GithubReviewer{}, + &models.GithubRun{}, + } +} + func (plugin Github) Description() string { return "To collect and enrich data from GitHub" } diff --git a/plugins/gitlab/impl/impl.go b/plugins/gitlab/impl/impl.go index c3c67fe25c3..514d47bb229 100644 --- a/plugins/gitlab/impl/impl.go +++ b/plugins/gitlab/impl/impl.go @@ -33,6 +33,7 @@ import ( var _ core.PluginMeta = (*Gitlab)(nil) var _ core.PluginInit = (*Gitlab)(nil) +var _ core.PluginModel = (*Gitlab)(nil) var _ core.PluginTask = (*Gitlab)(nil) var _ core.PluginApi = (*Gitlab)(nil) var _ core.Migratable = (*Gitlab)(nil) @@ -46,6 +47,27 @@ func (plugin Gitlab) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) return nil } +func (plugin Gitlab) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.GitlabConnection{}, + &models.GitlabAccount{}, + &models.GitlabCommit{}, + &models.GitlabIssue{}, + &models.GitlabIssueLabel{}, + &models.GitlabJob{}, + &models.GitlabMergeRequest{}, + &models.GitlabMrComment{}, + &models.GitlabMrCommit{}, + &models.GitlabMrLabel{}, + &models.GitlabMrNote{}, + &models.GitlabPipeline{}, + &models.GitlabProject{}, + &models.GitlabProjectCommit{}, + &models.GitlabReviewer{}, + &models.GitlabTag{}, + } +} + func (plugin Gitlab) Description() string { return "To collect and enrich data from Gitlab" } diff --git a/plugins/icla/plugin_main.go b/plugins/icla/plugin_main.go index 57972adf636..5bfcaa76acc 100644 --- a/plugins/icla/plugin_main.go +++ b/plugins/icla/plugin_main.go @@ -42,6 +42,12 @@ var PluginEntry Icla //nolint type Icla struct{} +func (plugin Icla) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.IclaCommitter{}, + } +} + func (plugin Icla) Description() string { return "collect some Icla data" } diff --git a/plugins/jenkins/impl/impl.go b/plugins/jenkins/impl/impl.go index 299a43a176c..677a8d076e2 100644 --- a/plugins/jenkins/impl/impl.go +++ b/plugins/jenkins/impl/impl.go @@ -45,6 +45,20 @@ func (plugin Jenkins) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) return nil } +func (plugin Jenkins) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.JenkinsBuild{}, + &models.JenkinsBuildRepo{}, + &models.JenkinsConnection{}, + &models.JenkinsJob{}, + &models.JenkinsJobDag{}, + &models.JenkinsPipeline{}, + &models.JenkinsResponse{}, + &models.JenkinsStage{}, + &models.JenkinsTask{}, + } +} + func (plugin Jenkins) Description() string { return "To collect and enrich data from Jenkins" } diff --git a/plugins/jira/impl/impl.go b/plugins/jira/impl/impl.go index cedd9f29577..2c38afc9870 100644 --- a/plugins/jira/impl/impl.go +++ b/plugins/jira/impl/impl.go @@ -48,6 +48,29 @@ func (plugin Jira) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) er api.Init(config, logger, db) return nil } +func (plugin Jira) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.ApiMyselfResponse{}, + &models.JiraAccount{}, + &models.JiraBoard{}, + &models.JiraBoardIssue{}, + &models.JiraBoardSprint{}, + &models.JiraConnection{}, + &models.JiraIssue{}, + &models.JiraIssueChangelogItems{}, + &models.JiraIssueChangelogs{}, + &models.JiraIssueCommit{}, + &models.JiraIssueLabel{}, + &models.JiraIssueType{}, + &models.JiraProject{}, + &models.JiraRemotelink{}, + &models.JiraServerInfo{}, + &models.JiraSprint{}, + &models.JiraSprintIssue{}, + &models.JiraStatus{}, + &models.JiraWorklog{}, + } +} func (plugin Jira) Description() string { return "To collect and enrich data from JIRA" diff --git a/plugins/org/impl/impl.go b/plugins/org/impl/impl.go index f99ce1af5c5..daa272239ff 100644 --- a/plugins/org/impl/impl.go +++ b/plugins/org/impl/impl.go @@ -42,6 +42,10 @@ func (plugin *Org) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) er return nil } +func (plugin Org) GetTablesInfo() []core.Tabler { + return []core.Tabler{} +} + func (plugin Org) Description() string { return "collect data related to team and organization" } diff --git a/plugins/refdiff/refdiff.go b/plugins/refdiff/refdiff.go index 3409818296a..4e57b48dc93 100644 --- a/plugins/refdiff/refdiff.go +++ b/plugins/refdiff/refdiff.go @@ -43,6 +43,10 @@ func (plugin RefDiff) Description() string { return "Calculate commits diff for specified ref pairs based on `commits` and `commit_parents` tables" } +func (plugin RefDiff) GetTablesInfo() []core.Tabler { + return []core.Tabler{} +} + func (plugin RefDiff) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) error { return nil } diff --git a/plugins/starrocks/starrocks.go b/plugins/starrocks/starrocks.go index 99f062b7f24..f22903de319 100644 --- a/plugins/starrocks/starrocks.go +++ b/plugins/starrocks/starrocks.go @@ -40,6 +40,10 @@ func (s StarRocks) PrepareTaskData(taskCtx core.TaskContext, options map[string] return &op, nil } +func (plugin StarRocks) GetTablesInfo() []core.Tabler { + return []core.Tabler{} +} + func (s StarRocks) Description() string { return "Sync data from database to StarRocks" } diff --git a/plugins/tapd/impl/impl.go b/plugins/tapd/impl/impl.go index 43df5152eda..fc26f21df18 100644 --- a/plugins/tapd/impl/impl.go +++ b/plugins/tapd/impl/impl.go @@ -49,6 +49,48 @@ func (plugin Tapd) Init(config *viper.Viper, logger core.Logger, db *gorm.DB) er return nil } +func (plugin Tapd) GetTablesInfo() []core.Tabler { + return []core.Tabler{ + &models.TapdAccount{}, + &models.TapdBug{}, + &models.TapdBugChangelog{}, + &models.TapdBugChangelogItem{}, + &models.TapdBugCommit{}, + &models.TapdBugCustomFields{}, + &models.TapdBugLabel{}, + &models.TapdBugStatus{}, + &models.TapdConnection{}, + &models.TapdConnectionDetail{}, + &models.TapdIssue{}, + &models.TapdIteration{}, + &models.TapdIterationBug{}, + &models.TapdIterationStory{}, + &models.TapdIterationTask{}, + &models.TapdStory{}, + &models.TapdStoryBug{}, + &models.TapdStoryCategory{}, + &models.TapdStoryChangelog{}, + &models.TapdStoryChangelogItem{}, + &models.TapdStoryCommit{}, + &models.TapdStoryCustomFields{}, + &models.TapdStoryLabel{}, + &models.TapdStoryStatus{}, + &models.TapdSubWorkspace{}, + &models.TapdTask{}, + &models.TapdTaskChangelog{}, + &models.TapdTaskChangelogItem{}, + &models.TapdTaskCommit{}, + &models.TapdTaskCustomFields{}, + &models.TapdTaskLabel{}, + &models.TapdWorkSpaceBug{}, + &models.TapdWorkSpaceStory{}, + &models.TapdWorkSpaceTask{}, + &models.TapdWorklog{}, + &models.TapdWorkspace{}, + &models.TapdWorkspaceIteration{}, + } +} + func (plugin Tapd) Description() string { return "To collect and enrich data from Tapd" } diff --git a/runner/directrun.go b/runner/directrun.go index b93dd643351..df88530dfaa 100644 --- a/runner/directrun.go +++ b/runner/directrun.go @@ -21,16 +21,17 @@ import ( "context" "errors" "fmt" - "github.com/apache/incubator-devlake/config" - "github.com/apache/incubator-devlake/logger" - "github.com/apache/incubator-devlake/migration" - "github.com/apache/incubator-devlake/plugins/core" - "github.com/spf13/cobra" "io" "os" "os/signal" "runtime" "syscall" + + "github.com/apache/incubator-devlake/config" + "github.com/apache/incubator-devlake/logger" + "github.com/apache/incubator-devlake/migration" + "github.com/apache/incubator-devlake/plugins/core" + "github.com/spf13/cobra" ) // RunCmd FIXME ... @@ -64,6 +65,7 @@ func DirectRun(cmd *cobra.Command, args []string, pluginTask core.PluginTask, op panic(err) } } + err = core.RegisterPlugin(cmd.Use, pluginTask.(core.PluginMeta)) if err != nil { panic(err) diff --git a/runner/loader.go b/runner/loader.go index 4952aa7b3d8..bcc6eb5bb9a 100644 --- a/runner/loader.go +++ b/runner/loader.go @@ -63,6 +63,7 @@ func LoadPlugins(pluginsDir string, config *viper.Viper, logger core.Logger, db if err != nil { return nil } + logger.Info(`plugin loaded %s`, pluginName) } return nil