62 lines
2 KiB
JavaScript
62 lines
2 KiB
JavaScript
|
/**
|
||
|
* An element which displays a build error in a nice format.
|
||
|
*/
|
||
|
angular.module('quay').directive('buildLogError', function () {
|
||
|
var directiveDefinitionObject = {
|
||
|
priority: 0,
|
||
|
templateUrl: '/static/directives/build-log-error.html',
|
||
|
replace: false,
|
||
|
transclude: false,
|
||
|
restrict: 'C',
|
||
|
scope: {
|
||
|
'error': '=error',
|
||
|
'entries': '=entries'
|
||
|
},
|
||
|
controller: function($scope, $element, Config) {
|
||
|
$scope.isInternalError = function() {
|
||
|
var entry = $scope.entries[$scope.entries.length - 1];
|
||
|
return entry && entry.data && entry.data['internal_error'];
|
||
|
};
|
||
|
|
||
|
$scope.getLocalPullInfo = function() {
|
||
|
if ($scope.entries.__localpull !== undefined) {
|
||
|
return $scope.entries.__localpull;
|
||
|
}
|
||
|
|
||
|
var localInfo = {
|
||
|
'isLocal': false
|
||
|
};
|
||
|
|
||
|
// Find the 'pulling' phase entry, and then extra any metadata found under
|
||
|
// it.
|
||
|
for (var i = 0; i < $scope.entries.length; ++i) {
|
||
|
var entry = $scope.entries[i];
|
||
|
if (entry.type == 'phase' && entry.message == 'pulling') {
|
||
|
for (var j = 0; j < entry.logs.length(); ++j) {
|
||
|
var log = entry.logs.get(j);
|
||
|
if (log.data && log.data.phasestep == 'login') {
|
||
|
localInfo['login'] = log.data;
|
||
|
}
|
||
|
|
||
|
if (log.data && log.data.phasestep == 'pull') {
|
||
|
var repo_url = log.data['repo_url'];
|
||
|
var repo_and_tag = repo_url.substring(Config.SERVER_HOSTNAME.length + 1);
|
||
|
var tagIndex = repo_and_tag.lastIndexOf(':');
|
||
|
var repo = repo_and_tag.substring(0, tagIndex);
|
||
|
|
||
|
localInfo['repo_url'] = repo_url;
|
||
|
localInfo['repo'] = repo;
|
||
|
|
||
|
localInfo['isLocal'] = repo_url.indexOf(Config.SERVER_HOSTNAME + '/') == 0;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $scope.entries.__localpull = localInfo;
|
||
|
};
|
||
|
}
|
||
|
};
|
||
|
return directiveDefinitionObject;
|
||
|
});
|