mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Check the global git config to ensure its setup
This commit is contained in:
parent
64607df929
commit
7a89e3cf33
@ -67,6 +67,22 @@ RED.projects = (function() {
|
|||||||
var gitEmailInput;
|
var gitEmailInput;
|
||||||
return {
|
return {
|
||||||
content: function(options) {
|
content: function(options) {
|
||||||
|
var isGlobalConfig = false;
|
||||||
|
var existingGitSettings = RED.settings.get('git');
|
||||||
|
if (existingGitSettings && existingGitSettings.user) {
|
||||||
|
existingGitSettings = existingGitSettings.user;
|
||||||
|
} else if (RED.settings.git && RED.settings.git.globalUser) {
|
||||||
|
isGlobalConfig = true;
|
||||||
|
existingGitSettings = RED.settings.git.globalUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
var validateForm = function() {
|
||||||
|
var name = gitUsernameInput.val().trim();
|
||||||
|
var email = gitEmailInput.val().trim();
|
||||||
|
var valid = name.length > 0 && email.length > 0;
|
||||||
|
$("#projects-dialog-git-config").prop('disabled',!valid).toggleClass('disabled ui-button-disabled ui-state-disabled',!valid);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
var container = $('<div class="projects-dialog-screen-start"></div>');
|
var container = $('<div class="projects-dialog-screen-start"></div>');
|
||||||
migrateProjectHeader.appendTo(container);
|
migrateProjectHeader.appendTo(container);
|
||||||
@ -75,23 +91,26 @@ RED.projects = (function() {
|
|||||||
$('<p>').text("Setup your version control client").appendTo(body);
|
$('<p>').text("Setup your version control client").appendTo(body);
|
||||||
$('<p>').text("Node-RED uses the open source tool Git for version control. It tracks changes to your project files and lets you push them to remote repositories.").appendTo(body);
|
$('<p>').text("Node-RED uses the open source tool Git for version control. It tracks changes to your project files and lets you push them to remote repositories.").appendTo(body);
|
||||||
$('<p>').text("When you commit a set of changes, Git records who made the changes with a username and email address. The Username can be anything you want - it does not need to be your real name.").appendTo(body);
|
$('<p>').text("When you commit a set of changes, Git records who made the changes with a username and email address. The Username can be anything you want - it does not need to be your real name.").appendTo(body);
|
||||||
$('<p>').text("If your Git client is already configured, you can skip this step.").appendTo(body);
|
|
||||||
|
|
||||||
var currentGitSettings = RED.settings.get('git') || {};
|
|
||||||
currentGitSettings.user = currentGitSettings.user || {};
|
|
||||||
|
|
||||||
|
if (isGlobalConfig) {
|
||||||
|
$('<p>').text("Your Git client is already configured with the details below.").appendTo(body);
|
||||||
|
}
|
||||||
|
$('<p>').text("You can change these settings later under the 'Git config' tab of the settings dialog.").appendTo(body);
|
||||||
|
|
||||||
var row = $('<div class="form-row"></div>').appendTo(body);
|
var row = $('<div class="form-row"></div>').appendTo(body);
|
||||||
$('<label for="">Username</label>').appendTo(row);
|
$('<label for="">Username</label>').appendTo(row);
|
||||||
gitUsernameInput = $('<input type="text">').val(currentGitSettings.user.name||"").appendTo(row);
|
gitUsernameInput = $('<input type="text">').val(existingGitSettings.name||"").appendTo(row);
|
||||||
// $('<div style="position:relative;"></div>').text("This does not need to be your real name").appendTo(row);
|
// $('<div style="position:relative;"></div>').text("This does not need to be your real name").appendTo(row);
|
||||||
|
gitUsernameInput.on("change keyup paste",validateForm);
|
||||||
|
|
||||||
row = $('<div class="form-row"></div>').appendTo(body);
|
row = $('<div class="form-row"></div>').appendTo(body);
|
||||||
$('<label for="">Email</label>').appendTo(row);
|
$('<label for="">Email</label>').appendTo(row);
|
||||||
gitEmailInput = $('<input type="text">').val(currentGitSettings.user.email||"").appendTo(row);
|
gitEmailInput = $('<input type="text">').val(existingGitSettings.email||"").appendTo(row);
|
||||||
|
gitEmailInput.on("change keyup paste",validateForm);
|
||||||
// $('<div style="position:relative;"></div>').text("Something something email").appendTo(row);
|
// $('<div style="position:relative;"></div>').text("Something something email").appendTo(row);
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
gitUsernameInput.focus();
|
gitUsernameInput.focus();
|
||||||
|
validateForm();
|
||||||
},50);
|
},50);
|
||||||
return container;
|
return container;
|
||||||
},
|
},
|
||||||
@ -104,6 +123,7 @@ RED.projects = (function() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
id: "projects-dialog-git-config",
|
||||||
text: "Next", // TODO: nls
|
text: "Next", // TODO: nls
|
||||||
class: "primary",
|
class: "primary",
|
||||||
click: function() {
|
click: function() {
|
||||||
|
@ -59,6 +59,9 @@ module.exports = {
|
|||||||
flow: runtime.storage.projects.getFlowFilename(),
|
flow: runtime.storage.projects.getFlowFilename(),
|
||||||
credentials: runtime.storage.projects.getCredentialsFilename()
|
credentials: runtime.storage.projects.getCredentialsFilename()
|
||||||
}
|
}
|
||||||
|
safeSettings.git = {
|
||||||
|
globalUser: runtime.storage.projects.getGlobalGitUser()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
safeSettings.flowEncryptionType = runtime.nodes.getCredentialKeyType();
|
safeSettings.flowEncryptionType = runtime.nodes.getCredentialKeyType();
|
||||||
|
@ -369,11 +369,27 @@ module.exports = {
|
|||||||
init: function(_settings,_runtime) {
|
init: function(_settings,_runtime) {
|
||||||
log = _runtime.log
|
log = _runtime.log
|
||||||
return new Promise(function(resolve,reject) {
|
return new Promise(function(resolve,reject) {
|
||||||
runGitCommand(["--version"]).then(function(output) {
|
Promise.all([
|
||||||
var m = / (\d\S+)/.exec(output);
|
runGitCommand(["--version"]),
|
||||||
|
runGitCommand(["config","--global","user.name"]).catch(err=>""),
|
||||||
|
runGitCommand(["config","--global","user.email"]).catch(err=>"")
|
||||||
|
]).then(function(output) {
|
||||||
|
var m = / (\d\S+)/.exec(output[0]);
|
||||||
gitVersion = m[1];
|
gitVersion = m[1];
|
||||||
resolve(gitVersion);
|
var globalUserName = output[1].trim();
|
||||||
|
var globalUserEmail = output[2].trim();
|
||||||
|
var result = {
|
||||||
|
version: gitVersion
|
||||||
|
};
|
||||||
|
if (globalUserName && globalUserEmail) {
|
||||||
|
result.user = {
|
||||||
|
name: globalUserName,
|
||||||
|
email: globalUserEmail
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resolve(result);
|
||||||
}).catch(function(err) {
|
}).catch(function(err) {
|
||||||
|
console.log(err);
|
||||||
resolve(null);
|
resolve(null);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -37,6 +37,8 @@ var projectLogMessages = [];
|
|||||||
var projectsDir;
|
var projectsDir;
|
||||||
var activeProject
|
var activeProject
|
||||||
|
|
||||||
|
var globalGitUser = false;
|
||||||
|
|
||||||
function init(_settings, _runtime) {
|
function init(_settings, _runtime) {
|
||||||
settings = _settings;
|
settings = _settings;
|
||||||
runtime = _runtime;
|
runtime = _runtime;
|
||||||
@ -89,11 +91,12 @@ function init(_settings, _runtime) {
|
|||||||
|
|
||||||
if (projectsEnabled) {
|
if (projectsEnabled) {
|
||||||
return sshTools.init(settings,runtime).then(function() {
|
return sshTools.init(settings,runtime).then(function() {
|
||||||
gitTools.init(_settings, _runtime).then(function(gitVersion) {
|
gitTools.init(_settings, _runtime).then(function(gitConfig) {
|
||||||
if (!gitVersion) {
|
if (!gitConfig) {
|
||||||
projectLogMessages.push(log._("storage.localfilesystem.projects.git-not-found"))
|
projectLogMessages.push(log._("storage.localfilesystem.projects.git-not-found"))
|
||||||
projectsEnabled = false;
|
projectsEnabled = false;
|
||||||
} else {
|
} else {
|
||||||
|
globalGitUser = gitConfig.user;
|
||||||
Projects.init(settings,runtime);
|
Projects.init(settings,runtime);
|
||||||
sshTools.init(settings,runtime);
|
sshTools.init(settings,runtime);
|
||||||
projectsDir = fspath.join(settings.userDir,"projects");
|
projectsDir = fspath.join(settings.userDir,"projects");
|
||||||
@ -553,7 +556,7 @@ module.exports = {
|
|||||||
updateRemote: updateRemote,
|
updateRemote: updateRemote,
|
||||||
getFlowFilename: getFlowFilename,
|
getFlowFilename: getFlowFilename,
|
||||||
getCredentialsFilename: getCredentialsFilename,
|
getCredentialsFilename: getCredentialsFilename,
|
||||||
|
getGlobalGitUser: function() { return globalGitUser },
|
||||||
getFlows: getFlows,
|
getFlows: getFlows,
|
||||||
saveFlows: saveFlows,
|
saveFlows: saveFlows,
|
||||||
getCredentials: getCredentials,
|
getCredentials: getCredentials,
|
||||||
|
Loading…
Reference in New Issue
Block a user