linuxPackager.js 4.72 KB
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.toAppImageOrSnapArch = toAppImageOrSnapArch;
exports.LinuxPackager = void 0;

function _builderUtil() {
  const data = require("builder-util");

  _builderUtil = function () {
    return data;
  };

  return data;
}

function _sanitizeFilename() {
  const data = _interopRequireDefault(require("sanitize-filename"));

  _sanitizeFilename = function () {
    return data;
  };

  return data;
}

function _core() {
  const data = require("./core");

  _core = function () {
    return data;
  };

  return data;
}

function _platformPackager() {
  const data = require("./platformPackager");

  _platformPackager = function () {
    return data;
  };

  return data;
}

function _RemoteBuilder() {
  const data = require("./remoteBuilder/RemoteBuilder");

  _RemoteBuilder = function () {
    return data;
  };

  return data;
}

function _LinuxTargetHelper() {
  const data = require("./targets/LinuxTargetHelper");

  _LinuxTargetHelper = function () {
    return data;
  };

  return data;
}

function _targetFactory() {
  const data = require("./targets/targetFactory");

  _targetFactory = function () {
    return data;
  };

  return data;
}

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

class LinuxPackager extends _platformPackager().PlatformPackager {
  constructor(info) {
    super(info, _core().Platform.LINUX);
    const executableName = this.platformSpecificBuildOptions.executableName;
    this.executableName = executableName == null ? this.appInfo.sanitizedName.toLowerCase() : (0, _sanitizeFilename().default)(executableName);
  }

  get defaultTarget() {
    return ["snap", "appimage"];
  }

  createTargets(targets, mapper) {
    let helper;

    const getHelper = () => {
      if (helper == null) {
        helper = new (_LinuxTargetHelper().LinuxTargetHelper)(this);
      }

      return helper;
    };

    let remoteBuilder = null;

    for (const name of targets) {
      if (name === _core().DIR_TARGET) {
        continue;
      }

      const targetClass = (() => {
        switch (name) {
          case "appimage":
            return require("./targets/AppImageTarget").default;

          case "snap":
            return require("./targets/snap").default;

          case "deb":
          case "rpm":
          case "sh":
          case "freebsd":
          case "pacman":
          case "apk":
          case "p5p":
            return require("./targets/fpm").default;

          default:
            return null;
        }
      })();

      mapper(name, outDir => {
        if (targetClass === null) {
          return (0, _targetFactory().createCommonTarget)(name, outDir, this);
        }

        const target = new targetClass(name, this, getHelper(), outDir);

        if (process.platform === "win32" || process.env._REMOTE_BUILD) {
          if (remoteBuilder == null) {
            remoteBuilder = new (_RemoteBuilder().RemoteBuilder)(this);
          } // return remoteBuilder.buildTarget(this, arch, appOutDir, this.packager)


          return new RemoteTarget(target, remoteBuilder);
        }

        return target;
      });
    }
  }

}

exports.LinuxPackager = LinuxPackager;

class RemoteTarget extends _core().Target {
  constructor(target, remoteBuilder) {
    super(target.name, true
    /* all must be scheduled in time (so, on finishBuild RemoteBuilder will have all targets added - so, we must set isAsyncSupported to true (resolved promise is returned)) */
    );
    this.target = target;
    this.remoteBuilder = remoteBuilder;
    this.buildTaskManager = new (_builderUtil().AsyncTaskManager)(this.remoteBuilder.packager.info.cancellationToken);
  }

  get options() {
    return this.target.options;
  }

  get outDir() {
    return this.target.outDir;
  }

  async finishBuild() {
    await this.buildTaskManager.awaitTasks();
    await this.remoteBuilder.build();
  }

  build(appOutDir, arch) {
    const promise = this.doBuild(appOutDir, arch);
    this.buildTaskManager.addTask(promise);
    return promise;
  }

  async doBuild(appOutDir, arch) {
    _builderUtil().log.info({
      target: this.target.name,
      arch: _builderUtil().Arch[arch]
    }, "scheduling remote build");

    await this.target.checkOptions();
    this.remoteBuilder.scheduleBuild(this.target, arch, appOutDir);
  }

}

function toAppImageOrSnapArch(arch) {
  switch (arch) {
    case _builderUtil().Arch.x64:
      return "x86_64";

    case _builderUtil().Arch.ia32:
      return "i386";

    case _builderUtil().Arch.armv7l:
      return "arm";

    case _builderUtil().Arch.arm64:
      return "arm_aarch64";

    default:
      throw new Error(`Unsupported arch ${arch}`);
  }
} 
// __ts-babel@6.0.4
//# sourceMappingURL=linuxPackager.js.map