102 lines
No EOL
4.2 KiB
JavaScript
102 lines
No EOL
4.2 KiB
JavaScript
var exec = require('child_process').exec,
|
|
fs = require ('fs'),
|
|
path = require('path'),
|
|
git_helper = require('./git_helper'),
|
|
fs_helper = require('./fs_helper'),
|
|
redis = require('redis'),
|
|
client = redis.createClient(),
|
|
request_helper = require('./request_helper'),
|
|
config = require('../config/config');
|
|
|
|
fs.exists || (fs.exists = path.exists);
|
|
|
|
exports.offline_health_check = function(socket) {
|
|
|
|
socket.emit('self-check-complete');
|
|
};
|
|
|
|
//TODO this is a terrible mess..clean this up, no reason to have these big blocks of callbacks...uffda.
|
|
exports.health_check = function(socket, profile) {
|
|
if (config.editor.offline) {
|
|
this.offline_health_check(socket);
|
|
return;
|
|
}
|
|
|
|
var project_repository = 'git@bitbucket.org:' + profile.username + '/my-pi-projects.git';
|
|
console.log(project_repository);
|
|
|
|
client.hgetall('editor:settings', function(err, settings) {
|
|
console.log("getting settings", settings);
|
|
socket.emit("self-check-settings", settings);
|
|
});
|
|
|
|
//check if the adafruit libraries exist, if not, clone them.
|
|
request_helper.post_ssh_key(profile, function(err, response) {
|
|
git_helper.clone_adafruit_libraries(config.adafruit.repository, config.adafruit.remote, function(cloned_libraries) {
|
|
socket.emit("self-check-message", "Cloning remote Adafruit repository");
|
|
//cloned_libraries is false if they already existed...if false, let's pull the latest version of the adafruit libraries
|
|
if (!cloned_libraries) {
|
|
git_helper.pull(config.adafruit.repository, "origin", "master", function() {
|
|
socket.emit("self-check-message", "Adafruit repository updated");
|
|
});
|
|
}
|
|
});
|
|
|
|
git_helper.set_config(function() {
|
|
request_helper.list_repositories(profile, function(err, list) {
|
|
var exists = list.some(function(repository) {
|
|
return (repository.name.toLowerCase() === config.defaults.repository.toLowerCase());
|
|
});
|
|
|
|
if (!exists) {
|
|
request_helper.create_repository(profile, config.defaults.repository, function(err, response) {
|
|
socket.emit("self-check-message", "Created my-pi-projects in Bitbucket");
|
|
|
|
git_helper.clone_repository(project_repository, function(err, response) {
|
|
socket.emit("self-check-message", "Cloned my-pi-projects on local system");
|
|
fs_helper.create_project_readme(function(err, file) {
|
|
socket.emit("self-check-message", "Added README.md in my-pi-projects");
|
|
if (err) console.log(err);
|
|
console.log(file);
|
|
|
|
git_helper.commit_push_and_save(file, function(err, response) {
|
|
socket.emit("self-check-message", "Pushed changes to my-pi-projects to Bitbucket");
|
|
socket.emit('self-check-complete');
|
|
});
|
|
});
|
|
});
|
|
});
|
|
} else {
|
|
//check if repository exists here
|
|
var my_repository = "my-pi-projects";
|
|
fs_helper.check_for_repository(my_repository, function(err, exists) {
|
|
socket.emit("self-check-message", "Validated my-pi-projects");
|
|
if (exists) {
|
|
git_helper.pull(my_repository, "origin", "master", function(err, status) {
|
|
socket.emit("self-check-message", "Updated my-pi-projects");
|
|
socket.emit('self-check-complete');
|
|
});
|
|
} else {
|
|
git_helper.clone_repository(project_repository, function(err, response) {
|
|
socket.emit("self-check-message", "Cloned my-pi-projects on local system");
|
|
fs_helper.create_project_readme(function(err, file) {
|
|
socket.emit("self-check-message", "Added README.md in my-pi-projects");
|
|
console.log(file);
|
|
if (err) console.log(err);
|
|
|
|
git_helper.commit_push_and_save(file, function(err, response) {
|
|
socket.emit("self-check-message", "Pushed changes to my-pi-projects to Bitbucket");
|
|
socket.emit('self-check-complete');
|
|
});
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
}); // end of list repositories
|
|
}); //end of git set config
|
|
}); //end of post ssh key
|
|
|
|
}; |