Skip to content

Instantly share code, notes, and snippets.

@sam2332
Last active March 12, 2025 15:33
Show Gist options
  • Save sam2332/b0157ae3b9adef8f7e35fb48f78ec1d8 to your computer and use it in GitHub Desktop.
Save sam2332/b0157ae3b9adef8f7e35fb48f78ec1d8 to your computer and use it in GitHub Desktop.
Current Projects manager system.
#!/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}"
@sam2332
Copy link
Author

sam2332 commented Mar 12, 2025

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment