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
|
||||
"Docker": true,
|
||||
"Util": true,
|
||||
"boot2dockerexec": true,
|
||||
"getBinDir": true,
|
||||
"getBoot2DockerIp": true,
|
||||
"getBoot2DockerState": true,
|
||||
"getBoot2DockerDiskUsage": true,
|
||||
|
@ -172,7 +172,6 @@
|
|||
"getBoot2DockerInfo": true,
|
||||
"boot2DockerVMExists": true,
|
||||
"eraseBoot2DockerVMFiles": true,
|
||||
"getHomePath": true,
|
||||
"initBoot2Docker": true,
|
||||
"isVirtualBoxInstalled": true,
|
||||
"upgradeBoot2Docker": true,
|
||||
|
@ -200,8 +199,6 @@
|
|||
"recoverApps": true,
|
||||
"restartApp": true,
|
||||
"deleteApp": true,
|
||||
"deleteFolder": true,
|
||||
"copyVolumes": true,
|
||||
"getAppLogs": true,
|
||||
"hasDockerfile": true,
|
||||
"createTarFile": true,
|
||||
|
@ -224,7 +221,6 @@
|
|||
"saveImageFolderSync": true,
|
||||
"rebuildImageSync": true,
|
||||
"saveImageFolder": true,
|
||||
"copyFolder": true,
|
||||
|
||||
// Forms
|
||||
"showFormErrors": true,
|
||||
|
|
|
@ -2,7 +2,7 @@ var exec = require('exec');
|
|||
var path = require('path');
|
||||
|
||||
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);
|
||||
});
|
||||
};
|
||||
|
@ -131,7 +131,7 @@ boot2DockerVMExists = 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) {
|
||||
callback(err);
|
||||
});
|
||||
|
@ -174,7 +174,7 @@ upgradeBoot2Docker = 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);
|
||||
callback(err);
|
||||
});
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
path = require('path');
|
||||
fs = require('fs');
|
|
@ -15,7 +15,7 @@ removeAppWatcher = function (id) {
|
|||
|
||||
addAppWatcher = function (app) {
|
||||
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 vmPath = 'ssh://docker@localhost:2022/' + vmDir;
|
||||
var watcher = chokidar.watch(appPath, {ignored: /.*\.DS_Store/});
|
||||
|
@ -30,7 +30,7 @@ addAppWatcher = function (app) {
|
|||
syncing = true;
|
||||
var errorPattern = /The\sfile\s(.*)\son\shost/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 = [
|
||||
cmd,
|
||||
vmPath,
|
||||
|
@ -46,7 +46,7 @@ addAppWatcher = function (app) {
|
|||
'Name\ {*.tmp,*.unison,*.swp,*.pyc,.DS_Store}',
|
||||
'-auto',
|
||||
'-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)) {
|
||||
|
@ -70,7 +70,7 @@ addAppWatcher = function (app) {
|
|||
if (err.indexOf('The archive file is missing on some hosts') !== -1) {
|
||||
var results = archiveErrorPattern.exec(err);
|
||||
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;
|
||||
exec(cmd, function () {});
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
for (var name in errors) {
|
||||
if (errors.hasOwnProperty(name)) {
|
||||
|
|
|
@ -25,8 +25,8 @@ isResolverSetup = function (callback) {
|
|||
};
|
||||
|
||||
setupResolver = function (callback) {
|
||||
var installFile = path.join(getBinDir(), 'install');
|
||||
var cocoaSudo = path.join(getBinDir(), 'cocoasudo');
|
||||
var installFile = path.join(Util.getBinDir(), 'install');
|
||||
var cocoaSudo = path.join(Util.getBinDir(), 'cocoasudo');
|
||||
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) {
|
||||
console.log(stdout);
|
||||
|
@ -41,7 +41,7 @@ setupResolver = 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);
|
||||
if (error) {
|
||||
console.log(error);
|
||||
|
@ -52,4 +52,3 @@ setupVirtualBox = function (callback) {
|
|||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ Template.dashboard_single_app.events({
|
|||
},
|
||||
'click .btn-terminal': function () {
|
||||
var app = this;
|
||||
var cmd = path.join(getBinDir(), 'boot2docker') + ' ssh -t "sudo docker-enter ' + app.docker.Id + '"';
|
||||
var terminalCmd = path.join(getBinDir(), 'terminal') + ' ' + cmd;
|
||||
var cmd = path.join(Util.getBinDir(), 'boot2docker') + ' ssh -t "sudo docker-enter ' + app.docker.Id + '"';
|
||||
var terminalCmd = path.join(Util.getBinDir(), 'terminal') + ' ' + cmd;
|
||||
var exec = require('child_process').exec;
|
||||
console.log(terminalCmd);
|
||||
exec(terminalCmd, function (err, stdout) {
|
||||
|
|
|
@ -126,7 +126,7 @@ Apps.after.insert(function (userId, app) {
|
|||
}
|
||||
});
|
||||
var image = Images.findOne(app.imageId);
|
||||
copyVolumes(image.path, app.name);
|
||||
Util.copyVolumes(image.path, app.name);
|
||||
app = Apps.findOne(appId);
|
||||
removeBindFolder(app.name, function (err) {
|
||||
if (err) {
|
||||
|
@ -144,7 +144,7 @@ Apps.after.remove(function (userId, app) {
|
|||
deleteApp(app, function (err) {
|
||||
if (err) { console.error(err); }
|
||||
var appPath = path.join(KITE_PATH, app.name);
|
||||
deleteFolder(appPath);
|
||||
Util.deleteFolder(appPath);
|
||||
removeBindFolder(app.name, function () {
|
||||
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'];
|
||||
};
|
||||
|
||||
getBinDir = function () {
|
||||
Util.getBinDir = function () {
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
return path.join(path.join(process.env.PWD, '..'), 'resources');
|
||||
} else {
|
||||
|
@ -10,13 +12,13 @@ getBinDir = function () {
|
|||
}
|
||||
};
|
||||
|
||||
deleteFolder = function (directory) {
|
||||
Util.deleteFolder = function (directory) {
|
||||
if (fs.existsSync(directory)) {
|
||||
fs.readdirSync(directory).forEach(function (file) {
|
||||
var curDirectory = directory + '/' + file;
|
||||
if (fs.lstatSync(curDirectory).isDirectory()) {
|
||||
// Recurse
|
||||
deleteFolder(curDirectory);
|
||||
Util.deleteFolder(curDirectory);
|
||||
} else {
|
||||
// Delete File
|
||||
try {
|
||||
|
@ -30,7 +32,7 @@ deleteFolder = function (directory) {
|
|||
}
|
||||
};
|
||||
|
||||
copyFolder = function (src, dest) {
|
||||
Util.copyFolder = function (src, dest) {
|
||||
var exists = fs.existsSync(src);
|
||||
var stats = exists && fs.statSync(src);
|
||||
var isDirectory = exists && stats.isDirectory();
|
||||
|
@ -41,7 +43,7 @@ copyFolder = function (src, dest) {
|
|||
console.error(e);
|
||||
}
|
||||
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 {
|
||||
try {
|
||||
|
@ -52,37 +54,11 @@ copyFolder = function (src, dest) {
|
|||
}
|
||||
};
|
||||
|
||||
getImageJSON = function (directory) {
|
||||
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) {
|
||||
Util.copyVolumes = function (directory, appName) {
|
||||
var KITE_VOLUMES_PATH = path.join(directory, 'volumes');
|
||||
if (fs.existsSync(KITE_VOLUMES_PATH)) {
|
||||
var destinationPath = path.join(KITE_PATH, appName);
|
||||
copyFolder(KITE_VOLUMES_PATH, destinationPath);
|
||||
Util.copyFolder(KITE_VOLUMES_PATH, destinationPath);
|
||||
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) {
|
||||
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);
|
||||
});
|
||||
};
|
||||
|
|
|
@ -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_IMAGES_PATH = path.join(KITE_PATH, '.images');
|
||||
|
||||
|
|
|
@ -306,7 +306,7 @@ resolveDefaultImages = function () {
|
|||
image.inspect(function (err) {
|
||||
if (err) {
|
||||
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) {
|
||||
innerCallback(err);
|
||||
return;
|
||||
|
@ -393,7 +393,7 @@ reloadDefaultContainers = function (callback) {
|
|||
return;
|
||||
}
|
||||
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) {
|
||||
callback(err);
|
||||
return;
|
||||
|
|
|
@ -13,7 +13,7 @@ getImageMetaData = function (directory) {
|
|||
};
|
||||
|
||||
rebuildImage = function (image, callback) {
|
||||
deleteFolder(image.path);
|
||||
Util.deleteFolder(image.path);
|
||||
var imageMetaData = getImageMetaData(image.originPath);
|
||||
if (imageMetaData.logo) {
|
||||
Images.update(image._id, {
|
||||
|
@ -141,7 +141,7 @@ Meteor.methods({
|
|||
console.log('here');
|
||||
try {
|
||||
deleteImageSync(image);
|
||||
deleteFolder(image.path);
|
||||
Util.deleteFolder(image.path);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
} finally {
|
||||
|
|
Loading…
Reference in New Issue