Git Product home page Git Product logo

swordfish-rs's Introduction

swordfish-rs

Typing effect cli tool for screencasts and demos

Crates.io Crates.io

  1. ๐Ÿ’ฌ Describe what you are doing
  2. โšก๏ธ Run any terminal command and get their outputs to screen
  3. ๐Ÿค– Reproducible steps - iterate on the screenplay file till perfection
  4. ๐Ÿ˜Ž Mimics real person behavior with realtime typing into terminal

Swordfish hack scene

Demo

Example screenplay.yaml file:

- !clear
# - !turbo {by: 3}
- !write {msec: 0, color: green, text:  "$ "}
- !write {msec: 20, text:    "i am going to list this dir"}
- !wait {msec: 1000}
- !erase {msec: 20, by_chars: xxxxxxxxxxxxxxxxxxxxxxxxxxx }
- !wait {msec: 1000}
- !write {msec: 20, text: ls}
- !wait {msec: 1000}
- !execute {line: ls -la}
- !wait {msec: 3000}
- !write {msec: 1000, color: green, text:  "$ "}
- !write {msec: 20, text: "bye, press any key..."}
- !pause

Running swordfish screenplay.yaml:

demo

Quick start

  1. Install:
cargo install swordfish-rs

Requires Rust on your machine, get it from https://rustup.rs

or download a binary

  1. Create this getting started screenplay file as getting_started.yaml:
- !clear
- !prompt {color: green, text:  "$"}
- !write {msec: 20, text: "swordfish reads screenplay files, in yaml format"}
- !wait {msec: 2000}
- !erase {msec: 20, amount: 1000 }
- !wait {msec: 1000}
- !write {msec: 20, text: "it contains a list of commands, each command can have parameters that control it"}
- !wait {msec: 2000}
- !new_line
- !write {msec: 20, text: "that's it"}
- !new_line
  1. Run swordfish
swordfish getting_started.yaml

Commands

The following commands are available, written with ! before the command name, for example !clear.

clear

Clear screen command.

erase

Erase characters to the left.

Argument Type Description
amount (optional) String the amount of backspaces
by_chars (optional) String the amount of backspace is determined by the length of the provided text
msec Integer delay between individual backspaces in millisecs

Use either amount or by_chars or both.

execute

Execute shell commands or other applications and show their output.

Argument Type Description
line String command line to execute, respects quoted arguments

The output is presented, while the executed command itself will not show.

new_line

Simulate user's ENTER.

pause

Pause before next command and wait for user input (any key...)

prompt

Prompt specify a constant text that is shown after every execute and cis not affected by erase.

Argument Type Description
text String the prompt text
color (optional) String text's color: black, red, green, yellow, blue, magenta, cyan, white or a brighter variant, for example bright_red

title

Sets the terminal window title.

Argument Type Description
text String the text to use for the terminal window title

turbo

Speed everything, useful when iterating over the screenplay.

Argument Type Description
by Integer Speed everything by this factor

wait

Pauses execution for the specified time, then contrinues.

Argument Type Description
msec Integer delay before next command in millisecs

write

Write text to the terminal.

Argument Type Description
text String the text to type in the terminal, each character will be entered one by one with some delay
msec Integer delay between typed chars in millisecs
color (optional) String text's color: black, red, green, yellow, blue, magenta, cyan, white or a brighter variant, for example bright_red

swordfish-rs's People

Contributors

juanbono avatar vim-zz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.