Skip to main content

release_updater 1.3.2 copy "release_updater: ^1.3.2" to clipboard
release_updater: ^1.3.2 copied to clipboard

A simple way to automatically update release/installation files in a local directory.

1.3.2 #

  • gcloud: >=0.8.19 <0.10.0 (was ^0.9.0 in 1.3.1). The ^0.9.0 of 1.3.1 conflicted with packages still on gcloud 0.8 (like bones_api 1.29.1), and the storage API used here is the same in both.

1.3.1 #

  • resolveJsonProperties: bool and num values are kept. Before, with properties or --allow-env (the release_packer CLI), they became null: "launcher": true, "windows_gui": true and {"dart_pub_get": true} were silently ignored. A dart_build_cli release had no launchers.

  • release_packer CLI: creates the releases directory if missing.

  • ReleasePacker.fromFile: a file that is not a JSON/YAML Map throws a StateError with a clear message.

  • ReleasePacker.checkBuildHooks: warnings parameter. The check before prepare doesn't log the dart compile kernel warning, logged once by the check after it.

  • gcloud: ^0.9.0

  • lints: ^6.1.0

1.3.0 #

  • release_packer: dart build commands, for dependencies with build hooks (native assets, like sqlite3 3), that dart compile exe does NOT support.

    • dart_build_cli: performs a dart build cli, building a bundle with bin/<name> and lib/ (the dynamic libraries). Accepts a target, output (default build/cli/<name>), args and launcher.
    • dart_build_<subcommand>: performs a dart build <subcommand>, with the arguments as is.
    • A files entry with only a dart_build_cli maps its bundle to the release root.
  • ReleasePackerDartBuild: new command for dart build <subcommand>, also from the String/List forms (dart build ...).

  • ReleasePackerDartBuildCli: new command for dart build cli:

    • Always passes --output: the dart build cli default (build/cli/<os>_<arch>/) is shared by all the targets.
    • The output is normalized (./out/ -> out) and must be inside the root directory, where the bundle is mapped from. The args can't set the target or the output (-t, --target, -o, --output).
    • launcher: writes a script at the bundle root (<name>, or <name>.cmd on Windows) that runs bin/<name>, keeping the path of a release that had the executable at its root. The POSIX script resolves symbolic links to itself (like one in /usr/local/bin).
    • With windows_gui: true, sets the subsystem of the executable inside the bundle.
  • ReleasePackerCommand.from: only one dart_build_* per command entry (ArgumentError).

  • ReleasePacker:

    • checkBuildHooks: aborts the build with a ReleasePackerError when a dart compile exe/aot-snapshot meets packages with build hooks, suggesting dart_build_cli. Called by buildFromDirectory before the prepare commands (if the package resolution is up to date), to fail fast, and after them. A dart compile kernel only logs a warning.
    • packagesWithBuildHooks: the packages with a hook/build.dart in .dart_tool/package_config.json. Only the runtime dependencies count (from .dart_tool/package_graph.json), as for dart compile exe: a dev dependency with build hooks does NOT block it.
    • isPackageResolutionUpToDate: package_config.json is NOT older than pubspec.yaml and pubspec.lock.
    • mergeDuplicatedFiles: files with the same release path are merged if identical (like the lib/ of two bundles), keeping the executable flag of any copy, and abort the build if not. Before, both were added to the bundle.
    • allCommands: the prepare, files and finalize commands.
    • buildFromDirectory: a file in a directory tree is executable by its own extension (like .exe), not by the directory destiny path.
  • ReleasePackerFile:

    • The destiny path / (or ./) is the release root, to map a directory tree to it. A single file keeps its name.
    • fromJson: dart_build_* keys are commands, not the file mapping. A Map without a file path now throws an ArgumentError (was a StateError).
  • ReleasePackerDartCommand: a failure caused by build hooks logs a hint to use dart_build_cli.

  • Tests: coverage from 97.1% to 97.4%.

  • mercury_client: ^2.4.0

  • shelf: ^1.4.3

  • shelf_static: ^1.2.0

  • googleapis_auth: ^2.3.5

  • crypto: ^3.0.8

  • archive: ^4.5.2

  • test: ^1.33.0

  • dependency_validator: ^5.1.0

  • coverage: ^1.16.0

