Viewing version 1.5.0. Open the latest package page.
cli_pkg
1.5.0Grinder tasks for releasing Dart CLI packages.
Readme
Dart CLI Packager
This package provides a set of Grinder tasks that make it easy to release a Dart command-line application on many different release channels, to Dart users and non-Dart users alike. It also integrates with Travis CI to make it easy to automatically deploy packages.
To use this package, import package:cli_pkg/cli_pkg.dart and call
pkg.addAllTasks() before calling grind():
import 'package:cli_pkg/cli_pkg.dart' as pkg;
import 'package:grinder/grinder.dart';
void main(List<String> args) {
pkg.addAllTasks();
grind(args);
}
The following sets of tasks are provided, each of which can also be enabled individually:
- Creating standalone archives for your package.
- Uploading standalone archives to GitHub releases.
- Compiling to JavaScript and publishing to npm.
- Uploading standalone archives to Chocolatey.
- Updating a Homebrew formula to download from GitHub releases.
- Publishing to pub.
It's strongly recommended that this package be imported with the prefix pkg.
Configuration
This package is highly configurable, using ConfigVariable fields defined
at the top level of the library. By default, it infers as much configuration
as possible from the package's pubspec, but almost all properties can be
overridden in the main() method:
import 'package:cli_pkg/cli_pkg.dart' as pkg;
import 'package:grinder/grinder.dart';
void main(List<String> args) {
pkg.name.value = "bot-name";
pkg.humanName.value = "My App";
pkg.addAllTasks();
grind(args);
}
ConfigVariables whose values are expensive to compute or that might fail under
some circumstances can also be set to callback functions, which are called
lazily when the variables are used by the Grinder tasks:
import 'package:cli_pkg/cli_pkg.dart' as pkg;
import 'package:grinder/grinder.dart';
void main(List<String> args) {
pkg.githubReleaseNotes.fn = () => File.read("RELNOTES.md");
pkg.addAllTasks();
grind(args);
}
Each task describes exactly which configuration variables it uses. Configuration
that just applies to one set of tasks is always prefixed with a corresponding
name. For example, pkg.jsFlags applies to JavaScript compilation.
Changelog
1.5.0
-
Add
pkg.npmAdditionalFilesto make it possible to add custom files to npm packages. -
pkg.addChocolateyTasks()no longer automatically adds standalone tasks, since Chocolatey tasks no longer depend on standalone tasks. -
pkg-chocolateynow creates a file namedLICENSE.txtrather thanLICENSE, at the request of the Chocolatey reviewers.
1.4.0
- Add
pkg.environmentConstantsto make it possible to define custom environment constants for the compiled executables.
1.3.0
- Migrate to null-safety.
1.2.0
-
Add a
pkg.githubBearerTokento make it easier to integrate with GitHub actions. -
Generate a fully standalone executable on Linux rather than a native snapshot.
1.1.0
- The main function generated by this package will return a
Promiseif the corresponding Dart main function returns aFuture.
1.0.0
- Initial stable release.
Changes since 1.0.0-beta.13
- Don't fold link reference declarations like paragraphs when generating GitHub release notes.
1.0.0-beta.13
-
Add a
ConfigVariable.defaultValueproperty to get the default value for variables that are overridden by functions. -
Fix a typo in error messages when files need to be regenerated for tests.
1.0.0-beta.12
- Deploy Chocolatey packages as source files rather than a zip file, to avoid
validation errors around the need for a
VERIFICATIONfile.
1.0.0-beta.11
-
Properly load the Dart SDK license when it's in the directory above the SDK, as in a Homebrew installation.
-
Use the latest version of the
xmlpackage.
1.0.0-beta.10
-
Breaking change: All configurable variables are now defined as
ConfigVariableobjects rather than top-level fields. These objects make it possible to configure variables with callback functions and to freeze those variables once execution has begun. -
Properly handle git repositories that use branch names other than
master.
1.0.0-beta.9
- Improve error messages if release notes can't be extracted from
CHANGELOG.md.
1.0.0-beta.8
- Fixes a bug when reading a
CHANGELOG.mdwith Windows-style line endings.
1.0.0-beta.7
- Breaking change: Dart snapshots are now named based on the executable name
(specified in the pubspec or in
pkg.executables) instead of the name of the Dart file inbin.
1.0.0-beta.6
-
Breaking change: Chocolatey now uses the
chocoCLI to build and deploy packages, rather than re-implementing its logic in Dart. In particular:-
The
pkg-chocolatey-buildtask has been renamed topkg-chocolatey-packto match the CLI's naming scheme. -
The
pkg-chocolatey-packandpkg-chocolatey-deploytasks must be run in an environment with thechococommand available.
-
-
Add a
pkg-chocolateycommand that builds an un-archived Chocolatey package directory. -
Rather than releasing binary snapshots on Chocolatey, compile the source code to compile native executables on users' machines.
-
Add a
chocolateyFilesgetter that returns the files that should be included in the Chocolatey package. -
Depend on the correct version of pre-release Dart SDKs from Chocolatey packages.
1.0.0-beta.5
- Use the correct URL when fetching GitHub release metadata.
1.0.0-beta.4
-
Add a
pkg.npmDistTaggetter that controls the distribution tag for an npm release. -
Add a
pkg.homebrewCreateVersionedFormulagetter that controls whether the Homebrew release creates a new formula or updates an existing one. -
Run
pub publish --forceso it doesn't hang forever. -
Properly parse GitHub repositories from HTTP URLs ending in
.git. -
Drop support for Mac OS ia32 packages, since Dart 2.7 doesn't support them anymore.
1.0.0-beta.3
- Add a
cli_pkg/testing.dartlibrary to make it easier for users to efficiently and reliably test their executables.
1.0.0-beta.2
-
Add a
pkg-standalone-devtask for building a script that can be invoked for testing. -
Fix a bug where the version variable wouldn't be set for certain executables.
1.0.0-beta.1
- Initial beta release.
Installing
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add 'cli_pkg:1.5.0'pubspec.yaml
name: cli_pkg
version: 1.5.0
description: Grinder tasks for releasing Dart CLI packages.
homepage: https://github.com/google/dart_cli_pkg
environment:
sdk: '>=2.12.0 <3.0.0'
dependencies:
archive: ^3.1.2
async: ^2.5.0
charcode: ^1.2.0
collection: ^1.15.0
crypto: ^3.0.0
grinder: ^0.9.0
http: ^0.13.0
js: ^0.6.3
meta: ^1.3.0
node_interop: ^2.0.0
node_preamble: ^2.0.0
package_config: ^2.0.0
path: ^1.8.0
pub_semver: ^2.0.0
pubspec_parse: ^1.0.0
string_scanner: ^1.1.0
test: ^1.16.7
test_process: ^2.0.0
xml: ^5.0.2
yaml: ^3.1.0
dev_dependencies:
pedantic: ^1.11.0
sass_analysis:
git: {url: git://github.com/sass/dart-sass, path: analysis}
shelf: ^1.0.0
shelf_test_handler: ^2.0.0
test_descriptor: ^2.0.0
tuple: ^2.0.0-nullsafety.0
Version history
| Version | Published | Archive | SHA-256 |
|---|---|---|---|
| 1.0.0-beta.2 | Cached · Upstream SHA-256 matched | Download | ce218e80…7fc867 |
| 1.0.0-beta.3 | Cached · Upstream SHA-256 matched | Download | bfa61fea…c87c78 |
| 1.0.0-beta.4 | Cached · Upstream SHA-256 matched | Download | 7dd0266a…657eb3 |
| 1.0.0-beta.5 | Cached · Upstream SHA-256 matched | Download | 53510dc2…a2e51b |
| 1.0.0-beta.6 | Cached · Upstream SHA-256 matched | Download | e8573fab…2f3dd0 |
| 1.0.0-beta.7 | Cached · Upstream SHA-256 matched | Download | 89e777ba…86f978 |
| 1.0.0-beta.8 | Cached · Upstream SHA-256 matched | Download | 0dfbe276…97946f |
| 1.0.0-beta.9 | Cached · Upstream SHA-256 matched | Download | 4c62a40d…dfdf82 |
| 1.0.0-beta.10 | Cached · Upstream SHA-256 matched | Download | fdaeae3e…99032c |
| 1.0.0-beta.11 | Cached · Upstream SHA-256 matched | Download | 365d85d1…71dd5a |
| 1.0.0-beta.12 | Cached · Upstream SHA-256 matched | Download | ec4f07e8…1af778 |
| 1.0.0-beta.13 | Cached · Upstream SHA-256 matched | Download | 94411bc5…3f84f3 |
| 1.0.0 | Cached · Upstream SHA-256 matched | Download | f9e8b779…758012 |
| 1.1.0 | Cached · Upstream SHA-256 matched | Download | 5a6c78ff…a698b4 |
| 1.2.0 | Cached · Upstream SHA-256 matched | Download | bef986f7…7db570 |
| 1.3.0 | Cached · Upstream SHA-256 matched | Download | f44b1c73…5e751a |
| 1.4.0 | Cached · Upstream SHA-256 matched | Download | f876bd90…1c5a66 |
| 1.5.0 | Cached · Upstream SHA-256 matched | Download | 04269e8c…593dbe |
| 1.5.1 | Cached · Upstream SHA-256 matched | Download | 143760cc…150092 |
| 1.5.2 | Cached · Upstream SHA-256 matched | Download | 1f6b1b94…e2a45f |
| 1.6.0 | Cached · Upstream SHA-256 matched | Download | 44ec9ca4…2b89af |
| 1.7.0 | Cached · Upstream SHA-256 matched | Download | 9908fe47…32e197 |
| 2.0.0 | Cached · Upstream SHA-256 matched | Download | 55828d79…9331d8 |
| 2.0.1 | Cached · Upstream SHA-256 matched | Download | 6ac93874…a7480c |
| 2.0.2 | Cached · Upstream SHA-256 matched | Download | 4a748690…135d96 |
| 2.0.3 | Cached · Upstream SHA-256 matched | Download | d3c74b1c…9738ef |
| 2.1.0 | Cached · Upstream SHA-256 matched | Download | f37d7622…103efd |
| 2.1.1 | Cached · Upstream SHA-256 matched | Download | 21b8bc1e…da1695 |
| 2.1.2 | Cached · Upstream SHA-256 matched | Download | b9d1ea0c…584e35 |
| 2.1.3 | Cached · Upstream SHA-256 matched | Download | a97c5940…77724c |
| 2.1.4 | Cached · Upstream SHA-256 matched | Download | f592bed1…8192ff |
| 2.1.5 | Cached · Upstream SHA-256 matched | Download | 930de52b…b63c94 |
| 2.1.6 | Cached · Upstream SHA-256 matched | Download | b564e39e…1cbb96 |
| 2.1.7 | Cached · Upstream SHA-256 matched | Download | ca35fda7…e7600e |
| 2.1.8 | Cached · Upstream SHA-256 matched | Download | 0ff7d697…163063 |
| 2.1.9 | Cached · Upstream SHA-256 matched | Download | ca6d4a3b…83213f |
| 2.2.0 | Cached · Upstream SHA-256 matched | Download | 977b0a29…c85431 |
| 2.3.0 | Cached · Upstream SHA-256 matched | Download | fc862743…c50520 |
| 2.4.0 | Cached · Upstream SHA-256 matched | Download | 2f5bdb86…94b59b |
| 2.4.1 | Cached · Upstream SHA-256 matched | Download | 90b2e3bb…bd8d69 |
| 2.4.2 | Cached · Upstream SHA-256 matched | Download | 7ae1c54d…ca3efd |
| 2.4.3 | Cached · Upstream SHA-256 matched | Download | c5bae978…ac35e6 |
| 2.4.4 | Cached · Upstream SHA-256 matched | Download | 0f76b0ea…758517 |
| 2.4.5 | Cached · Upstream SHA-256 matched | Download | 023bcaf6…1ab6fa |
| 2.4.6 | Cached · Upstream SHA-256 matched | Download | ecf59d84…c7bf67 |
| 2.4.7 | Cached · Upstream SHA-256 matched | Download | 1057bab2…9b1836 |
| 2.5.0 | Cached · Upstream SHA-256 matched | Download | 009e1994…05c9b9 |
| 2.6.0 | Cached · Upstream SHA-256 matched | Download | d3649863…7cf111 |
| 2.7.0 | Cached · Upstream SHA-256 matched | Download | 716254ea…28f6ad |
| 2.7.1 | Cached · Upstream SHA-256 matched | Download | 5e9b44c5…fc0b8a |
| 2.7.2 | Cached · Upstream SHA-256 matched | Download | 7b088621…a7ce4a |
| 2.8.0 | Cached · Upstream SHA-256 matched | Download | be7f66d6…72100f |
| 2.8.1 | Cached · Upstream SHA-256 matched | Download | a4df039b…d9e03b |
| 2.9.0 | Cached · Upstream SHA-256 matched | Download | b15d9558…630a61 |
| 2.10.0 | Cached · Upstream SHA-256 matched | Download | f812467b…afdcf2 |
| 2.11.0 | Cached · Upstream SHA-256 matched | Download | f07db559…337dd4 |
| 2.12.0 | Cached · Upstream SHA-256 matched | Download | eeeea1e0…4c55b2 |
| 2.13.0 | Cached · Upstream SHA-256 matched | Download | 8d94c00e…f57d97 |
| 2.14.0 | Cached · Upstream SHA-256 matched | Download | da207d78…63f3a5 |
| 2.15.0 | Cached · Upstream SHA-256 matched | Download | bbffba71…a17190 |
| 2.15.1 | Cached · Upstream SHA-256 matched | Download | 8343ec3b…8b5150 |
| 2.15.2 | Cached · Upstream SHA-256 matched | Download | 1b3915a8…296af8 |
| 2.16.0 | Cached · Upstream SHA-256 matched | Download | 8a75add8…b8290a |
Dependencies
archive "^3.1.2"
async "^2.5.0"
charcode "^1.2.0"
collection "^1.15.0"
crypto "^3.0.0"
grinder "^0.9.0"
http "^0.13.0"
js "^0.6.3"
meta "^1.3.0"
node_interop "^2.0.0"
node_preamble "^2.0.0"
package_config "^2.0.0"
path "^1.8.0"
pub_semver "^2.0.0"
pubspec_parse "^1.0.0"
string_scanner "^1.1.0"
test "^1.16.7"
test_process "^2.0.0"
xml "^5.0.2"
yaml "^3.1.0"