Video Demo: https://youtu.be/THzJUZlqiI0x
My final project for CS50P: "CS50 Introduction to Programming with Python".
This tool meant to facilitate the interaction with the system PATH environment variable (Linux BASH shell only).
- To get the work done correctly do the following:
- Read the 'help' instruction well
- Be careful about the paths you input (with some options)
- Separate between multiple paths with a single colon ':'
NOTE: This program saves the new modified PATH value in '/.bash_profile' file,
and if this file not exists creates a new one,
and eventually source the '/.bashrc' and '~/.profile' if any of them exists.
project.py [-h] [-s] [-e] [-a] [-p] [-d] [-q] [--remove-all-paths] [-v]
- -h, --help
- show this help message and exit
- -s, --show
- shows the current value of the 'PATH' (default)
- -e, --eliminate-duplicates
- eliminates any duplicates in the value of the 'PATH' (Included with any modifications)
- -a , --append
- appends any number of paths to the current value of the 'PATH' (which are must be given as a single string separated with ':' between every two paths and without any spaces)
- -p , --push
- pushes any number of paths at the beginning of the current value of 'PATH' (which are must be given as a single string separated with ':' between every two paths and without any spaces)
- -d , --delete
- deletes from 'PATH' any number of paths (which are must be given as a single string separated with ':' between every two paths and without any spaces)
- -q , --query
- checks whether the given path is in the current 'PATH'
- --remove-all-paths
- removes all paths in the current 'PATH' (NOT RECOMMENDED)
- -v, --version
- show program version number and exit
The entire program is designed using the Functional Programming Paradigm and all application logic included in one file: 'project.py'.
Adding CL arguments to and ArgumentParser object
Manipulate the inputted ArgumentParser object by adding the needed command line arguments to it with all the specifications for each of the arguments (i.e. argument name, action, help, …).
-
Parameters
parser_obj (argparse.ArgumentParser) – parser object for parsing the command line arguments
-
Returns
None
-
Return type
None
A simple function to get the current PATH
Get the current PATH environment variable using the command meant for that depending on the kind of the operating system that pathvar running on.
-
Returns
The value of the PATH variable
-
Return type
str
Check whether the ‘given_path’ is in ‘current_path’
Return True if the ‘given_path’ is in ‘current_path’ Otherwise, return false.
-
Parameters
-
current_path (str) – The value inside the PATH environment variable
-
given_paths (str) – The paths that the user want it to be deleted
-
-
Returns
True/False, based on whether the ‘given_path’ is in ‘current_path’
-
Return type
bool
pathvar main function
The Logic of the entire ‘pathvar’ program.
-
Returns
Nothing, just execute the logic of the entire program.
-
Return type
None
Parsing the command line arguments
Using ‘argparse’ library this function will consume an ‘ArgumentParser’ object in order to parse the arguments and handle the chosen option/s.
-
Parameters
parser_obj (argparse.ArgumentParser) – parser object for parsing the command line arguments
-
Returns
None
-
Return type
None
Remove any duplicates in a PATH variable
This function removes any duplicated paths from a PATH variable. It looks for duplicated paths.
-
Parameters
s (str) – The value of the PATH environment variable
-
Returns
The same input of the PATH value without any duplicates
-
Return type
str
Delete the given path/s from the current PATH
return copy of the ‘current_path’ without and value included in the ‘given_paths’
-
Parameters
-
current_path (str) – The value inside the PATH environment variable
-
given_paths (str) – The paths that the user want it to be deleted
-
-
Returns
A copy from the current path without any given path
-
Return type
str
Print message to the user
This function will print a message to the user in form of message title and message body
-
Parameters
-
title (str) – The title of the message
-
msg (str) – The body of the message
-
-
Returns
Nothing, just the print side effect
-
Return type
None
Run a given command in subprocess
Run the given command in subprocess and print and ‘stdout’ or ‘stderr’
-
Parameters
cmd (str) – Command to run
Run a command to update the PATH variable
Run the needed commands for updating the PATH environment variable based on the current operating system and print any ‘stdout’ or ‘stderr’
-
Parameters
new_path_value (str) – The new value in order to set the PATH variable to it