mirror of https://github.com/docker/docs.git
Refactored utilities.
This commit is contained in:
parent
eb46a9dee4
commit
b3cc727dbb
|
@ -163,8 +163,8 @@
|
||||||
|
|
||||||
// Server and Client
|
// Server and Client
|
||||||
"Docker": true,
|
"Docker": true,
|
||||||
|
"Util": true,
|
||||||
"boot2dockerexec": true,
|
"boot2dockerexec": true,
|
||||||
"getBinDir": true,
|
|
||||||
"getBoot2DockerIp": true,
|
"getBoot2DockerIp": true,
|
||||||
"getBoot2DockerState": true,
|
"getBoot2DockerState": true,
|
||||||
"getBoot2DockerDiskUsage": true,
|
"getBoot2DockerDiskUsage": true,
|
||||||
|
@ -172,7 +172,6 @@
|
||||||
"getBoot2DockerInfo": true,
|
"getBoot2DockerInfo": true,
|
||||||
"boot2DockerVMExists": true,
|
"boot2DockerVMExists": true,
|
||||||
"eraseBoot2DockerVMFiles": true,
|
"eraseBoot2DockerVMFiles": true,
|
||||||
"getHomePath": true,
|
|
||||||
"initBoot2Docker": true,
|
"initBoot2Docker": true,
|
||||||
"isVirtualBoxInstalled": true,
|
"isVirtualBoxInstalled": true,
|
||||||
"upgradeBoot2Docker": true,
|
"upgradeBoot2Docker": true,
|
||||||
|
@ -200,8 +199,6 @@
|
||||||
"recoverApps": true,
|
"recoverApps": true,
|
||||||
"restartApp": true,
|
"restartApp": true,
|
||||||
"deleteApp": true,
|
"deleteApp": true,
|
||||||
"deleteFolder": true,
|
|
||||||
"copyVolumes": true,
|
|
||||||
"getAppLogs": true,
|
"getAppLogs": true,
|
||||||
"hasDockerfile": true,
|
"hasDockerfile": true,
|
||||||
"createTarFile": true,
|
"createTarFile": true,
|
||||||
|
@ -224,7 +221,6 @@
|
||||||
"saveImageFolderSync": true,
|
"saveImageFolderSync": true,
|
||||||
"rebuildImageSync": true,
|
"rebuildImageSync": true,
|
||||||
"saveImageFolder": true,
|
"saveImageFolder": true,
|
||||||
"copyFolder": true,
|
|
||||||
|
|
||||||
// Forms
|
// Forms
|
||||||
"showFormErrors": true,
|
"showFormErrors": true,
|
||||||
|
|
|
@ -2,7 +2,7 @@ var exec = require('exec');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
|
||||||
boot2dockerexec = function (command, callback) {
|
boot2dockerexec = function (command, callback) {
|
||||||
exec(path.join(getBinDir(), 'boot2docker') + ' ' + command, function(err, stdout) {
|
exec(path.join(Util.getBinDir(), 'boot2docker') + ' ' + command, function(err, stdout) {
|
||||||
callback(err, stdout);
|
callback(err, stdout);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -131,7 +131,7 @@ boot2DockerVMExists = function (callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
eraseBoot2DockerVMFiles = function (callback) {
|
eraseBoot2DockerVMFiles = function (callback) {
|
||||||
var VMFileLocation = path.join(getHomePath(), 'VirtualBox\\ VMs/boot2docker-vm');
|
var VMFileLocation = path.join(Util.getHomePath(), 'VirtualBox\\ VMs/boot2docker-vm');
|
||||||
exec('rm -rf ' + VMFileLocation, function (err) {
|
exec('rm -rf ' + VMFileLocation, function (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
|
@ -174,7 +174,7 @@ upgradeBoot2Docker = function (callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
installBoot2DockerAddons = function (callback) {
|
installBoot2DockerAddons = function (callback) {
|
||||||
exec('/bin/cat ' + path.join(getBinDir(), 'kite-binaries.tar.gz') + ' | ' + path.join(getBinDir(), 'boot2docker') + ' ssh "tar zx -C /usr/local/bin"', function (err, stdout) {
|
exec('/bin/cat ' + path.join(Util.getBinDir(), 'kite-binaries.tar.gz') + ' | ' + path.join(Util.getBinDir(), 'boot2docker') + ' ssh "tar zx -C /usr/local/bin"', function (err, stdout) {
|
||||||
console.log(stdout);
|
console.log(stdout);
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
path = require('path');
|
||||||
|
fs = require('fs');
|
|
@ -15,7 +15,7 @@ removeAppWatcher = function (id) {
|
||||||
|
|
||||||
addAppWatcher = function (app) {
|
addAppWatcher = function (app) {
|
||||||
removeAppWatcher(app._id);
|
removeAppWatcher(app._id);
|
||||||
var appPath = path.join(path.join(getHomePath(), 'Kitematic'), app.name);
|
var appPath = path.join(path.join(Util.getHomePath(), 'Kitematic'), app.name);
|
||||||
var vmDir = path.join('/var/lib/docker/binds', app.name);
|
var vmDir = path.join('/var/lib/docker/binds', app.name);
|
||||||
var vmPath = 'ssh://docker@localhost:2022/' + vmDir;
|
var vmPath = 'ssh://docker@localhost:2022/' + vmDir;
|
||||||
var watcher = chokidar.watch(appPath, {ignored: /.*\.DS_Store/});
|
var watcher = chokidar.watch(appPath, {ignored: /.*\.DS_Store/});
|
||||||
|
@ -30,7 +30,7 @@ addAppWatcher = function (app) {
|
||||||
syncing = true;
|
syncing = true;
|
||||||
var errorPattern = /The\sfile\s(.*)\son\shost/g;
|
var errorPattern = /The\sfile\s(.*)\son\shost/g;
|
||||||
var archiveErrorPattern = /Archive\s(.*)\son\shost\s.*\sshould\sbe\sDELETED/g;
|
var archiveErrorPattern = /Archive\s(.*)\son\shost\s.*\sshould\sbe\sDELETED/g;
|
||||||
var cmd = path.join(getBinDir(), 'unison');
|
var cmd = path.join(Util.getBinDir(), 'unison');
|
||||||
var args = [
|
var args = [
|
||||||
cmd,
|
cmd,
|
||||||
vmPath,
|
vmPath,
|
||||||
|
@ -46,7 +46,7 @@ addAppWatcher = function (app) {
|
||||||
'Name\ {*.tmp,*.unison,*.swp,*.pyc,.DS_Store}',
|
'Name\ {*.tmp,*.unison,*.swp,*.pyc,.DS_Store}',
|
||||||
'-auto',
|
'-auto',
|
||||||
'-sshargs',
|
'-sshargs',
|
||||||
'-o\ UserKnownHostsFile=/dev/null\ -o\ StrictHostKeyChecking=no\ -o PreferredAuthentications=publickey\ -i\ ' + path.join(getHomePath(), '.ssh/id_boot2docker')
|
'-o\ UserKnownHostsFile=/dev/null\ -o\ StrictHostKeyChecking=no\ -o PreferredAuthentications=publickey\ -i\ ' + path.join(Util.getHomePath(), '.ssh/id_boot2docker')
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!fs.existsSync(appPath)) {
|
if (!fs.existsSync(appPath)) {
|
||||||
|
@ -70,7 +70,7 @@ addAppWatcher = function (app) {
|
||||||
if (err.indexOf('The archive file is missing on some hosts') !== -1) {
|
if (err.indexOf('The archive file is missing on some hosts') !== -1) {
|
||||||
var results = archiveErrorPattern.exec(err);
|
var results = archiveErrorPattern.exec(err);
|
||||||
var location = results[1].replace(' ', '\\ ');
|
var location = results[1].replace(' ', '\\ ');
|
||||||
var fullLocation = path.join(getHomePath(), 'Library/Application\\ Support/Unison', location);
|
var fullLocation = path.join(Util.getHomePath(), 'Library/Application\\ Support/Unison', location);
|
||||||
var cmd = '/bin/rm -rf ' + fullLocation;
|
var cmd = '/bin/rm -rf ' + fullLocation;
|
||||||
exec(cmd, function () {});
|
exec(cmd, function () {});
|
||||||
}
|
}
|
||||||
|
@ -118,4 +118,4 @@ resolveWatchers = function (callback) {
|
||||||
});
|
});
|
||||||
|
|
||||||
callback();
|
callback();
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,17 +1,3 @@
|
||||||
var path = require('path');
|
|
||||||
|
|
||||||
getBinDir = function () {
|
|
||||||
if (process.env.NODE_ENV === 'development') {
|
|
||||||
return path.join(path.join(process.env.PWD, '..'), 'resources');
|
|
||||||
} else {
|
|
||||||
return path.join(process.cwd(), 'resources');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
getHomePath = function () {
|
|
||||||
return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
|
|
||||||
};
|
|
||||||
|
|
||||||
showFormErrors = function ($form, errors) {
|
showFormErrors = function ($form, errors) {
|
||||||
for (var name in errors) {
|
for (var name in errors) {
|
||||||
if (errors.hasOwnProperty(name)) {
|
if (errors.hasOwnProperty(name)) {
|
||||||
|
@ -31,7 +17,7 @@ clearFormErrors = function ($form) {
|
||||||
$form.find('.form-group.has-error .help-block.error').remove();
|
$form.find('.form-group.has-error .help-block.error').remove();
|
||||||
$form.find('.form-group.has-error').removeClass('has-error');
|
$form.find('.form-group.has-error').removeClass('has-error');
|
||||||
};
|
};
|
||||||
|
|
||||||
resetForm = function ($form) {
|
resetForm = function ($form) {
|
||||||
$form.find('input').val('');
|
$form.find('input').val('');
|
||||||
};
|
};
|
||||||
|
@ -41,4 +27,4 @@ trackLink = function (trackLabel) {
|
||||||
console.log(trackLabel);
|
console.log(trackLabel);
|
||||||
ga('send', 'event', 'link', 'click', trackLabel);
|
ga('send', 'event', 'link', 'click', trackLabel);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,8 +25,8 @@ isResolverSetup = function (callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
setupResolver = function (callback) {
|
setupResolver = function (callback) {
|
||||||
var installFile = path.join(getBinDir(), 'install');
|
var installFile = path.join(Util.getBinDir(), 'install');
|
||||||
var cocoaSudo = path.join(getBinDir(), 'cocoasudo');
|
var cocoaSudo = path.join(Util.getBinDir(), 'cocoasudo');
|
||||||
var execCommand = cocoaSudo + ' --prompt="Kitematic Setup wants to make changes. Type your password to allow this." ' + installFile;
|
var execCommand = cocoaSudo + ' --prompt="Kitematic Setup wants to make changes. Type your password to allow this." ' + installFile;
|
||||||
child_process.exec(execCommand, function (error, stdout, stderr) {
|
child_process.exec(execCommand, function (error, stdout, stderr) {
|
||||||
console.log(stdout);
|
console.log(stdout);
|
||||||
|
@ -41,7 +41,7 @@ setupResolver = function (callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
setupVirtualBox = function (callback) {
|
setupVirtualBox = function (callback) {
|
||||||
child_process.exec('open -W ' + path.join(getBinDir(), 'virtualbox-4.3.12.pkg'), function (error, stdout, stderr) {
|
child_process.exec('open -W ' + path.join(Util.getBinDir(), 'virtualbox-4.3.12.pkg'), function (error, stdout, stderr) {
|
||||||
console.log(stdout);
|
console.log(stdout);
|
||||||
if (error) {
|
if (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
@ -52,4 +52,3 @@ setupVirtualBox = function (callback) {
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ Template.dashboard_single_app.events({
|
||||||
},
|
},
|
||||||
'click .btn-terminal': function () {
|
'click .btn-terminal': function () {
|
||||||
var app = this;
|
var app = this;
|
||||||
var cmd = path.join(getBinDir(), 'boot2docker') + ' ssh -t "sudo docker-enter ' + app.docker.Id + '"';
|
var cmd = path.join(Util.getBinDir(), 'boot2docker') + ' ssh -t "sudo docker-enter ' + app.docker.Id + '"';
|
||||||
var terminalCmd = path.join(getBinDir(), 'terminal') + ' ' + cmd;
|
var terminalCmd = path.join(Util.getBinDir(), 'terminal') + ' ' + cmd;
|
||||||
var exec = require('child_process').exec;
|
var exec = require('child_process').exec;
|
||||||
console.log(terminalCmd);
|
console.log(terminalCmd);
|
||||||
exec(terminalCmd, function (err, stdout) {
|
exec(terminalCmd, function (err, stdout) {
|
||||||
|
|
|
@ -126,7 +126,7 @@ Apps.after.insert(function (userId, app) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var image = Images.findOne(app.imageId);
|
var image = Images.findOne(app.imageId);
|
||||||
copyVolumes(image.path, app.name);
|
Util.copyVolumes(image.path, app.name);
|
||||||
app = Apps.findOne(appId);
|
app = Apps.findOne(appId);
|
||||||
removeBindFolder(app.name, function (err) {
|
removeBindFolder(app.name, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -144,7 +144,7 @@ Apps.after.remove(function (userId, app) {
|
||||||
deleteApp(app, function (err) {
|
deleteApp(app, function (err) {
|
||||||
if (err) { console.error(err); }
|
if (err) { console.error(err); }
|
||||||
var appPath = path.join(KITE_PATH, app.name);
|
var appPath = path.join(KITE_PATH, app.name);
|
||||||
deleteFolder(appPath);
|
Util.deleteFolder(appPath);
|
||||||
removeBindFolder(app.name, function () {
|
removeBindFolder(app.name, function () {
|
||||||
console.log('Deleted Kite ' + app.name + ' directory.');
|
console.log('Deleted Kite ' + app.name + ' directory.');
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
getHomePath = function () {
|
Util = {};
|
||||||
|
|
||||||
|
Util.getHomePath = function () {
|
||||||
return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
|
return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
|
||||||
};
|
};
|
||||||
|
|
||||||
getBinDir = function () {
|
Util.getBinDir = function () {
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
return path.join(path.join(process.env.PWD, '..'), 'resources');
|
return path.join(path.join(process.env.PWD, '..'), 'resources');
|
||||||
} else {
|
} else {
|
||||||
|
@ -10,13 +12,13 @@ getBinDir = function () {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
deleteFolder = function (directory) {
|
Util.deleteFolder = function (directory) {
|
||||||
if (fs.existsSync(directory)) {
|
if (fs.existsSync(directory)) {
|
||||||
fs.readdirSync(directory).forEach(function (file) {
|
fs.readdirSync(directory).forEach(function (file) {
|
||||||
var curDirectory = directory + '/' + file;
|
var curDirectory = directory + '/' + file;
|
||||||
if (fs.lstatSync(curDirectory).isDirectory()) {
|
if (fs.lstatSync(curDirectory).isDirectory()) {
|
||||||
// Recurse
|
// Recurse
|
||||||
deleteFolder(curDirectory);
|
Util.deleteFolder(curDirectory);
|
||||||
} else {
|
} else {
|
||||||
// Delete File
|
// Delete File
|
||||||
try {
|
try {
|
||||||
|
@ -30,7 +32,7 @@ deleteFolder = function (directory) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
copyFolder = function (src, dest) {
|
Util.copyFolder = function (src, dest) {
|
||||||
var exists = fs.existsSync(src);
|
var exists = fs.existsSync(src);
|
||||||
var stats = exists && fs.statSync(src);
|
var stats = exists && fs.statSync(src);
|
||||||
var isDirectory = exists && stats.isDirectory();
|
var isDirectory = exists && stats.isDirectory();
|
||||||
|
@ -41,7 +43,7 @@ copyFolder = function (src, dest) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
fs.readdirSync(src).forEach(function (childItemName) {
|
fs.readdirSync(src).forEach(function (childItemName) {
|
||||||
copyFolder(path.join(src, childItemName), path.join(dest, childItemName));
|
Util.copyFolder(path.join(src, childItemName), path.join(dest, childItemName));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
|
@ -52,37 +54,11 @@ copyFolder = function (src, dest) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
getImageJSON = function (directory) {
|
Util.copyVolumes = function (directory, appName) {
|
||||||
var KITE_JSON_PATH = path.join(directory, 'image.json');
|
|
||||||
if (fs.existsSync(KITE_JSON_PATH)) {
|
|
||||||
var data = fs.readFileSync(KITE_JSON_PATH, 'utf8');
|
|
||||||
return JSON.parse(data);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
copyVolumes = function (directory, appName) {
|
|
||||||
var KITE_VOLUMES_PATH = path.join(directory, 'volumes');
|
var KITE_VOLUMES_PATH = path.join(directory, 'volumes');
|
||||||
if (fs.existsSync(KITE_VOLUMES_PATH)) {
|
if (fs.existsSync(KITE_VOLUMES_PATH)) {
|
||||||
var destinationPath = path.join(KITE_PATH, appName);
|
var destinationPath = path.join(KITE_PATH, appName);
|
||||||
copyFolder(KITE_VOLUMES_PATH, destinationPath);
|
Util.copyFolder(KITE_VOLUMES_PATH, destinationPath);
|
||||||
console.log('Copied volumes for: ' + appName);
|
console.log('Copied volumes for: ' + appName);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
saveImageFolder = function (directory, imageId, callback) {
|
|
||||||
var destinationPath = path.join(KITE_IMAGES_PATH, imageId);
|
|
||||||
if (!fs.existsSync(destinationPath)) {
|
|
||||||
fs.mkdirSync(destinationPath, function (err) {
|
|
||||||
if (err) { callback(err); return; }
|
|
||||||
});
|
|
||||||
copyFolder(directory, destinationPath);
|
|
||||||
console.log('Copied image folder for: ' + imageId);
|
|
||||||
callback(null);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
saveImageFolderSync = function (directory, imageId) {
|
|
||||||
return Meteor._wrapAsync(saveImageFolder)(directory, imageId);
|
|
||||||
};
|
|
|
@ -1,5 +1,5 @@
|
||||||
removeBindFolder = function (name, callback) {
|
removeBindFolder = function (name, callback) {
|
||||||
exec(path.join(getBinDir(), 'boot2docker') + ' ssh "sudo rm -rf /var/lib/docker/binds/' + name + '"', function(err, stdout) {
|
exec(path.join(Util.getBinDir(), 'boot2docker') + ' ssh "sudo rm -rf /var/lib/docker/binds/' + name + '"', function(err, stdout) {
|
||||||
callback(err, stdout);
|
callback(err, stdout);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
KITE_PATH = path.join(getHomePath(), 'Kitematic');
|
KITE_PATH = path.join(Util.getHomePath(), 'Kitematic');
|
||||||
KITE_TAR_PATH = path.join(KITE_PATH, '.tar');
|
KITE_TAR_PATH = path.join(KITE_PATH, '.tar');
|
||||||
KITE_IMAGES_PATH = path.join(KITE_PATH, '.images');
|
KITE_IMAGES_PATH = path.join(KITE_PATH, '.images');
|
||||||
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ resolveDefaultImages = function () {
|
||||||
image.inspect(function (err) {
|
image.inspect(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err.reason === 'no such image') {
|
if (err.reason === 'no such image') {
|
||||||
docker.loadImage(path.join(getBinDir(), 'base-images.tar.gz'), {}, function (err) {
|
docker.loadImage(path.join(Util.getBinDir(), 'base-images.tar.gz'), {}, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
innerCallback(err);
|
innerCallback(err);
|
||||||
return;
|
return;
|
||||||
|
@ -393,7 +393,7 @@ reloadDefaultContainers = function (callback) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log('Loading new Kitematic default images.');
|
console.log('Loading new Kitematic default images.');
|
||||||
docker.loadImage(path.join(getBinDir(), 'base-images.tar.gz'), {}, function (err) {
|
docker.loadImage(path.join(Util.getBinDir(), 'base-images.tar.gz'), {}, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -13,7 +13,7 @@ getImageMetaData = function (directory) {
|
||||||
};
|
};
|
||||||
|
|
||||||
rebuildImage = function (image, callback) {
|
rebuildImage = function (image, callback) {
|
||||||
deleteFolder(image.path);
|
Util.deleteFolder(image.path);
|
||||||
var imageMetaData = getImageMetaData(image.originPath);
|
var imageMetaData = getImageMetaData(image.originPath);
|
||||||
if (imageMetaData.logo) {
|
if (imageMetaData.logo) {
|
||||||
Images.update(image._id, {
|
Images.update(image._id, {
|
||||||
|
@ -141,7 +141,7 @@ Meteor.methods({
|
||||||
console.log('here');
|
console.log('here');
|
||||||
try {
|
try {
|
||||||
deleteImageSync(image);
|
deleteImageSync(image);
|
||||||
deleteFolder(image.path);
|
Util.deleteFolder(image.path);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
Loading…
Reference in New Issue