Skip to main content

CLI tool for searching file in your PC

Project description

Sefile CLI

SEFILE_v1

Sefile CLI is a personal project created by Faisal Ramadhan or myself. This project was built using the Python programming language. At the time of its creation, this CLI was only useful for finding the desired file according to the initial directory, but over time I started adding several new commands, such as Create, Read, Write and Delete. All of these commands have their own purpose and function.

Installation

You can install this cli from https://pypi.org/project/new-sefile/ or you can just type in command into your terminal like below:

python3 -m pip install new-sefile

Enjoy your exploration on my CLI tool!

Warning This project does not support yet for Windows and Mac operating system.

Requirements

Each project must have additional modules or packages for ease of project creation. I myself use a lot of packages to make this CLI. The modules or packages list that I use is:

  • typing

[!NOTE] if you want more information about this library, see https://docs.python.org/3/library/typing.html

  • fnmatch

[!NOTE] if you want more information about this library, see https://docs.python.org/3/library/fnmatch.html

  • logging

[!NOTE] if you want more information about this library, see https://docs.python.org/3/howto/logging.html

  • os

Info: > if you want more information about this library, see https://docs.python.org/3/library/os.html

  • pathlib

[!NOTE] if you want more information about this library, see https://docs.python.org/3/library/pathlib.html

  • typer

Installation:

python -m pip install "typer[all]"

[!NOTE] if you want more information about this library, see https://typer.tiangolo.com/tutorial/first-steps/

  • rich

[!WARNING] If you do pip install "typer[all]" before, then you don't have to install the rich module.

Installation:

python -m pip install rich

[!NOTE] If you want more information about this library, see https://rich.readthedocs.io/en/stable/introduction.html

  • termcolor

Installation:

python -m pip install termcolor

[!NOTE] if you want more information about this library, see https://github.com/termcolor/termcolor

  • npyscreen

Installation:

python -m pip install npyscreen

[!NOTE] if you want more information about this library, see https://npyscreen.readthedocs.io/introduction.html

  • ascii-magic

Installation:

python -m pip install ascii-magic

[!NOTE] if you want more information about this library, see https://pypi.org/project/ascii-magic/

  • colorama

Installation:

python -m pip install colorama

[!NOTE] if you want more information about this library, see https://pypi.org/project/colorama/

  • Pillow

Installation:

python -m pip install Pillow

[!NOTE] if you want more information about this library, see https://pillow.readthedocs.io/en/stable/

  • art

Installation:

python -m pip install art

[!NOTE] if you want more information about this library, see https://www.ascii-art.site/

How to use it

It's quite easy, you just need to enter the command sefile --help, then you get the output like this:

Screenshot from 2023-09-25 18-04-19

[!NOTE] if you want more information about this library, see https://www.ascii-art.site/

How to use it

It's quite easy, you just need to enter the command python -m sefile --help, then you get the output like this:

How to show CLI version and information?

sefile --version

or

sefile -v

How to find a file?

sefile find <filename>

or

[!NOTE] You can specify the initial directory path to find the file you want.

sefile find <filename> <path>

At first I created this based only on the filename, but eventually I added new flag options, namely --startswith and --endswith.

  • --startswith flag is useful for searching files with your own custom prefix. Usage examples:

[!NOTE] --startswith flag has been set as is_eager=True, meaning this parameter will be executed and the main parameter will be overridden. Also, you need to input from what (path) you want to search file startswith (prefix).

sefile find --startswith main

When you do this, the system will automatically look for files with a certain (in this case main) prefix from each directory or sub-directory that matches the initial directory.

  • --endswith flag is useful for searching files with your own custome prefix. Usage examples:

[!NOTE] --endswith flag has been set as is_eager=True, meaning this parameter will be executed and the main parameter will be overridden.

sefile find --endswith .py

This flag has same functional as --startswith flag, but search file by the end name of the file that match with your custome prefix. Also, you need to input from what (path) you want to search file endswith (prefix).

[!NOTE] --lazy flag has been as is_eager=True, meaning this parameter will be executed and the main parameter will be overridden.

sefile find --lazy

This flag can be use if you to lazy to input CLI command. You only need to enter a special custom query, namely find from . This custom query has same functionality as sefile find command.

There are several input command you can do:

  • find (filename) from (path)

for Linux OS: find main.py from /home/(user)/Documents

for Windows OS: find main.py from C:\Directory\SubDirectory

  • find from (path) startswith (prefix)

for Linux OS: find file from /home/(user)/Documents startswith main

for Windows OS: find file from C:\Directory\SubDirectory startswith main

  • find from (path) like (prefix)

for Linux OS: find file from /home/(user)/Documents like test

for Windows OS: find file from C:\Directory\SubDirectory like test

NOTE: You can also do 'quit' or 'exit' custom query in input field. This situation will needed if you want to cancel the find activity. So it makes more flexible for you to use find command

How to create a file?

sefile create <filename>

[!NOTE] Default directory set as /home/username

or

sefile create <filename> <path>

The system will automatically create a file with a certain file type (according to the type you add at the end of the file) in the directory you enter.

[!NOTE] In newest update, there's one Options called --project. This useful for you if you too lazy for creating simple project. Remember this Options, will create Python, Javascript, or Go project, depends on your choice.

