release version 1.12.0
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
@@ -291,23 +291,9 @@ var EntaxyCICD;
|
||||
if (objectsToAdd.length > 0) {
|
||||
let sublist = objectsToAdd.map(object => {
|
||||
addRelation(relations, object.fullId, objectsIds[i]);
|
||||
|
||||
return {
|
||||
name: object.fullId,
|
||||
fullId: object.fullId,
|
||||
displayName: object.displayName,
|
||||
additionalInfo: object.type,
|
||||
parent: objectsIds[i],
|
||||
disableRowExpansion: true
|
||||
};
|
||||
});
|
||||
objectsTree.push({
|
||||
name: objectsIds[i],
|
||||
displayName: objectsMap[objectsIds[i]].displayName,
|
||||
additionalInfo: objectsMap[objectsIds[i]].type,
|
||||
isExpanded: true,
|
||||
sublist: sublist.sort(Entaxy.compareBy('displayName'))
|
||||
return getSublistItem(object, objectsIds[i]);
|
||||
});
|
||||
objectsTree.push(getObjectTreeItem(objectsIds[i], objectsMap, sublist, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -440,30 +426,119 @@ var EntaxyCICD;
|
||||
}
|
||||
|
||||
ctrl.removeSelected = function () {
|
||||
const operationName = 'removeItems';
|
||||
const successMessage = 'Selected items were successfully removed from the project';
|
||||
let selectedIds = Object.keys(ctrl.selected);
|
||||
if (selectedIds.length > 0) {
|
||||
entaxyCICDService
|
||||
.executeOperation(operationName, [ctrl.storage, ctrl.project, ctrl.version, selectedIds])
|
||||
.then(result => {
|
||||
let unremovedItems = JSON.parse(result);
|
||||
if (unremovedItems && Object.keys(unremovedItems).length > 0) {
|
||||
let message = 'There are items that cannot be removed ' +
|
||||
'since they are required by some of remaining items';
|
||||
let table = EntaxyCICD.createTableFromUnremovedItems(unremovedItems);
|
||||
Entaxy.notificationWithDetails(Entaxy.NOTIFICATION_TYPE.INFO, message, table, 30000);
|
||||
} else {
|
||||
Entaxy.notificationSuccess(successMessage);
|
||||
}
|
||||
$route.reload();
|
||||
}).catch(error => {
|
||||
Entaxy.notificationError(error);
|
||||
EntaxyCICD.log.error(error);
|
||||
});
|
||||
if (selectedIds.length == ctrl.items.length) {
|
||||
removeSelected(selectedIds);
|
||||
} else {
|
||||
removeSelectedWithCheck(selectedIds);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function removeSelectedWithCheck (selectedIds) {
|
||||
entaxyCICDService.executeOperation('getRequiredForRemoval',
|
||||
[ctrl.storage, ctrl.project, ctrl.version, selectedIds])
|
||||
.then(result => {
|
||||
let objectsTree = [];
|
||||
let requiredForRemovalList = JSON.parse(result);
|
||||
let mainRequiredForRemovalIds = requiredForRemovalList
|
||||
.map(requiredForRemovalObject => Object.keys(requiredForRemovalObject)[0]);
|
||||
let subRequiredForRemovalIds = [];
|
||||
if (mainRequiredForRemovalIds.length > 0) {
|
||||
let requiredForRemoval = Object.fromEntries(requiredForRemovalList
|
||||
.map(requiredForRemovalObject => Object.entries(requiredForRemovalObject)).flat());
|
||||
let objectsMap = mainRequiredForRemovalIds.length > Object.keys(ctrl.selected).length ?
|
||||
ctrl.items.reduce((obj, cur) => ({ ...obj, [cur.id] : cur }), {}) :
|
||||
ctrl.selected;
|
||||
mainRequiredForRemovalIds.forEach(itemId => {
|
||||
let itemIds = ctrl.items.map(item => item.id);
|
||||
let filtered = requiredForRemoval[itemId].filter(object => itemIds.includes(object.fullId));
|
||||
|
||||
if (filtered.length > 0) {
|
||||
subRequiredForRemovalIds = subRequiredForRemovalIds
|
||||
.concat(filtered.map(object => object.fullId));
|
||||
let sublist = filtered.map(object => getSublistItem(object, itemId));
|
||||
objectsTree.push(getObjectTreeItem(itemId, objectsMap, sublist, true));
|
||||
}
|
||||
});
|
||||
|
||||
if (objectsTree.length > 0) {
|
||||
openRemoveObjectsModal(objectsTree)
|
||||
.then(proceed => {
|
||||
if (proceed) {
|
||||
removeSelected(selectedIds.concat([...new Set(subRequiredForRemovalIds)]));
|
||||
} else {
|
||||
const idsToRemoval = selectedIds.filter(selectedId =>
|
||||
!mainRequiredForRemovalIds.includes(selectedId));
|
||||
if (idsToRemoval.length > 0) {
|
||||
removeSelected(idsToRemoval);
|
||||
}
|
||||
}
|
||||
}, reason => {
|
||||
if (reason && reason !== Entaxy.MODAL_CANCEL_REASON.ESCAPE_KEY_PRESS) {
|
||||
Entaxy.notificationError(reason);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
removeSelected(selectedIds);
|
||||
}
|
||||
} else {
|
||||
removeSelected(selectedIds);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getSublistItem(object, parentId) {
|
||||
return {
|
||||
name: object.fullId,
|
||||
fullId: object.fullId,
|
||||
displayName: object.displayName,
|
||||
additionalInfo: object.type,
|
||||
parent: parentId,
|
||||
disableRowExpansion: true
|
||||
}
|
||||
}
|
||||
|
||||
function getObjectTreeItem(objectId, objectsMap, sublist, useRuntimeType) {
|
||||
return {
|
||||
name: objectId,
|
||||
displayName: objectsMap[objectId].displayName,
|
||||
additionalInfo: useRuntimeType ? objectsMap[objectId].runtimeType : objectsMap[objectId].type,
|
||||
isExpanded: true,
|
||||
sublist: sublist.sort(Entaxy.compareBy('displayName'))
|
||||
}
|
||||
}
|
||||
|
||||
function openRemoveObjectsModal(toRemoval) {
|
||||
return $uibModal.open({
|
||||
component: 'entaxyCiCdRemoveObjectsModal',
|
||||
resolve: {
|
||||
project: () => ctrl.project,
|
||||
toRemoval: () => toRemoval,
|
||||
excludedObjectIds: () => ctrl.items.length > 0 ? ctrl.items.map(item => item.id) : []
|
||||
},
|
||||
size: 'xl',
|
||||
backdrop: 'static'
|
||||
}).result;
|
||||
}
|
||||
|
||||
function removeSelected (idsToRemove) {
|
||||
const operationName = 'removeItems';
|
||||
const successMessage = 'Selected items were successfully removed from the project';
|
||||
|
||||
entaxyCICDService
|
||||
.executeOperation(operationName, [ctrl.storage, ctrl.project, ctrl.version, idsToRemove])
|
||||
.then(() => {
|
||||
Entaxy.notificationSuccess(successMessage);
|
||||
$route.reload();
|
||||
}).catch(error => {
|
||||
Entaxy.notificationError(error);
|
||||
EntaxyCICD.log.error(error);
|
||||
$route.reload();
|
||||
});
|
||||
}
|
||||
|
||||
function processOperationSelected(operationName, successMessage) {
|
||||
let selectedIds = Object.keys(ctrl.selected);
|
||||
if (selectedIds.length > 0) {
|
||||
@@ -480,6 +555,7 @@ var EntaxyCICD;
|
||||
}).catch(error => {
|
||||
Entaxy.notificationError(error);
|
||||
EntaxyCICD.log.error(error);
|
||||
$route.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/*-
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
* rights to the Software and any copies are the property of the Copyright Holder. Unless
|
||||
* it is explicitly allowed the Copyright Holder, the User is prohibited from using the
|
||||
* Software for commercial purposes to provide services to third parties.
|
||||
*
|
||||
* The Copyright Holder hereby declares that the Software is provided on an "AS IS".
|
||||
* Under no circumstances does the Copyright Holder guarantee or promise that the
|
||||
* Software provided by him will be suitable or not suitable for the specific purposes
|
||||
* of the User, that the Software will meet all commercial and personal subjective
|
||||
* expectations of the User, that the Software will work properly, without technical
|
||||
* errors, quickly and uninterruptedly.
|
||||
*
|
||||
* Under no circumstances shall the Copyright Holder or its Affiliates is not liable
|
||||
* to the User for any direct or indirect losses of the User, his expenses or actual
|
||||
* damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
|
||||
* or damage to data, property, etc.
|
||||
* ~~~~~~/licensing~~~~~~
|
||||
*/
|
||||
var EntaxyCICD;
|
||||
(function (EntaxyCICD) {
|
||||
EntaxyCICD._module.component('entaxyCiCdRemoveObjectsModal', {
|
||||
bindings: {
|
||||
modalInstance: '<',
|
||||
resolve: '<'
|
||||
},
|
||||
template:
|
||||
`
|
||||
<div class="entaxy-modal-container">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" aria-label="Close" ng-click="$ctrl.cancel()">
|
||||
<span class="pficon pficon-close" aria-hidden="true"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">{{$ctrl.modalTitle}}</h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="collocated-objects-message-container">
|
||||
{{$ctrl.message}}
|
||||
</div>
|
||||
<entaxy-expandable-list items="$ctrl.resolve.toRemoval" use-toolbar="false" show-select-box="false">
|
||||
</entaxy-expandable-list>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" ng-click="$ctrl.proceed(false)">Cancel</button>
|
||||
<button type="submit" class="btn btn-primary" ng-click="$ctrl.proceed(true)">Proceed</button>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
controller: entaxyCICDRemoveObjectsModalController
|
||||
})
|
||||
.name;
|
||||
|
||||
function entaxyCICDRemoveObjectsModalController() {
|
||||
|
||||
let ctrl = this;
|
||||
|
||||
ctrl.$onInit = function() {
|
||||
ctrl.modalTitle = 'Remove items from the Project: ' + ctrl.resolve.project;
|
||||
|
||||
ctrl.message = 'Removing next items will cause removing extra objects:';
|
||||
}
|
||||
|
||||
ctrl.proceed = function (answer) {
|
||||
ctrl.modalInstance.close(answer);
|
||||
}
|
||||
|
||||
ctrl.cancel = function(reason) {
|
||||
ctrl.modalInstance.dismiss(reason);
|
||||
}
|
||||
}
|
||||
|
||||
})(EntaxyCICD || (EntaxyCICD = {}));
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-management-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-management-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ~~~~~~licensing~~~~~~
|
||||
* entaxy-cicd-plugin
|
||||
* ==========
|
||||
* Copyright (C) 2020 - 2025 EmDev LLC
|
||||
* Copyright (C) 2020 - 2026 EmDev LLC
|
||||
* ==========
|
||||
* You may not use this file except in accordance with the License Terms of the Copyright
|
||||
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
|
||||
|
||||
Reference in New Issue
Block a user