release_updater 1.0.12
release_updater: ^1.0.12 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",
"upload-user": "userx",
"upload-pass": "123456"
}
- If the properties
upload-userandupload-pass(with length>= 6) are defined, upload of files will be allowed.- All files are saved in the
releases-directorywithout any sub-directory. - Upload errors can block an
IPfor 30min.
- All files are saved in the
- A high volume of requests can block an
IPfor 2min.
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.