release_updater 1.0.8 
release_updater: ^1.0.8 copied to clipboard
A simple way to update release/installation files in a local directory.
release_updater #
This package brings a simple way to update release/installation files in a local directory.
API Documentation #
See the API Documentation for a full list of functions, classes and extension.
Usage #
import 'dart:io';
import 'package:release_updater/release_updater_io.dart';
void main() async {
  var storage = ReleaseStorageDirectory('appx', Directory('/install/path'));
  
  var provider = ReleaseProviderHttp.baseURL('https://your.domain/appx/releases');
  var releaseUpdater = ReleaseUpdater(storage, provider);
  var version = await releaseUpdater.update();
  print('-- Updated to version: $version');
  var runResult = await releaseUpdater.runReleaseProcess('run.exe', ['-a']);
  var exitCode = runResult!.exitCode;
  
  print('-- Exit code: $exitCode');
  print('-- Result: ${runResult.stdout}');
  exit(exitCode);
}
ReleaseProvider #
You can implement your own ReleaseProvider or use just the built-in ReleaseProviderHttp class.
Executables #
- 
release_updater: ACLIupdater. - 
release_updater_server: A simple HTTP server to provide releases using the shelf package. 
release_updater #
The release_updater is a CLI for the ReleaseUpdater class.
To build a release:
$> release_packer release_packer.json build ./source-dir ./releases-dir
Example of a release_packer.json file:
{
  "name": "appx",
  "version_from": "pubspec.yaml",
  "prepare": [
    "dart_pub_get",
    {"dart_compile_exe": "bin/foo.dart"}
  ],
  "finalize": [
    {"rm": "bin/foo.exe"}
  ],
  "files": [
    "README.md",
    {"hello.txt": "hello-world.txt"},
    {"bin/foo.exe": "."},
    {"libfoo-arm64.dylib": ".", "platform":  "^macos-arm64$"},
    {"libfoo-x64.dylib": ".", "platform":  "^macos-x64$"},
    {"libfoo.so": ".", "platform":  "^linux.*$"},
    {"libfoo.dll": ".", "platform":  "^windows.*$"}
  ]
}
JSON Format:
- 
name: the application name, for the Release name. - 
version: the version of the Release. - 
version_from: theJSONorYAMLfile to provide the fieldversion(if the parameterfieldis not provided). - 
platform: is aRegExpstring to match the building platform. See the ReleasePlatform class. - 
Command types:
dart_pub_get: performs adart pub get.dart_compile_exe: performs adart compile exe %dart_script.dart: performs adart %command.command: performs a shell%command.rm: Deletes a file.
 - 
files: each entry offilescan be:- A 
Stringwith a file path:"file/path.txt" - A 
Mapwith extra parameters:- A file with a renamed path and a specific platform.
{"source/file/path.txt": "release/file/path", "platform": "^regexp"} - A file without rename it:
{"source/file/path.txt": "."} - A file from a 
dart_compile_execommand:{"bin/client.exe": "client.exe", "dart_compile_exe": "bin/client.dart"} 
 - A file with a renamed path and a specific platform.
 
 - A 
 
release_updater_server #
To serve a release directory:
$> release_updater_server releases-server-config.json
Config file:
{
  "releases-directory": "/path/to/releases",
  "port": 8090,
  "address": "0.0.0.0"
}
Source #
The official source code is hosted @ GitHub:
Features and bugs #
Please file feature requests and bugs at the issue tracker.
Contribution #
Any help from the open-source community is always welcome and needed:
- Found an issue?
- Please fill a bug report with details.
 
 - Wish a feature?
- Open a feature request with use cases.
 
 - Are you using and liking the project?
- Promote the project: create an article, do a post or make a donation.
 
 - Are you a developer?
- Fix a bug and send a pull request.
 - Implement a new feature, like other training algorithms and activation functions.
 - Improve the Unit Tests.
 
 - Have you already helped in any way?
- Many thanks from me, the contributors and everybody that uses this project!
 
 
If you donate 1 hour of your time, you can contribute a lot, because others will do the same, just be part and start with your 1 hour.
Author #
Graciliano M. Passos: gmpassos@GitHub.