To run --project Options, you just simply write it in your terminal like this below:

sefile create --project

Screenshot from 2023-09-25 18-05-02

NOTE: You can do 'quit' or 'exit' command in input field. This command so useful if you are in the situation where you don't wanna input anything, or you do wrong input name in project name, or project directory, or when you choose the wrong project what you want to make.

In the newest update, i add another functionality for this create command. It's --write options. To using it, just simply type:

sefile create --write

Screenshot from 2023-09-25 18-05-15

It's automatically displaying Code Editor Interface in your terminal.

[!NOTE] you need specifiy the Filename and Path first, before you do code or creating text.

So this write command, doesn't need ARGS at all, you just input command in your terminal above, and you can do code in your terminal.

INFORMATION:

So if you notice, theres is 'EXIT' button and 'SAVE' button right? the functionality of these 2(two) button are same as 'EXIT' button and 'SAVE' button in your code editor.

You can exit whatever you want, but you can't save the code if you not input value in 'Filename' and 'Folder Path'. So be careful when you use this.

How to read a file?

sefile read <filename> <path>

or

  • --read-type flag is especially useful for reading files of a certain type. Default file typer set as text or .txt. Example of the output:

Example 1:

Do this command in your terminal:

sefile read <filename> <path> --format python 

And you get a result like this in your terminal (NOTE: This is just example)

# example.py

def my_func() -> None:
    print("Hello World!")

Example 2:

Do this command in terminal:

sefile read <filename> <path> --format go

And you get a result like this in your terminal (NOTE: This is just example)

// main.go

func playingPythagoras(altitude, base, hypotenus float64) {
	if altitude == 0.0 {
		formula := math.Pow(hypotenus, 2.0) - math.Pow(base, 2.0)
		fmt.Printf("altitude = %.1f² - %.1f²", hypotenus, base)
		fmt.Printf("Result = %.1f", math.Round(formula))
	} else if base == 0.0 {
		formula := math.Pow(hypotenus, 2.0) - math.Pow(altitude, 2.0)
		fmt.Printf("base = %.1f² - %.1f²", hypotenus, altitude)
		fmt.Printf("Result = %.1f", math.Round(formula))
	} else {
		formula := math.Pow(altitude, 2.0) + math.Pow(base, 2.0)
		fmt.Printf("hypotenus = %.1f² + %.1f²", altitude, base)
		fmt.Printf("\nResult = %.1f", math.Round(formula))
	}
}

[!NOTE] this is just an example, the output will vary depending on the type of file you entered and the program in the file you entered

If you want to add indent for read code, you just simply add --indent or -i, you can just type like:

sefile read <filename> <path> --format python --indent

If you want to change theme also want to add indent, you can just type like:

sefile read <filename> <path> --format python --indent --theme monokai

For list of all theme, you can type --help options, like this:

sefile read --help

How to rmeove a file?

sefile remove <path> <filename>

So you must input the path directory first then file that inside the directory.

In other hand, this command also has many options. The first one is --startswith or you just simpy type -s. To implement this command, you can type like:

sefile remove <path> --startswith <prefix>

[!NOTE] For --startswith and --endswith options, it must required a prefix that related into this two options. For example, if you want to search file startswith something (depends on what value you inputed), you must use --startswith, but if you want to search file format endswith, let's say .py, then you must use --endswith options.

The second options is --endswith or you just simply type -e. To implement this command, you can type like:

sefile remove <path> --endswith <prefix>

The last one is --subfolder or you just simply type -sf. This options has functionality to remove sub folder and it's content from path directory target. To implement this command, you can type like:

sefile remove <path> --subfolder

Keep in mind

This program is only useful for find, create, read, write and remove. Apart from that, I have nothing to add. I personally will only focus on the main command program, because there are still many things that can be updated in the future.

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

new-sefile-0.0.16.tar.gz (27.8 kB view details)

Uploaded Source

Built Distribution

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

new_sefile-0.0.16-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

Details for the file new-sefile-0.0.16.tar.gz.

File metadata

  • Download URL: new-sefile-0.0.16.tar.gz
  • Upload date:
  • Size: 27.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for new-sefile-0.0.16.tar.gz
Algorithm Hash digest
SHA256 3d18dc9f3f2a8b80c74ebcb24b38a487732a63dd7c5836c5798b3ea5e9a73b0c
MD5 4ea4ead18b82107b4e5d025979d07ace
BLAKE2b-256 97ecd30e2c0d22be271957a763295b8ec36be29cdf6e7f4de8dcb70afcfaf358

See more details on using hashes here.

File details

Details for the file new_sefile-0.0.16-py3-none-any.whl.

File metadata

  • Download URL: new_sefile-0.0.16-py3-none-any.whl
  • Upload date:
  • Size: 32.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for new_sefile-0.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 4570671f6fc93bbe687a118b45fd8f0cdf641c8e96f4d9ee10ed23adc3fe2c6d
MD5 3d510821d7de87fc56850d8ca7e41b7e
BLAKE2b-256 b7e52aa4018af89b7dae458fab51f566d5a4b4105053c73caecc0f932fcef2cd

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