Last active
March 12, 2025 15:33
-
-
Save sam2332/b0157ae3b9adef8f7e35fb48f78ec1d8 to your computer and use it in GitHub Desktop.
Current Projects manager system.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# --- COLORS ------------------------------------------------------------------- | |
RESET='\033[0m' | |
BOLD='\033[1m' | |
GREEN='\033[1;32m' | |
BLUE='\033[1;34m' | |
YELLOW='\033[1;33m' | |
RED='\033[1;31m' | |
CYAN='\033[1;36m' | |
# --- DIRECTORIES -------------------------------------------------------------- | |
PROJECTS_DIR=~/projects | |
CURRENT_DIR="$PROJECTS_DIR/current_projects" | |
COMPLETED_DIR="$PROJECTS_DIR/completed_projects" | |
# Ensure directories exist | |
mkdir -p "$CURRENT_DIR" "$COMPLETED_DIR" | |
# --- PRETTY HELPER FUNCTIONS -------------------------------------------------- | |
function echo_success() { | |
echo -e "${GREEN}$1${RESET}" | |
} | |
function echo_info() { | |
echo -e "${CYAN}$1${RESET}" | |
} | |
function echo_warning() { | |
echo -e "${YELLOW}$1${RESET}" | |
} | |
function echo_error() { | |
echo -e "${RED}$1${RESET}" | |
} | |
function print_usage() { | |
echo_info "Usage: $0 {create|list|finish} [project_name]" | |
} | |
# --- SCRIPT LOGIC ------------------------------------------------------------- | |
echo -e "${BOLD}${BLUE}Welcome to the Magical Project Manager!${RESET}" | |
case "$1" in | |
create) | |
# Usage: ./manage_projects.sh create <project_name> | |
if [ -z "$2" ]; then | |
echo_error "Error: Please specify a project name." | |
print_usage | |
exit 1 | |
fi | |
PROJECT_NAME="$2" | |
mkdir -p "$CURRENT_DIR/$PROJECT_NAME" | |
echo_success "Project '$PROJECT_NAME' created in current_projects." | |
;; | |
list) | |
# Usage: ./manage_projects.sh list | |
echo_info "Current projects in $CURRENT_DIR:" | |
if [ "$(ls -A "$CURRENT_DIR" 2>/dev/null)" ]; then | |
ls -1 "$CURRENT_DIR" | |
else | |
echo_warning "No current projects yet." | |
fi | |
echo | |
echo_info "Completed projects in $COMPLETED_DIR (by year):" | |
if [ "$(ls -A "$COMPLETED_DIR" 2>/dev/null)" ]; then | |
ls -1 "$COMPLETED_DIR" | |
else | |
echo_warning "No completed projects yet." | |
fi | |
;; | |
finish) | |
# Usage: ./manage_projects.sh finish <project_name> | |
if [ -z "$2" ]; then | |
echo_error "Error: Please specify a project name." | |
print_usage | |
exit 1 | |
fi | |
PROJECT_NAME="$2" | |
if [ ! -d "$CURRENT_DIR/$PROJECT_NAME" ]; then | |
echo_error "Error: Project '$PROJECT_NAME' does not exist in current_projects." | |
exit 1 | |
fi | |
YEAR=$(date +%Y) | |
mkdir -p "$COMPLETED_DIR/$YEAR" | |
mv "$CURRENT_DIR/$PROJECT_NAME" "$COMPLETED_DIR/$YEAR/" | |
echo_success "Moved '$PROJECT_NAME' to '$COMPLETED_DIR/$YEAR/'." | |
;; | |
*) | |
echo_warning "Unknown command." | |
print_usage | |
exit 1 | |
;; | |
esac | |
echo -e "${BOLD}All done!${RESET}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage Examples
Create a new project**
./manage_projects.sh create MyCoolProject
List current & completed projects
./manage_projects.sh list
Finish a project (moves it under the current year in completed_projects)
./manage_projects.sh finish MyCoolProject