Skip to content

Instantly share code, notes, and snippets.

@akishore15
Created February 18, 2025 00:40
Show Gist options
  • Save akishore15/d3505f116320e34dab4a12fa6598f5fc to your computer and use it in GitHub Desktop.
Save akishore15/d3505f116320e34dab4a12fa6598f5fc to your computer and use it in GitHub Desktop.
Open-source package manager in Python
import subprocess
import sys
import os
# Global buffer to store code snippets
snippet_buffer = {}
def install_package(package_name):
try:
subprocess.check_call([sys.executable, "-m", "pip", "install", package_name])
print(f"Successfully installed {package_name}")
except subprocess.CalledProcessError as e:
print(f"Error installing package {package_name}: {e}")
def uninstall_package(package_name):
try:
subprocess.check_call([sys.executable, "-m", "pip", "uninstall", "-y", package_name])
print(f"Successfully uninstalled {package_name}")
except subprocess.CalledProcessError as e:
print(f"Error uninstalling package {package_name}: {e}")
def add_snippet_from_file(snippet_name, file_name):
if os.path.isfile(file_name):
with open(file_name, 'r') as file:
code = file.read()
snippet_buffer[snippet_name] = code
print(f"Snippet '{snippet_name}' added to the buffer from file '{file_name}'.")
else:
print(f"File '{file_name}' not found.")
def view_snippets():
if snippet_buffer:
print("Current Snippets in Buffer:")
for name, code in snippet_buffer.items():
print(f"Name: {name}\nCode:\n{code}\n")
else:
print("No snippets in the buffer.")
def remove_snippet(snippet_name):
if snippet_name in snippet_buffer:
del snippet_buffer[snippet_name]
print(f"Snippet '{snippet_name}' removed from the buffer.")
else:
print(f"Snippet '{snippet_name}' not found in the buffer.")
def main():
if len(sys.argv) < 2:
print("Usage: python apackg.py [install|uninstall|add|view|remove] [package_name|snippet_name] [file_name]")
return
command = sys.argv[1]
if command == "install":
if len(sys.argv) >= 3:
package_name = sys.argv[2]
install_package(package_name)
else:
print("Usage: python apackg.py install <package_name>")
elif command == "uninstall":
if len(sys.argv) >= 3:
package_name = sys.argv[2]
uninstall_package(package_name)
else:
print("Usage: python apackg.py uninstall <package_name>")
elif command == "add":
if len(sys.argv) >= 4:
snippet_name = sys.argv[2]
file_name = sys.argv[3]
add_snippet_from_file(snippet_name, file_name)
else:
print("Usage: python apackg.py add <snippet_name> <file_name>")
elif command == "view":
view_snippets()
elif command == "remove":
if len(sys.argv) >= 3:
snippet_name = sys.argv[2]
remove_snippet(snippet_name)
else:
print("Usage: python apackg.py remove <snippet_name>")
else:
print(f"Unknown command: {command}")
print("Usage: python apackg.py [install|uninstall|add|view|remove] [package_name|snippet_name] [file_name]")
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment