UMASK generator usingJavascript Typescript.
Contributors are welcome!
UMASK Calculation Algorithm:
function calculateUMASKFolder(permissions){ //permissions = [x,x,x,x,x,x,x,x,x] where x = 0 or 1let fullFolderPermissions = [7,7,7];let permissionsCombined = combinePermissions(permissions); //permissionsCombined = [x,x,x] where 0<x<7for (let i=0; i<3; i++){fullFolderPermissions[i] -= permissionsCombined[i];}const umask = fullFolderPermissions;return umask; // umask[x,x,x] where 0<x<7}
function calculateUMASKFile(permissions){let fullFilePermissions = [6,6,6];let permissionsCombined = combinePermissions(permissions); //permissionsCombined = [x,x,x] where 0<x<7for (let i=0; i<3; i++){fullFilePermissions[i] -= permissionsCombined[i];if (permissionsCombined[i] % 2 == 1){return -1;}}const umask = fullFolderPermissions;return umask; // umask[x,x,x] where 0<x<7}
function combinePermissions(permissions){let combPermissions = [0,0,0];for (let i=0; i<permissions.length; i++){if (permissions[i][0])combPermissions += 4;if (permissions[i][1])combPermissions += 2;if (permissions[i][2])combPermissions += 1;}}