sip_cli 0.19.0
sip_cli: ^0.19.0 copied to clipboard
Manage mono-repos with `sip`, run scripts and get dependencies concurrently.
0.19.0 | 8.13.2026 #
Features #
- Add
sip validate, which checksscripts.yamlwithout running anything and reports each problem against the line it was written on. It catches unresolvable references, malformed substitutions (${{ a:b }}, which sip passes to the shell verbatim), circular references, invalid script names, aliases claimed twice, keys that look reserved but are not, a valueless(bail)that reads asfalse, and scripts with nothing to run. Errors exit78;--fatal-warningsmakes warnings do the same.--jsongives every diagnostic a stable code and location. - Add
--jsontosip list, printing every script as a flat list: its dotted key, the path to pass tosip run, aliases, description, private and runnable flags, bail, the raw commands as written, the fully resolved commands with their concurrency, env, and thescripts.yamlline and column it was declared on.--no-resolveskips expansion, and a query still filters the listing. - Add
--jsontosip run <script> --print, emitting the resolved commands for a single script. - Add
--jsontosip test, reporting counts and the file, test name and message for each failure. Failures that are not test failures -- a compile error, a crashed runner, output sip could not parse -- are reported separately, so an empty failure list does not read as a passing run. - Add
sip mcp, which runs sip as an MCP server over stdio and exposes this project's scripts to an AI coding assistant as tools:list_scripts,dry_run,run_scriptandvalidate.run_scripttakes a script name, never a command, so it cannot run anything not declared inscripts.yaml. - Add
sip ai agents, which writesAGENTS.md-- the convention Codex, Cursor, Copilot, Zed and Amp read.sip ai allincludes it.
Enhancements #
- sip no longer forces ANSI colour on. Output is plain when stdout is not a terminal, so piping
sip listno longer hands the reader a tree full of escape codes.--color/--no-color,NO_COLOR,FORCE_COLORandTERM=dumboverride the guess. - The "a new version is available" notice moved to stderr and is skipped entirely, along with its network request, when stdout is not a terminal. Previously it went to stdout on every command -- for a failed run it was the only thing on stdout.
--no-version-checkandSIP_NO_VERSION_CHECKalso turn it off.
0.18.10 | 8.11.2026 #
Fixes #
- Fix flags that take no value swallowing the argument that follows them.
sip test --omit-errors test/a_test.dart test/b_test.dartset--omit-errorstotest/a_test.dartand dropped that file from the run, and when only one path followed the flag, the run fell back to testing the entire package. Every flag sip reads as a boolean is now parsed as such and leaves the following argument alone. Flags sip doesn't know about still take a value, so unknowndart test/flutter testoptions are forwarded as before. The same fix applies to boolean abbreviations (-b,-d,-l,-r), which also fixessip pub upgrade --tighten <package>andsip pub constrain -d <package>losing their first package name.
0.18.9 | 7.30.2026 #
Enhancements #
- Experimental, opt-in: Add
--experimental-buckettosip testfor Flutter packages, combining test files into ~CPU-core-count generated bucket files (dispatched as oneflutter testinvocation per shard) to cut per-file VM-isolate startup overhead, the same idea as the existing Dart-only test optimizer. Files that can't be safely combined (unsafeTestWidgetsFlutterBindingsubtypes, or test-surface mutation without a reset) always run in their own isolated wrapper, never sharing an isolate with anything else. If a bucket's combined run looks untrustworthy (a compile error or a hard binding assertion cuts it short, so one of its files never reports a result), just that bucket's original files are automatically discarded and re-run individually, logged clearly, while every other healthy bucket sharing the same invocation is left untouched. This covers the two known combining hazards, but not arbitrary global test-state leakage (e.g. an unreset image cache) between files sharing an isolate -- that class of bug can't be caught by a static check or the runtime fallback, so treat a bucketed run as a strong signal, not an absolute guarantee of unbucketed-equivalent results. Also adds--bucket-count,--bucket-shard-index, and--bucket-shard-countfor splitting buckets across CI matrix jobs. Off by default; Dart packages and existing behavior are completely unaffected.
0.18.7 | 4.14.2026 #
Fixes #
- Fix issue where running multiple concurrent commands would hang indefinitely
- Thanks for your contribution @supposedlysam
0.18.5 | 2.6.2026 #
Enhancements #
- Improve test output formatting when using
--omit-errorsflag to show formatted path and test description with colors - Use same simple path | test format (without truncation) for failing tests when
--omit-errorsis not enabled, while still showing error output
0.18.4 | 2.3.2026 #
Fixes #
- Fix display path in test output to show the correct path when running
sip test <path>instead of always showing./. - Fix display path to show
.when runningsip testwith no arguments or with.argument - Fix test output to wrap text correctly when the terminal width is smaller than the text length
Enhancements #
- When
.,test, or no path argument is provided tosip test, run the test command without forwarding all test directories (e.g.,flutter testinstead offlutter test test/utils test/other)
0.18.2 | 12.16.2025 #
Fixes #
- Issue where exception was thrown when no pubspec.yaml file was found while trying to resolve variables
0.18.0 | 11.14.2025 #
Breaking Changes #
- Remove
test watchcommand - Deprecate
{$path:...}and{--flag}syntax for referencing scripts- This will be removed in the next major version
- Prefer to use
${{ path.script_name }}and${{ --flag }}syntax instead
Fixes #
- Adds check & exit for when dart compiler exits unexpectedly
- Adds listener & register for when the process is interrupted
- Handles cleaning up resources
Enhancements #
- Formatting output for tests
- Add more detailed logs when running with
--loudflag - Update dependencies
- Improve test output formatting
- Improve script output formatting
Features #
- Support
--bailfor flutter tests - Add
--sliceflag for flutter tests- Separates test directories into chuncks to run them concurrently, useful for large test suites and decreasing the time to run tests
- Add analytics lukehog
- Pass
--helpflag withinsip run <path>to print the usage information for the script - Reformat test output on CI
0.17.15 | 6.5.2025 #
0.17.11 | 5.5.2025 #
0.17.9 | 5.2.2025 #
Enhancements #
- Add env variables to
envafter sourcing the env file - Improve test output formatting
0.17.6 | 4.19.2025 #
Enhancements #
- Always show the cursor when the process is interrupted
- Sometimes the cursor would not be visible when the process was interrupted and the cursor would remain hidden
0.17.5 | 4.12.2025 #
Fixes #
- Issue where a reference command that contains concurrency would loop indefinitely
0.17.3 | 4.5.2025 #
Fixes #
- Issue where a command following a non-concurrent command would be skipped
0.17.2 | 4.3.2025 #
0.16.3 | 3.26.2025 #
0.16.2 | 3.21.2025 #
Enhancements #
- When running pub commands, ignore pubspecs within directories that start with a dot
- Add working directory to error output
- Add index of command to error output
0.16.1 | 3.11.2025 #
Fixes #
- Issue where concurrency commands could run sequentially, unintentionally
0.16.0 | 3.10.2025 #
Features #
- Scope concurrency to original scripts
- Add listener to watch for SIGINT signal to stop the process
0.15.2 | 3.4.2025 #
Fix #
- Fix issue where test directories were not identified correctly when parent directory starts with
test
0.15.1 | 2.24.2025 #
Features #
-
Add executables to variables to be used in commands
(executables): flutter: fvm flutter dart: fvm dart build_runner: "{dart} run build_runner build"
0.15.0 | 2.22.2025 #
Features #
- Add support to
sip pub constraincommand to constrain specific packages to a specific version - Add support to
sip pub constraincommand to unpin (--no-pin)- e.g.
provider: 5.0.0will be unpinned to^5.0.0
- e.g.
0.14.5 | 1.17.2025 #
Features #
- Flutter tests respect the
--bailflag duringsip testcommand- If a test fails, the command will stop running tests and exit with a non-zero exit code
0.14.2 | 1.3.2025 #
Enhancements #
- Improve the output when running flutter tests
- Improve the output when running dart tests
0.14.1 | 12.17.2024 #
Features #
- Override
dartandflutterexecutable by using(executables)within the `scripts.yaml file
(executables):
dart: fvm dart
flutter: fvm flutter
Enhancements #
- Ignore build and dart tool directories when running pub commands
Fixes #
- Check for empty tests when no dart/flutter tests are found when targeting dart/flutter tests only
0.13.6 | 11.29.2024 #
Fixes #
- Bug where env reference commands may not be resolved
- Bug that did not remove concurrency symbols from env file commands
0.13.5 | 11.22.2024 #
Features #
- Check for dependencies when running
sip pub upgrade <packages>- If the package is not found in the
pubspec.yamlfile, thatpubspec.yamlfile will be skipped
- If the package is not found in the
0.13.4+1 | 11.22.2024 #
Features #
- Pin versions of packages by providing the
--pinflag to theconstraincommand- e.g.
sip pub constrain --pinwill pin all packages to their current versions
- e.g.
0.13.3 | 11.21.2024 #
Features #
- Constrain certain packages by providing their package names to the
constraincommand- e.g.
sip pub constrain analyzer testwill constrain only theanalyzerandtestpackages
- e.g.
0.13.2 | 11.21.2024 #
Features #
- Support querying scripts from
sip list- Usage:
sip list [query] [arguments] - Searches for
- Script keys that contain the query string
- Aliases that match the query string
- Descriptions that contain the query string
- Usage:
0.13.0 | 11.20.2024 #
Features #
- Pass packages to
sip pub upgradewhen provided- e.g.
sip pub upgrade analyzer testwill run<dart|flutter> pub upgrade analyzer test
- e.g.
- Create new
sip pub constraincommand- Constrains all dependency versions in the
pubspec.yamlfile
- Constrains all dependency versions in the
- Create new
sip pub depscommand- Lists all dependencies in the
pubspec.yamlfile by running<dart|flutter> pub deps
- Lists all dependencies in the
- Add
--unlock-transitiveflag tosip pub upgradecommand- This will unlock all transitive dependencies when upgrading packages
- Create new
sip pub downgradecommand- Downgrades all dependencies in the
pubspec.yamlfile by running<dart|flutter> pub downgrade
- Downgrades all dependencies in the
Enhancements #
- Always include a space after the label when running scripts concurrently to format the output better
0.12.0+3 | 10/30/2024 #
Features #
- Run all Env commands at the start of all scripts
- Skips this when there are no env commands to run
- Update check that the file to the env exists before running the command
- Exits with 1 if the file does not exist
- Skip test directories that have no files to test when optimizing tests
0.10.0 | 9/25/2024 #
Features #
- Search for barrel file to include in optimized test files
- This is to better support coverage reports
- By including this import statement, files without tests will be included in the coverage report
- The barrel file must be named after the project directory or package name and reside in the
libdirectory- eg.
domain/lib/domain.dartorlib/my_package.dart
- eg.
0.9.1 | 9/11/2024 #
0.8.2 | 7/26/2024 #
Features #
-
Support multiple env files
my-script: (command): echo $MY_ENV_VAR (env): - .env - .env.local
0.8.1 | 7/26/2024 #
Features #
-
Support env files for scripts
my-script: (command): echo $MY_ENV_VAR (env): .env
0.7.1 | 6/7/2024 #
0.7.0 | 6/7/2024 #
Breaking Changes #
- Revert change to run dart and flutter commands separately
- To continue running dart and flutter commands separately, use the
--separatedflag
- To continue running dart and flutter commands separately, use the
0.6.1 | 6/3/2024 #
Fixes #
- Issue where exception was thrown if
bailflag was not defined inArgParser
0.6.0 | 5/8/2024 #
Features #
-
Support running specific tests by providing a test file or directory
sip test ./test/my_test.dartsip test ./test
-
Create new
cleancommand- Removes all
.dart_toolandbuilddirectories in dart & flutter packages - Run
flutter cleanin flutter packages
- Removes all
-
Increase retry time frame from 2s to 4s for
flutter pub getcommand
0.5.0 | 5/1/2024 #
Breaking Changes #
- Add
--no-pubwhen testing Flutter packages
Enhancements #
- Update copy when testing packages to
- Display Flutter test type
- Display args
- Update colors for better readability
Features #
- Speed up getting dependencies via an internal auto-retry mechanism
- For whatever reason, dart/flutter will hang after dependencies are retrieved for a lengthy amount of time. SIP_CLI will now auto-retry if the
pub getcommand has been running for too long
- For whatever reason, dart/flutter will hang after dependencies are retrieved for a lengthy amount of time. SIP_CLI will now auto-retry if the
0.4.6 | 4/11/2024 #
- Downgrade args dependency to <2.5.0
0.4.5 | 4/10/2024 #
Features #
- Support different flutter test types to avoid clashing during tests
TestWidgetsFlutterBinding,AutomatedTestWidgetsFlutterBinding,LiveTestWidgetsFlutterBindingcan be used to specify the types of tests to run and CANNOT be used together- SIP_CLI will create a new test file for each type of test to avoid clashing
0.4.4 | 3/25/2024 #
Fixes #
- Fix issue where tests were not run without passing an argument to the
sip testcommand
0.4.2 | 3/15/2024 #
Fixes #
- Create alternative flags for the
--coverageflags as they exist in both flutter and dart but accept different arguments--coveragefor dart is changed to--dart-coverage--coveragefor flutter is changed to--flutter-coverage
Features #
- Support running pub commands for dart or flutter packages only
- If the
--coverageflag is provided in thesip testcommand, default values will be provided to dart and flutter- Dart: Coverage is enabled and sets the coverage directory to
coverage - Flutter: coverage is enabled
- Dart: Coverage is enabled and sets the coverage directory to
- Add
--ignore-lockfile-exitflag tosip pub getcommand- When using
--enforce-lockfile, if the lockfile is not up to date, the command will exit with a non-zero exit code. When using--ignore-lockfile-exit, the command ignore the non-zero exit. Even if the lockfile is not up to date, the dependencies will still be retrieved.
- When using
Enhancements #
- Update copy for the
--version-checkflag
0.4.0 | 3/12/2024 #
Breaking Changes #
- Rename
.optimized_test.dartto.test_optimizer.dart- Helps avoid unintentionally running optimized tests
- Rename
--runto--scopefor thesip test watchcommand - Rename
packagetoactivefor improved comprehension regarding the test scope for thesip test watchcommand
Features #
- Create a new command to clean up optimized test files
sip test clean
Enhancements #
- Wait for a max of 1 second to check for the latest version for
sip_cli
0.3.0 | 3/12/2024 #
0.2.4 | 3/8/2024 #
0.2.3+1 | 3/8/2024 #
Fix #
- Fix issue where
--no-optimizeran each test file individually - Fix stopwatch stamp formatting
0.2.2 | 3/8/2024 #
0.2.1 | 3/7/2024 #
Enhancements #
- Print first line of command before executing when running scripts non-concurrently
0.2.0+1 | 3/7/2024 #
Breaking Change #
- Remove
--disable-concurrencyin the sip run command- in favor of
--no-concurrentflag - This is in efforts to keep the flag names consistent
- in favor of
- Dropping use of
sip_consolein favor ofmason_logger
Features #
- Update logging to be more consistent
- Add stopwatch to print statements
- Handle non-null non-string values in script definitions
- ints & bools for example
- Maps are not supported however
Enhancements #
- Use stream controller instead of
Future.waitto run concurrent commands- Better control over commands
- The ability to bail faster on failure
- Drop use of get_it for dependency injection
- This was overkill 😅
- Ensure that script exists before running with
--never-exitflag
0.1.2+1 | 3/6/2024 #
Features #
- Add
--never-exitflag tosip runcommand- This will prevent the command from ever exiting, even if a command fails
- This is useful for running a command that will be restarted by another process
- For example, build_runner will stop running whenever the project's dependencies change
- Please use with Caution! There is a second delay between each command run to prevent a runaway process
- The process can be stopped by pressing
ctrl+c
0.1.1 | 3/5/2024 #
Enhancements #
- Add very_good_analysis for linting
- Fix lint warnings
- Restructure Readme
0.1.0 | 3/4/2024 #
Breaking Changes #
- Remove
run-manycommand- Use
runwith the--concurrentflag instead
- Use
Features #
- Add
--concurrentflag toruncommand- This will run all scripts in parallel, regardless of the concurrent symbol defined within the script
- Add
--disable-concurrencyflag toruncommand- This will run all scripts in serial, regardless of the concurrent symbol defined within the script
- Add
sip testcommand- Runs projects tests
- Can recursively search for
testdirectories - Can run concurrent tests
- Passes most dart & flutter args to the
testcommand
- Can recursively search for
- Runs projects tests
Enhancements #
- Speed up recursive search for sub-packages using
glob - Update README
- To include new
testcommand - To remove
run-manycommand - Spelling and grammar updates
- To include new
- Better handle dependency injection
Fixes #
- Fix issue where
--helpwas not printing for theruncommand
0.0.17 | 2/13/2024 #
0.0.16 | 2/13/2024 #
Features #
- Add parsing support for chained short flags (
sip run my-script -abc)
0.0.13 | 2/12/2024 #
Features #
- Allow any args to be provided in any order without the requirement of
--before any "extra" args.- Before:
sip run-many my-script -- --arg1 --arg2 - After :
sip run-many my-script --arg1 --arg2
- Before:
0.0.10 | 2/12/2024 #
0.0.9 | 2/10/2024 #
0.0.8 | 2/9/2024 #
Fixes #
- Fix issue where bail was not being respected and failing commands were not stopping the script
0.0.5 | 2/9/2024 #
Features #
- Support individual concurrent commands with
(+) - Support defining variables in
scripts.yamlto use in commands - Support defining private scripts in
scripts.yamlto use as references - Add alias for
run-manycommand (r-m,run-m)
Enhancements #
- Tighten key pattern matching
- Improve color output when listing scripts, lighten color for scripts without a command definition
Fixes #
- Handle
nullscripts
0.0.4 | 2/9/2024 #
- Add version constraints to dependencies to support adding
sip_clito flutter projects
0.0.3 | 1/30/2024 #
- Initial Release