示例#1
0
test("cli", async () => {
  // because these methods are internal
  const { configureBuildCommand, normalizeOptions } = require("electron-builder/out/builder")
  const yargs = require("yargs")
  configureBuildCommand(yargs)

  function parse(input: string): any {
    return normalizeOptions(yargs.parse(input.split(" ")))
  }

  function expected(opt: any): object {
    return {
      publish: undefined,
      draft: undefined,
      prerelease: undefined, ...opt}
  }

  expect(parse("--platform mac")).toMatchSnapshot()

  expect(parse("-owl --x64 --ia32"))
  expect(parse("-mwl --x64 --ia32"))

  expect(parse("--dir")).toMatchObject(expected({targets: Platform.current().createTarget(DIR_TARGET)}))
  expect(parse("--mac --dir")).toMatchSnapshot()
  expect(parse("--x64 --dir")).toMatchObject(expected({targets: Platform.current().createTarget(DIR_TARGET, Arch.x64)}))
  expect(parse("--platform linux --dir")).toMatchSnapshot()

  expect(parse("--arch x64")).toMatchObject(expected({targets: Platform.current().createTarget(null, Arch.x64)}))
  expect(parse("--ia32 --x64")).toMatchObject(expected({targets: Platform.current().createTarget(null, Arch.x64, Arch.ia32)}))
  expect(parse("--linux")).toMatchSnapshot()
  expect(parse("--win")).toMatchSnapshot()
  expect(parse("-owl")).toMatchSnapshot()
  expect(parse("-l tar.gz:ia32")).toMatchSnapshot()
  expect(parse("-l tar.gz:x64")).toMatchSnapshot()
  expect(parse("-l tar.gz")).toMatchSnapshot()
  expect(parse("-w tar.gz:x64")).toMatchSnapshot()

  expect(parse("-c.compress=store -c.asar -c ./config.json")).toMatchObject({
    config: {
      asar: true,
      compress: "store",
      extends: "./config.json"
    }
  })

  function parseExtraMetadata(input: string) {
    const result = parse(input)
    delete result.targets
    return result
  }

  expect(parseExtraMetadata("--em.foo=bar"))
})
test("cli", async () => {
  // because these methods are internal
  const { configureBuildCommand, normalizeOptions } = require("electron-builder/out/builder")
  const yargs = require("yargs")
  configureBuildCommand(yargs)

  function parse(input: string): any {
    const options = normalizeOptions(yargs.parse(input.split(" ")))
    checkBuildRequestOptions(options)
    return options
  }

  function expected(opt: any): object {
    return {
      draft: undefined,
      prerelease: undefined,
      ...opt
    }
  }

  expect(parse("--platform mac")).toMatchSnapshot()

  expect(parse("-owl --x64 --ia32"))
  expect(parse("-mwl --x64 --ia32"))

  expect(parse("--dir")).toMatchObject(expected({targets: Platform.current().createTarget(DIR_TARGET)}))
  expect(parse("--mac --dir")).toMatchSnapshot()
  expect(parse("--x64 --dir")).toMatchObject(expected({targets: Platform.current().createTarget(DIR_TARGET, Arch.x64)}))
  expect(parse("--platform linux --dir")).toMatchSnapshot()

  expect(parse("--arch x64")).toMatchObject(expected({targets: Platform.current().createTarget(null, Arch.x64)}))
  expect(parse("--ia32 --x64")).toMatchObject(expected({targets: Platform.current().createTarget(null, Arch.x64, Arch.ia32)}))
  expect(parse("--linux")).toMatchSnapshot()
  expect(parse("--win")).toMatchSnapshot()
  expect(parse("-owl")).toMatchSnapshot()
  expect(parse("-l tar.gz:ia32")).toMatchSnapshot()
  expect(parse("-l tar.gz:x64")).toMatchSnapshot()
  expect(parse("-l tar.gz")).toMatchSnapshot()
  expect(parse("-w tar.gz:x64")).toMatchSnapshot()
  expect(parse("-p always -w --x64")).toMatchSnapshot()
  expect(parse("--prepackaged someDir -w --x64")).toMatchSnapshot()
  expect(parse("--project someDir -w --x64")).toMatchSnapshot()

  expect(parse("-c.compress=store -c.asar -c ./config.json")).toMatchObject({
    config: {
      asar: true,
      compress: "store",
      extends: "./config.json"
    }
  })
})
示例#3
0
test("cli", async () => {
  const yargs = require("yargs")
  configureBuildCommand(yargs)

  function parse(input: string): BuildOptions {
    return normalizeOptions(yargs.parse(input.split(" ")))
  }

  function expected(opt: BuildOptions): object {
    return Object.assign({
      publish: undefined,
      draft: undefined,
      prerelease: undefined,
      extraMetadata: undefined,
    }, opt)
  }

  expect(parse("--platform mac")).toMatchSnapshot()

  expect(parse("-owl --x64 --ia32"))
  expect(parse("-mwl --x64 --ia32"))

  expect(parse("--dir")).toMatchObject(expected({targets: Platform.current().createTarget(DIR_TARGET)}))
  expect(parse("--mac --dir")).toMatchSnapshot()
  expect(parse("--x64 --dir")).toMatchObject(expected({targets: Platform.current().createTarget(DIR_TARGET, Arch.x64)}))
  expect(parse("--platform linux --dir")).toMatchSnapshot()

  expect(parse("--arch x64")).toMatchObject(expected({targets: Platform.current().createTarget(null, Arch.x64)}))
  expect(parse("--ia32 --x64")).toMatchObject(expected({targets: Platform.current().createTarget(null, Arch.x64, Arch.ia32)}))
  expect(parse("--linux")).toMatchSnapshot()
  expect(parse("--win")).toMatchSnapshot()
  expect(parse("-owl")).toMatchSnapshot()
  expect(parse("-l tar.gz:ia32")).toMatchSnapshot()
  expect(parse("-l tar.gz:x64")).toMatchSnapshot()
  expect(parse("-l tar.gz")).toMatchSnapshot()
  expect(parse("-w tar.gz:x64")).toMatchSnapshot()

  function parseExtraMetadata(input: string) {
    const result = parse(input)
    delete result.targets
    return result
  }

  expect(parseExtraMetadata("--em.foo=bar"))
})
示例#4
0
async function doExtraResourcesTest(platform: Platform) {
  const osName = platform.buildConfigurationKey
  //noinspection SpellCheckingInspection
  await assertPack("test-app-one", {
    // to check NuGet package
    targets: platform.createTarget(platform === Platform.WINDOWS ? "squirrel" : DIR_TARGET),
    config: {
      extraResources: [
        "foo",
        "bar/hello.txt",
        "./dir-relative/f.txt",
        "bar/${arch}.txt",
        "${os}/${arch}.txt",
      ],
      [osName]: {
        extraResources: [
          "platformSpecificR"
        ],
        extraFiles: [
          "platformSpecificF"
        ],
      }
    },
  }, {
    projectDirCreated: projectDir => {
      return BluebirdPromise.all([
        outputFile(path.join(projectDir, "foo/nameWithoutDot"), "nameWithoutDot"),
        outputFile(path.join(projectDir, "bar/hello.txt"), "data"),
        outputFile(path.join(projectDir, "dir-relative/f.txt"), "data"),
        outputFile(path.join(projectDir, `bar/${process.arch}.txt`), "data"),
        outputFile(path.join(projectDir, `${osName}/${process.arch}.txt`), "data"),
        outputFile(path.join(projectDir, "platformSpecificR"), "platformSpecificR"),
        outputFile(path.join(projectDir, "ignoreMe.txt"), "ignoreMe"),
      ])
    },
    packed: context => {
      const base = path.join(context.outDir, `${platform.buildConfigurationKey}${platform === Platform.MAC ? "" : "-unpacked"}`)
      let resourcesDir = path.join(base, "resources")
      if (platform === Platform.MAC) {
        resourcesDir = path.join(base, `${context.packager.appInfo.productFilename}.app`, "Contents", "Resources")
      }

      return BluebirdPromise.all([
        assertThat(path.join(resourcesDir, "foo")).isDirectory(),
        assertThat(path.join(resourcesDir, "foo", "nameWithoutDot")).isFile(),
        assertThat(path.join(resourcesDir, "bar", "hello.txt")).isFile(),
        assertThat(path.join(resourcesDir, "dir-relative", "f.txt")).isFile(),
        assertThat(path.join(resourcesDir, "bar", `${process.arch}.txt`)).isFile(),
        assertThat(path.join(resourcesDir, osName, `${process.arch}.txt`)).isFile(),
        assertThat(path.join(resourcesDir, "platformSpecificR")).isFile(),
        assertThat(path.join(resourcesDir, "ignoreMe.txt")).doesNotExist(),
      ])
    },
  })
}
function createBuildResourcesTest(platform: Platform) {
  return app({
    // only dir - avoid DMG
    targets: platform.createTarget(platform === Platform.MAC ? DIR_TARGET : null),
    config: {
      directories: {
        buildResources: "custom",
        output: "customDist",
        // https://github.com/electron-userland/electron-builder/issues/601
        app: ".",
      }
    },
  }, {
    packed: async context => {
      await assertThat(path.join(context.projectDir, "customDist")).isDirectory()
    },
    projectDirCreated: projectDir => move(path.join(projectDir, "build"), path.join(projectDir, "custom"))
  })
}
export function platform(platform: Platform): PackagerOptions {
  return {
    targets: platform.createTarget()
  }
}
示例#7
0
(async () => {
    // Promise is returned
    build({
        targets: Platform.current().createTarget(),
        config: {
            appId: "hr.envox.eez.studio",
            copyright: "Copyright © 2018-present Envox d.o.o.",
            directories: {
                output: "builder-output"
            },

            files: [
                "dist/**",
                "libs/**",

                "icon.icns",
                "icon.ico",
                "LICENSE.TXT",

                "node_modules/**",
                "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}",
                "!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}",
                "!**/node_modules/*.d.ts",
                "!**/node_modules/.bin",
                "!**/node_modules/better-sqlite3/build/Release",
                "!**/node_modules/usb/build/Release",
                "!**/node_modules/@serial-port/bindings/build/Release",
                "!**/node_modules/lzz-gyp/lzz-compiled/linux",
                "!**/node_modules/lzz-gyp/lzz-compiled/osx",
                "!**/node_modules/lzz-gyp/lzz-compiled/bsd",

                "!**/*.js.map"
            ],

            extraResources: await getExtraResource(),

            fileAssociations: [
                {
                    ext: "eez-project",
                    name: "EEZ Studio Project",
                    role: "Editor"
                }
            ],

            mac: {
                target: ["dmg", "pkg", "zip"],
                category: "public.app-category.utilities",
                icon: "./icon.icns",
                type: "distribution"
            },
            dmg: {
                background: "dist/eez-studio-ui/_images/background.png",
                iconSize: 160,
                iconTextSize: 12,
                window: {
                    width: 660,
                    height: 400
                },
                contents: [
                    {
                        x: 180,
                        y: 170,
                        type: "file"
                    },
                    {
                        x: 480,
                        y: 170,
                        type: "link",
                        path: "/Applications"
                    }
                ]
            },
            pkg: {
                license: "LICENSE.TXT"
            },
            win: {
                target: ["nsis" /*, "portable", "zip"*/],
                icon: "./icon.ico"
            },
            nsis: {
                installerIcon: "./icon.ico",
                license: "LICENSE.TXT",
                warningsAsErrors: false
            },
            linux: {
                target: ["AppImage", "deb", "rpm", "snap"],
                icon: "dist/eez-studio-ui/_images/eez_logo.png",
                category: "Utility"
            },
            snap: {
                grade: "stable",
                summary: "Cross-platform visual development tool and SCPI instrument controller."
            },
            publish: {
                provider: "github",
                owner: "notable",
                releaseType: "release",
                publishAutoUpdate: true
            }
        }
    })
        .then(() => {
            // handle result
        })
        .catch(error => {
            // handle error
        });
})();