intToPermissionString function

String intToPermissionString(
  1. int intPermission, {
  2. String type = 'file',
  3. bool withType = true,
})

input Ex: 511 out: 777 => rwxrwxrwx type file | dir | link

Implementation

String intToPermissionString(int intPermission, {String type = 'file', bool withType = true}) {
  //lrwxrwxrwx
  //0777 = -rwxrwxrwx
  //drwxr-xr-x 755 bancoDeEmpregos
  //lrwxrwxrwx 777 /etc/systemd/system/php7.3-fpm.service
  //-rwxrwxrwx 777 /var/www/html/teste.txt
  // 7 = rwx
//  6 = rw-
//  4 = r--
//  3 = -wx
//  2 = -w-
//  1 = --x
  var result = '';

  //int r = 4, w = 2, x = 1, hifen = 0;
  var octal = NumeralSystemConverter.decimalToOctal2(intPermission);
  for (var i = 0; i < octal.length; i++) {
    var permission = '';
    switch (octal[i]) {
      case '7':
        permission = 'rwx';
        break;
      case '6':
        permission = 'rw-';
        break;
      case '5':
        permission = 'r-x';
        break;
      case '4':
        permission = 'r--';
        break;
      case '3':
        permission = '-wx';
        break;
      case '2':
        permission = '-w-';
        break;
      case '1':
        permission = '--x';
        break;
      case '0':
        permission = '---';
        break;
      case '':
        permission = '';
        break;
      default:
        permission = 'Invalid';
    }
    result += permission;
  }

  var tp = "${type.startsWith('f') ? '-' : type.startsWith('d') ? 'd' : 'l'}";

  result = withType ? '$tp$result' : result;

  return result;
}