1.2.0 #

  • release_packer: a command error now aborts the build with an error, avoiding a silent error while building/releasing a package/artifact.
    • Before, a failed command (like a dart compile exe error) was only logged, and the build continued and generated/uploaded an incomplete release bundle.
  • ReleasePackerCommandStatus: new enum with the status of a command execution: ok, ignored (not applicable, does NOT abort the build) or error (aborts the build).
  • ReleasePackerError: new Error thrown when a build fails. Exposes the failedCommands.
  • ReleasePackerCommand:
    • executeStatus: new method, returning the ReleasePackerCommandStatus of the execution. Defaults to execute, mapping true to ok and false to error.
    • executeCommands: now stops at the 1st failed command and throws a ReleasePackerError. Returns a Map of ReleasePackerCommandStatus (was a Map of bool). Accepts a context to identify the failure.
    • checkCommandsResults: new helper that throws a ReleasePackerError for failed commands.
  • ReleasePacker:
    • prepare, finalize and ReleasePackerOperation.executeCommands: now return a Map of ReleasePackerCommandStatus and throw a ReleasePackerError if a command fails.
  • ReleasePackerCommandDelete:
    • A missing file is now ignored (the desired state), not an error.
  • ReleasePackerWindowsSubsystemCommand:
    • An input that is not a Windows executable (the usual case when building on another platform) is now ignored, not an error.
    • Added resolveInputPath and isNotAWindowsExecutable.
  • release_packer CLI:
    • Now catches build errors, logs them and exits with code 1.
  • Tests: increased the coverage from 94.6% to 97.1%, adding tests for the build abort, the directory tree bundling, the command from variants and the ReleaseStorage.updateTo error paths.

1.1.13 #

  • sdk: '>=3.10.0 <4.0.0'

  • Code formatted with the new Dart formatter style.

  • ReleaseFile:

    • normalizePath: now rejects paths outside of the release directory (Zip Slip), a bare drive prefix and empty/. paths.
  • Release:

    • parse: now throws a FormatException for a malformed release.
  • ReleaseManifest:

    • toJson: fixed the date entry (was date: and was using DateTime.now() instead of the manifest date).
    • toJson: a null platform is now omitted (was the null String), fixing the load of manifests of releases without a platform.
    • fromJson: still accepts manifests generated by previous versions.
  • ReleaseBundleZip:

    • Fixed the UNIX file mode of the Zip entries: was 755/420 (decimal), now 0o755/0o644. Bundles generated by previous versions are still read as executables.
  • ReleaseUpdater:

    • onSpawned: fixed the resolution of asynchronous results (a false result was ignored).
  • ReleaseStorageDirectory:

    • copy: now preserves overwriteFiles and selfReleaseDirectory (an Isolate update checker was losing them).
    • FileStorageExtension.toReleaseFile: without a matching parentPath the root prefix is now removed on any platform (a Windows absolute path was throwing a StateError, while a POSIX one was accepted).
  • ReleaseProviderHttp:

    • copy: now preserves releasesFile and releasesBundleFileFormat.
    • Logs the error of a request that failed all the retries.
  • ReleasePackerCommandWithArgs: fixed the empty command check (a blank command was accepted).

  • WindowsPEFile:

    • Reads e_lfanew (the PE header offset) as an Uint32 (was an Uint16).
  • Server:

    • The tracked RequestInfos are now purged (unbounded growth).
  • parseReleaseDirectory: now detects an absolute path on Windows.

  • Tests: coverage from 67.8% to 94.6%.

  • data_serializer: ^1.2.3

  • googleapis_auth: ^2.3.3

  • crypto: ^3.0.7

  • archive: ^4.0.9

  • test: ^1.31.1

  • dependency_validator: ^5.0.5

  • coverage: ^1.15.1

1.1.12 #

  • gcloud: ^0.8.19

  • googleapis_auth: ^2.0.0

  • pub_semver: ^2.2.0

  • archive: ^4.0.7

  • test: ^1.26.2

  • coverage: ^1.14.1

