rps 0.7.0 icon indicating copy to clipboard operation
rps: ^0.7.0 copied to clipboard

rps (Run Pubspec Script) allows you to define and run scripts from pubspec.yaml.

Run Pubspec Script (RPS) #

RPS is a dart script manager that allows you to define and use scripts from the pubspec.yaml file.

Features #

Quick start 🚀 #

  1. Install this package.

    dart pub global activate rps --version 0.7.0-dev.6
  2. Define scripts inside the pubspec.yaml

      gen: flutter pub run build_runner build --delete-conflicting-outputs
  3. Use your custom command.

    rps gen
    # you can also provide additional arguments
    rps gen --verbose
  4. Safe a time and become a power user! 😈

    Less time typing long commands more time watching funny cats. 🐈

Features #

🪆 Nesting #

Nest your commands to group them contextually and make them easier to understand.

    web: flutter build web --flavor production -t lib/main.dart
      apk: flutter build apk --flavor production -t lib/main.dart
      appbundle: flutter build appbundle --flavor production -t lib/main.dart
      ipa: flutter build ipa --flavor production -t lib/main.dart
      ios: flutter build ios --flavor production -t lib/main.dart

Use with ease 😏

rps build android apk

🔗 References #

Sometimes you may want to create a command alias (e.g. a shorter version of it) or simply pass the execution of a hook to another command. This is where references come to the rescue! ⛑

References are defined as a scripts that must begin with $ sign.

    build: flutter pub run build_runner build --delete-conflicting-outputs
    watch: flutter pub run build_runner watch --delete-conflicting-outputs
  # short aliases:
  gb: $generator build # same as "rps run generator build"
  gw: $generator watch # same as "rps run generator watch"

References can also be used with $before and $after hooks.

🪝 Hooks #

To enable hooks define the $before and/or $after keys for your script command.

    $before: echo "hello before" # executed before the $script
    $script: echo "hello script"
    $after: echo "hello after" # executed after $script

All hooks will be executed in the specified order when calling the rps hello command.

You can also combine multiple scripts using references!

  get: flutter pub get
    # equivalent of "rps run get"
    $before: $get
    $script: flutter test
    # equivalent of "rps run test"
    $before: $test
    $script: flutter build apk

You can also nest hooks to provide an easy-to-read workflow for all grouped commands!

# Order when executing: "rps generator build"
    $before: dart pub get # 1.
    $after: dart analyze # 5.
      $before: echo "Building JSON models..." # 2.
      $script: dart pub run build_runner build # 3.
      $after: echo "JSON models built successfully..." # 4.

You don't have to worry about cyclic references 🔄, RPS will keep track of them and notify you in case of a problem 😏.

💻 Platform specific scripts #

Do you work on multiple platforms? Need to use many different commands and always forget which one to use? This is what you've been waiting for! 🛠

Just use one command on all supported platforms 💪.

      $windows: echo "You are on Windows!"
      $linux: echo "You are on Linux!"
      $macos: echo "You are on MacOs!"
      $default: echo "You are on... something else?"
user@MacBook-Pro Desktop % rps where-am-i
> where-am-i
$ echo "You are on MacOs!"

You are on MacOs!

This can be useful for commands like rm -rf, which in Windows.... rd /s /q, you know what I mean, it can be helpful, right?

🔎 Overview example #

name: my_great_app
version: 1.0.0

  # run is a default script. To use it, simply type
  # in the command line: "rps" - that's all!
  run: "flutter run -t lib/main_development.dart --flavor development"
  # you can define more commands like this: "rps gen"
  gen: "flutter pub run build_runner watch --delete-conflicting-outputs"
  # and even nest them!
    # You can use hooks to! (and even nest them!)
    $before: flutter pub get
    $after: echo "Build done!"
      # rps build android apk
        $before: echo "Building android apk..."
        $script: "flutter build --release apk --flavor production"
      # rps build android appbundle
      appbundle: "flutter build --release appbundle --flavor production"
      # and so on...
  # too long command? no problem! define alias using reference syntax!
  bab: $build android appbundle
  # as simple as typing "rps baa"
  baa: $build android apk
  # some commands may vary from platform to platform
  # but that's not a problem
    # use the $script key to define platform specific scripts
      # define the default script
      $default: rm -rf ./app/cache
      # And different script for the windows platform.
      $windows: rd /s /q app\cache
      # now "rps clear" will work on any platform!

  # the rest of your pubspec file...
  path: ^1.7.0

📈 Motivation #

I got bored of typing the same long commands over and over again... I even got bored of pressing that boring (and even small on a MacBook) up arrow key to find my previous command in history. So, as befits a programmer, to save time, I spent more time writing this library than searching/writing commands for the last year...


Hey you! This package is still in development (errors and API changes can still occur 🐛😏).

pub points


verified publisher iconklyta.it

rps (Run Pubspec Script) allows you to define and run scripts from pubspec.yaml.

Repository (GitHub)
View/report issues


API reference


Icon for licenses.MIT (LICENSE)


ffi, path, yaml


Packages that depend on rps