/
fixGithubLoginToId.js
74 lines (68 loc) · 2.1 KB
/
fixGithubLoginToId.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
// 把所有包的 owners 和 publisher 字段
// 替换为 { name: 'xx', id: 12 } 这样的对象
// 修复 https://github.com/spmjs/spmjs.io/issues/101
// ---
var async = require('async');
// load global config
var yaml = require('node-yaml-config');
var CONFIG = yaml.load('./config/base.yaml');
global.CONFIG = CONFIG;
var models = require('../models');
var Project = require('../models/project');
var Package = require('../models/package');
Project.getAll().forEach(function(projectName) {
console.log('Start fixing ' + projectName);
var project = new Project({
name: projectName
});
var tasks = [];
project.owners.forEach(function(ownerName, i) {
if (ownerName && typeof ownerName === 'string') {
tasks.push(function(callback) {
getObjByName(ownerName, function(obj) {
console.log(' project owner field fix to ' + JSON.stringify(obj));
project.owners[i] = obj;
callback(null, obj);
});
});
}
});
project.getVersions().forEach(function(version) {
var publisher = project.packages[version].publisher;
if (publisher && typeof publisher === 'string') {
tasks.push(function(callback) {
getObjByName(publisher, function(obj) {
console.log(' project publisher field fix to ' + JSON.stringify(obj));
project.packages[version].publisher = obj;
callback(null, obj);
});
});
}
});
async.parallel(tasks, function(err, results) {
project.save();
});
project.getVersions().forEach(function(version) {
var package = new Package({
name: projectName,
version: version
});
if (package.publisher && typeof package.publisher === 'string') {
getObjByName(package.publisher, function(obj) {
console.log(' package publisher field fix to ' + JSON.stringify(obj));
package.publisher = obj;
package.save();
});
}
});
});
function getObjByName(name, callback) {
models.Account.getByName(name, function(user) {
if (user) {
callback({
name: user.login,
id: user.id.toString()
});
}
});
}