1.1.11 #

  • sdk: '>=3.6.0 <4.0.0'

  • mercury_client: ^2.3.0

  • pub_semver: ^2.1.5

  • archive: ^4.0.4

  • yaml: ^3.1.3

  • lints: ^5.1.1

  • test: ^1.25.15

  • dependency_validator: ^5.0.2

  • coverage: ^1.11.1

1.1.10 #

  • sdk: '>=3.5.0 <4.0.0'

  • data_serializer: ^1.2.1

  • mercury_client: ^2.2.4

  • shelf_static: ^1.1.3

  • gcloud: ^0.8.18

  • crypto: ^3.0.6

  • path: ^1.9.1

  • collection: ^1.19.1

  • lints: ^4.0.0

  • test: ^1.25.11

  • coverage: ^1.11.0

1.1.9 #

  • sdk: '>=3.4.0 <4.0.0'

  • Removed use of UnmodifiableUint8ListView (use asUnmodifiableView()) for Dart 3.5 compatibility.

  • data_serializer: ^1.2.0

  • mercury_client: ^2.2.2

  • shelf: ^1.4.2

  • shelf_gzip: ^4.1.0

  • gcloud: ^0.8.12

  • googleapis_auth: ^1.6.0

  • archive: ^3.6.1

  • test: ^1.25.8

  • coverage: ^1.9.0

1.1.8 #

  • Added command dart_compile_kernel (ReleasePackerDartCompileKernel).

  • path: ^1.9.0

  • lints: ^3.0.0

1.1.7 #

  • ReleasePackerCommandGCS:
    • resolveUploadParameters: force POSIX style in file path. (Fix Windows issue).

1.1.6 #

  • New ReleasePackerCommandGCS.

  • ReleasePackerCommandUploadReleaseBundle:

    • Added byURL and byGSC constructors.
  • ReleaseBundle:

    • Added contentType.
  • bin/release_packer

    • New option --allow-env: allow config properties from environment variables.
  • gcloud: ^0.8.11

  • googleapis_auth: ^1.4.1

  • data_serializer: ^1.0.12

  • ascii_art_tree: ^1.0.6

  • archive: ^3.4.9

  • test: ^1.24.9

  • dependency_validator: ^3.2.3

  • coverage: ^1.7.1

1.1.5 #

  • Improved console output of CLI tools.

    • Using ASCIIArtTree to show release bundle tree.
  • ReleaseBundle:

    • Added toASCIIArtTree.
  • archive: ^3.3.8

  • mercury_client: ^2.2.0

  • ascii_art_tree: ^1.0.4

1.1.4 #

  • WindowsPEFile:
    • Not modifying original executable anymore to avoid OS security warnings.
    • Added save method.

1.1.3 #

  • New executable release_utility.

  • New WindowPEFile.

  • release_packer.dart:

    • Added support for command windows_gui.
  • Dart CI: added job build_windows.

  • data_serializer: ^1.0.10

1.1.2 #

  • Fix packing of directory tree on Windows.

1.1.1 #

  • Allow packing of a directory tree.

1.1.0 #

  • sdk: '>=3.0.0 <4.0.0'
  • archive: ^3.3.7
  • mercury_client: ^2.1.8
  • path: ^1.8.3
  • pub_semver: ^2.1.4
  • shelf: ^1.4.1
  • shelf_static: ^1.1.2
  • shelf_gzip: ^4.0.1
  • crypto: ^3.0.3
  • collection: ^1.17.1
  • yaml: ^3.1.2
  • lints: ^2.1.1
  • test: ^1.24.4
  • coverage: ^1.6.3

1.0.24 #

  • Update GitHub CI.
  • archive: ^3.3.1
  • mercury_client: ^2.1.6
  • path: ^1.8.2
  • pub_semver: ^2.1.1
  • shelf: ^1.3.2
  • shelf_static: ^1.1.1
  • crypto: ^3.0.2
  • collection: ^1.16.0
  • yaml: ^3.1.1
  • lints: ^2.0.0
  • test: ^1.21.4
  • dependency_validator: ^3.2.2
  • coverage: ^1.5.0
  • pubspec: ^2.3.0

1.0.23 #

  • Fix checkManifest when saving files with suffix .new_release.
  • Improve check of manifest.

1.0.22 #

  • Improved update response: ReleaseUpdateResult.
  • spawnPeriodicUpdateCheckerIsolate now shares the same Isolate for multiple calls.

