-
Notifications
You must be signed in to change notification settings - Fork 3
/
cli.js
76 lines (61 loc) · 1.72 KB
/
cli.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env node
var meow = require('meow');
var fetchMeetupEventData = require('./meetup-api');
var googleCalAuth = require('./google-calendar-auth');
var calID;
var googleConnect;
var meetupApiKey;
var clientSecret;
var cli = meow(`
Usage
$ node meetup-calendar-sync.js
Options
--meetupApiKey meetup Api url of your account
--calID google calendar ID (sinnerschrader.com_un89alcfa2f0orh9bmnhpdosic@group.calendar.google.com)
--secret google API client Secret json
Examples
$ foo unicorns --rainbow
unicorns
`);
function fetchMeetupEvent(meetupApiKey){
return fetchMeetupEventData.fetchMeetups(meetupApiKey)
.then(function(meetupEvents){
return meetupEvents;
});
}
function compareEvents(meetupEvent, calEvents) {
// Check which event already exist and which one not.
// unique identifier is URL in description
return meetupEvent.filter(i => !calEvents.find(e => e.description.match(/\bhttps?:\/\/\S+/gi) == i.description));
}
function main(opts) {
calID = opts.calID;
meetupApiKey = opts.meetupApiKey;
googleConnect = googleCalAuth.connect(calID, opts.secret);
return googleConnect;
}
main(cli.flags)
.then(function(googleConnect){
return fetchMeetupEvent(meetupApiKey).then(function(meetup){
if(googleConnect.length > 0){
return compareEvents(meetup, googleConnect);
}
else {
meetup.forEach(event => googleCalAuth.insertEvent(event));
return 0;
}
});
}).then(function(existNot){
if (!Array.isArray(existNot)) {
return;
}
if(existNot.length === 0){
console.log('Everything is up to date');
}
else {
existNot.forEach(event => googleCalAuth.insertEvent(event));
}
})
.catch(function(err){
console.log('Ups - something went wrong ', err);
});