var _ = require('underscore'); var $ = require('jquery'); var React = require('react/addons'); var Router = require('react-router'); var path = require('path'); var remote = require('remote'); var rimraf = require('rimraf'); var fs = require('fs'); var dialog = remote.require('dialog'); var ContainerStore = require('./ContainerStore'); var ContainerUtil = require('./ContainerUtil'); var containerNameSlugify = function (text) { text = text.replace(/^\s+|\s+$/g, ''); // Trim text = text.toLowerCase(); // Remove Accents var from = "àáäâèéëêìíïîòóöôùúüûñç·/,:;"; var to = "aaaaeeeeiiiioooouuuunc-----"; for (var i=0, l=from.length ; i { if (err) { console.log(err); } this.transitionTo('containerSettingsGeneral', {name: newName}); var oldPath = path.join(process.env.HOME, 'Kitematic', oldName); var newPath = path.join(process.env.HOME, 'Kitematic', newName); rimraf(newPath, () => { if (fs.existsSync(oldPath)) { fs.renameSync(oldPath, newPath); } var binds = _.pairs(this.props.container.Volumes).map(function (pair) { return pair[1] + ':' + pair[0]; }); var newBinds = binds.map(b => { return b.replace(path.join(process.env.HOME, 'Kitematic', oldName), path.join(process.env.HOME, 'Kitematic', newName)); }); ContainerStore.updateContainer(newName, {Binds: newBinds}, err => { rimraf(oldPath, () => {}); console.log(err); }); }); }); }, handleSaveEnvVar: function () { var $rows = $('.env-vars .keyval-row'); var envVarList = []; $rows.each(function () { var key = $(this).find('.key').val(); var val = $(this).find('.val').val(); if (!key.length || !val.length) { return; } envVarList.push(key + '=' + val); }); var self = this; ContainerStore.updateContainer(self.props.container.Name, { Env: envVarList }, function (err) { if (err) { console.error(err); } else { self.setState({ pendingEnv: {} }); $('#new-env-key').val(''); $('#new-env-val').val(''); } }); }, handleAddPendingEnvVar: function () { var newKey = $('#new-env-key').val(); var newVal = $('#new-env-val').val(); var newEnv = {}; newEnv[newKey] = newVal; this.setState({ pendingEnv: _.extend(this.state.pendingEnv, newEnv) }); $('#new-env-key').val(''); $('#new-env-val').val(''); }, handleRemoveEnvVar: function (key) { var newEnv = _.omit(this.state.env, key); this.setState({ env: newEnv }); }, handleRemovePendingEnvVar: function (key) { var newEnv = _.omit(this.state.pendingEnv, key); this.setState({ pendingEnv: newEnv }); }, handleDeleteContainer: function () { dialog.showMessageBox({ message: 'Are you sure you want to delete this container?', buttons: ['Delete', 'Cancel'] }, function (index) { var volumePath = path.join(process.env.HOME, 'Kitematic', this.props.container.Name); if (fs.existsSync(volumePath)) { rimraf(volumePath, function (err) { console.log(err); }); } if (index === 0) { ContainerStore.remove(this.props.container.Name, function (err) { console.error(err); }); } }.bind(this)); }, render: function () { if (!this.props.container) { return (
); } var willBeRenamedAs; var btnSaveName = ( Save ); if (this.state.slugName) { willBeRenamedAs = (

Will be renamed as: {this.state.slugName}

); btnSaveName = ( Save ); } else if (this.state.nameError) { willBeRenamedAs = (

{this.state.nameError}

); } var rename = (

Container Name

{willBeRenamedAs}
{btnSaveName}
); var self = this; var envVars = _.map(this.state.env, function (val, key) { return (
); }); var pendingEnvVars = _.map(this.state.pendingEnv, function (val, key) { return (
); }); return (
{rename}

Environment Variables

KEY
VALUE
{envVars} {pendingEnvVars}
Save

Delete Container

Delete Container
); } }); module.exports = ContainerSettingsGeneral;