1.0.21 #

  • Added support for ReleaseManifest and save it as release-manifest.json.
  • crypto: ^3.0.1
  • base_codecs: ^1.0.1

1.0.20 #

  • Handle HttpClient exceptions and added retries.
  • ReleaseStorageDirectory:
    • Added installNewReleaseFiles, to allow self directory storage mode.
  • ReleaseBundleZip now stores the mode (755) for executable files.

1.0.19 #

  • update:
    • Added optional parameter force.
    • If the current version is the same of the target version, returns null.

1.0.18 #

  • checkForUpdate:
    • new parameter currentRelease to allow check fo current release context, and not only from local file.

1.0.17 #

  • release_updater_server:
    • Sort entries for routes: RELEASES-FILES and RELEASES-URLS.

1.0.16 #

  • release_updater_server:
    • Info routes: RELEASES, RELEASES-FILES and RELEASES-URLS.

1.0.15 #

  • ReleaseUpdater:
    • Added startPeriodicUpdateChecker and spawnPeriodicUpdateCheckerIsolate.

1.0.14 #

  • Fix upload of raw data.
  • mercury_client: ^2.1.3

1.0.13 #

  • Fix upload of release file format: platform as missing.

1.0.12 #

  • Improved commands logging.
  • Fix passing of release bundle to finalize commands.
  • Handler URL request errors.
  • `ReleasePackerCommandUploadReleaseBundle``:
    • Fix parameter file format.
    • Fix parameter release.
  • Server:
    • Fix parse of request credential.
    • Append uploaded releases to releases-file.

1.0.11 #

  • ReleasePackerCommandURL:
    • Added request logging.
  • release_packer:
    • Improve command info.
    • Log prepare/finalize commands.

1.0.10 #

  • Fix ReleasePackerCommandURL Credential parser.

1.0.9 #

  • release_updater_server:
    • Upload support.
    • Block of IP by request errors or high volume of requests.

1.0.8 #

  • ReleasePacker:
    • Allow properties in config JSON.
    • New commands:
      • ReleasePackerCommandURL
      • ReleasePackerCommandUploadReleaseBundle

1.0.7 #

  • ReleasePackerCommand:
    • Improved commands error logging.
  • Fix ReleasePackerProcessCommand execution on Windows.

1.0.6 #

  • ReleasePacker:
    • Added prepareCommands and finalizeCommands.
  • New ReleasePackerCommand:
    • ReleasePackerCommandDelete
    • ReleasePackerProcessCommand
    • ReleasePackerDartCommand
  • Improved README.md:
    • Added executables usage description.
  • Improved ReleasePacker build tests:
    • Added commands.
    • Added prepare and finalize.

1.0.5 #

  • Improved path resolution, to work at Windows and Linux/POSIX transparently.

1.0.4 #

  • Improved CLI executables:
    • release_packer:
      • Added usage message.
      • now can auto compile Dart scripts.
    • release_updater:
      • Added usage message.

1.0.3 #

  • ReleaseBundleZip now can generate the zipBytes.
  • Added ReleasePacker.
    • Added executable release_packer.
  • ReleasePlatform: ensure that x86_64 is treated as x64.
  • Improved tests.
  • yaml: ^3.1.0

1.0.2 #

  • Added currentReleaseFilePath and currentReleaseFile.
  • When loading a ReleaseBundle from a Zip, detected executables by file extension.
  • When storing a ReleaseFile, ensure that the executable permission is set.
  • Added startReleaseProcess and runReleaseProcess.
  • collection: ^1.15.0

1.0.1 #

  • Added support for ReleaseBundle from Zip file.
  • Added executables:
    • release_updater.
    • release_updater_server.dart.

1.0.0 #

  • Initial version.
34
likes
160
points
4.62k
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A simple way to automatically update release/installation files in a local directory.

Repository (GitHub)
View/report issues

License

Apache-2.0 (license)

Dependencies

archive, ascii_art_tree, base_codecs, collection, crypto, data_serializer, gcloud, googleapis_auth, mercury_client, path, pub_semver, shelf, shelf_gzip, shelf_static, yaml

More

Packages that depend on release_updater