Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
open-source
GitlabRSSSync
Commits
ebf265fd
Commit
ebf265fd
authored
Mar 28, 2019
by
Adam Harrison-Fuller
Browse files
Tidyup
Signed-off-by:
Adam Harrison-Fuller
<
adam@adamhf.io
>
parent
0209b248
Changes
2
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
ebf265fd
...
...
@@ -8,7 +8,7 @@ A SQLite DB is used to store the GUID/FeedID combination which is checked when a
In addition we also add the RSS feed's item GUID at the bottom of the issue description. Before synchronising an RSS item
we run an issue search in the associated project, if we dont find the GUID in any issue we assume its not already been created.
This helps to guard against scenarios where you lose the SQLite DB and dont want RSS items reduplicating into Gitlab.
If found in Gitlab it is marked as syncronised in the local database as well as printing an link to the existing issue(s) to stdout.
If found in Gitlab it is marked as sync
h
ronised in the local database as well as printing an link to the existing issue(s) to stdout.
## Limiting what is initially synced.
Each feed entry in the config file can have an "added_since" property set. This is used to only sync RSS items that have a
...
...
main.go
View file @
ebf265fd
...
...
@@ -49,10 +49,10 @@ type EnvValues struct {
GitlabAPIKey
string
}
func
hasExistingGitlabIssue
(
guid
string
,
projectID
int
,
gitlabClient
*
gitlab
.
Client
)
bool
{
func
hasExistingGitlabIssue
(
guid
string
,
projectID
int
,
gitlabClient
*
gitlab
.
Client
)
bool
{
searchOptions
:=
&
gitlab
.
SearchOptions
{
Page
:
1
,
PerPage
:
10
,
Page
:
1
,
PerPage
:
10
,
}
issues
,
_
,
err
:=
gitlabClient
.
Search
.
IssuesByProject
(
projectID
,
guid
,
searchOptions
)
if
err
!=
nil
{
...
...
@@ -110,7 +110,8 @@ func (feed Feed) checkFeed(db *gorm.DB, gitlabClient *gitlab.Client) {
}
if
time
.
Before
(
feed
.
AddedSince
)
{
fmt
.
Printf
(
"Ignoring %s as its date is < the specified AddedSince (Item: %s vs AddedSince: %s)
\n
"
,
item
.
Title
,
time
,
feed
.
AddedSince
)
fmt
.
Printf
(
"Ignoring %s as its date is < the specified AddedSince (Item: %s vs AddedSince: %s)
\n
"
,
item
.
Title
,
time
,
feed
.
AddedSince
)
continue
}
...
...
@@ -136,15 +137,16 @@ func (feed Feed) checkFeed(db *gorm.DB, gitlabClient *gitlab.Client) {
CreatedAt
:
time
,
}
//fmt.Println(issueOptions)
_
,
_
,
err
:=
gitlabClient
.
Issues
.
CreateIssue
(
feed
.
GitlabProjectID
,
issueOptions
)
if
err
!=
nil
{
if
_
,
_
,
err
:=
gitlabClient
.
Issues
.
CreateIssue
(
feed
.
GitlabProjectID
,
issueOptions
);
err
!=
nil
{
fmt
.
Printf
(
"Unable to create Gitlab issue for %s
\n
%s
\n
"
,
feed
.
Name
,
err
)
}
else
{
fmt
.
Printf
(
"Created Gitlab Issue '%s' in project: %d'
\n
"
,
item
.
Title
,
feed
.
GitlabProjectID
)
db
.
Create
(
&
SyncedItems
{
UUID
:
item
.
GUID
,
Feed
:
feed
.
ID
})
issuesCreatedCounter
.
Inc
()
continue
}
if
err
:=
db
.
Create
(
&
SyncedItems
{
UUID
:
item
.
GUID
,
Feed
:
feed
.
ID
})
.
Error
;
err
!=
nil
{
fmt
.
Printf
(
"Unable to persist in %s DB: %s
\n
"
,
item
.
Title
,
err
)
continue
}
issuesCreatedCounter
.
Inc
()
fmt
.
Printf
(
"Created Gitlab Issue '%s' in project: %d'
\n
"
,
item
.
Title
,
feed
.
GitlabProjectID
)
}
}
...
...
@@ -156,8 +158,7 @@ func readConfig(path string) *Config {
log
.
Fatalln
(
err
)
}
err
=
yaml
.
Unmarshal
(
data
,
config
)
if
err
!=
nil
{
if
err
=
yaml
.
Unmarshal
(
data
,
config
);
err
!=
nil
{
fmt
.
Printf
(
"Unable to parse config YAML
\n
%s
\n
"
,
err
)
panic
(
err
)
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment