Skip to main content

A lil' bud that helps you with stuff (it's a utility CLI).

Project description

🌸 Blossy CLI 🌸

A multiuse utility CLI tool developed using:

  • Python;
  • Typer: building the CLI;
  • Sly Lex Yacc: parsing text.

Features

  • Calculate the value of mathematical expressions (numbers and time)
  • Count the quantity of characters in a text file
  • Solve percentage equations
  • Generate random numbers
  • Stardardize the names of the files in a directory

How to Install

To install the CLI, you'll only need to have Python installed on your machine. Then, run the following command:

$ python3 -m pip install blossy

Behavior

Calculate

To calculate the value of a mathematical expression, use the calc command. It supports both numbers and time expressions. The following operators are supported:

  • (expr)
  • + expr
  • - expr
  • expr ^ expr
  • expr * expr
  • expr / expr
  • expr + expr
  • expr - expr

Number calculations:

$ blossy calc "2*3+4^6"
4102

Time calculations:

$ blossy calc "1:02:00 + 12:01*2"
1:26:02

You can use the --visualize flag to see the steps of the calculation, illustrated using postfix notation and a stack.

Example with numbers:

$ blossy calc "2*3+4^6" --visualize

$                                                          2 3 * 4 6 ^ +₂ $

> Stack 2

$ 2                                                          3 * 4 6 ^ +₂ $

> Stack 3

$ 2 3                                                          * 4 6 ^ +₂ $

> 2 * 3 = 6

$ 6                                                              4 6 ^ +₂ $

> Stack 4

$ 6 4                                                              6 ^ +₂ $

> Stack 6

$ 6 4 6                                                              ^ +₂ $

> 4^6 = 4096

$ 6 4096                                                               +₂ $

> 6 + 4096 = 4102

$ 4102                                                                    $

> The result is 4102

Example with time:

$ blossy calc "1:02:00 + 12:01*2" --visualize

$                                                    1:02:00 12:01 2 * +₂ $

> Stack 1:02:00

$ 1:02:00                                                    12:01 2 * +₂ $

> Stack 12:01

$ 1:02:00 12:01                                                    2 * +₂ $

> Stack 2

$ 1:02:00 12:01 2                                                    * +₂ $

> 12:01 * 2 = 0:24:02

$ 1:02:00 0:24:02                                                      +₂ $

> 1:02:00 + 0:24:02 = 1:26:02

$ 1:26:02                                                                 $

> The result is 1:26:02

Count Characters

To count the quantity of characters in a text file, use the countc command.

$ blossy countc file.txt 
Character count: 58

Full file:

Blossy is my favorite puppy.

Did somebody say meatloaf?


What is counted:

Blossy is my favorite puppy.

Did somebody say meatloaf?


You can use the --ignore-unnec flag to ignore unnecessary whitespaces. That way, a sequence of whitespaces will be counted as only one character, and trailing whitespaces will be completely ignored.

$ blossy countc file.txt --ignore-unnec
Character count: 55

Full file:

Blossy is my favorite puppy.

Did somebody say meatloaf?


What is counted:

Blossy is my favorite puppy. Did somebody say meatloaf?

You can also use the --ignore-ws flag to ignore all whitespaces.

$ blossy countc file.txt --ignore-ws
Character count: 47

Full file:

Blossy is my favorite puppy.

Did somebody say meatloaf?


What is counted:

Blossyismyfavoritepuppy.Didsomebodysaymeatloaf?

Count Lines

To count the quantity of lines in a code source file, use the calcl command.

$ blossy countl one_piece.py
Line count: 5

Full file:

import random

luffy_is_king_of_the_pirates = False

while not luffy_is_king_of_the_pirates:
    luffy_is_king_of_the_pirates = random.choice((True, False))

print("One Piece ended. Two Piece incoming...")

What is counted:

import random
luffy_is_king_of_the_pirates = False
while not luffy_is_king_of_the_pirates:
    luffy_is_king_of_the_pirates = random.choice((True, False))
print("One Piece ended. Two Piece incoming...")

You can use the --no-ignore-blank flag to count blank lines.

$ blossy countl one_piece.py --no-ignore-blank
Line count: 8

Full file:

import random

luffy_is_king_of_the_pirates = False

while not luffy_is_king_of_the_pirates:
    luffy_is_king_of_the_pirates = random.choice((True, False))

print("One Piece ended. Two Piece incoming...")

What is counted:

import random

luffy_is_king_of_the_pirates = False

while not luffy_is_king_of_the_pirates:
    luffy_is_king_of_the_pirates = random.choice((True, False))

print("One Piece ended. Two Piece incoming...")

Percentage

To solve percentage equations, use the perc command. This command uses the formula ratio = part/whole.

$ blossy perc --whole 100 --ratio 0.25
Part: 25.0
$ blossy perc --whole 100 --part 25
Ratio: 0.25

Random

To generate a random number between two given values (inclusive), use the rand command.

$ blossy rand 1 10
2

You can specify the quantity of random numbers that'll be generated (the default is 1):

$ blossy rand 1 10 --quantity 5
2 7 1 5 1

Standardize

To rename the files in a directory, using the format {prefix}-{id}, use the stddz command. Here's an example of how to use the command:

$ blossy stddz my-johnson nice-folder/
nice-folder/
├── my-johnson-000.png
├── my-johnson-001.png
├── my-johnson-002.png
└── my-johnson-003.png

You can use the flag --start to specify the starting number for the IDs:

$ blossy stddz my-johnson nice-folder/ --start 10
nice-folder/
├── my-johnson-010.png
├── my-johnson-011.png
├── my-johnson-012.png
└── my-johnson-013.png

You can also use the flag --digits to specify the quantity of digits that'll be used to represent the IDs (the default is 3):

$ blossy stddz my-johnson nice-folder/ --digits 2
nice-folder/
├── my-johnson-00.png
├── my-johnson-01.png
├── my-johnson-02.png
└── my-johnson-03.png

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blossy-7.0.3.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blossy-7.0.3-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file blossy-7.0.3.tar.gz.

File metadata

  • Download URL: blossy-7.0.3.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.0 CPython/3.13.7 Linux/6.6.87.2-microsoft-standard-WSL2

File hashes

Hashes for blossy-7.0.3.tar.gz
Algorithm Hash digest
SHA256 767d1e56ba2be523b190ed0b37eab7df01efdf1ba2ad6544a0f21dfb56345ca2
MD5 706586b5da133c34fb599098085d35a7
BLAKE2b-256 a3f27e19a6e2a8951f370f7f746fea426861cf17bdae5f9a95ed5b7f620eb46a

See more details on using hashes here.

File details

Details for the file blossy-7.0.3-py3-none-any.whl.

File metadata

  • Download URL: blossy-7.0.3-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.0 CPython/3.13.7 Linux/6.6.87.2-microsoft-standard-WSL2

File hashes

Hashes for blossy-7.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6c75cc315bcd2bf6f92358b3f79ddaf77b1f51eb6ae2c8d25314c89e4fba8d06
MD5 1613dce91ba8e247cee8504c00fd08e1
BLAKE2b-256 71854e16e2bc6707d7a0fc8a0881ef6e04ba86950c7cd6b35a2f6564dc10e48d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page