All Projects → EivindArvesen → Prm

EivindArvesen / Prm

Licence: bsd-3-clause
A minimal project manager for the terminal.

Programming Languages

shell
77523 projects
bash
514 projects

Projects that are alternatives of or similar to Prm

awesome-engineering-management
Pointers and tools for learning and day-to-day practice of engineering management & leadership.
Stars: ✭ 1,535 (+258.64%)
Mutual labels:  productivity, project-management
Leantime
Leantime is a lean project management system for innovators. Designed to help you manage your projects from ideation to delivery.
Stars: ✭ 702 (+64.02%)
Mutual labels:  productivity, project-management
Organice
An implementation of Org mode without the dependency of Emacs - built for mobile and desktop browsers
Stars: ✭ 1,327 (+210.05%)
Mutual labels:  productivity, project-management
Launcher
🚀 A distraction-free minimal homescreen for Android.
Stars: ✭ 116 (-72.9%)
Mutual labels:  productivity, efficiency
project-management
A basic CLI for regularly updating your project's status
Stars: ✭ 90 (-78.97%)
Mutual labels:  productivity, project-management
Tasky
Tasky is a task management app made with SwiftUI.
Stars: ✭ 22 (-94.86%)
Mutual labels:  productivity, project-management
CNeptune
CNeptune improve productivity & efficiency by urbanize .net module with meta-code to lay foundation for frameworks
Stars: ✭ 30 (-92.99%)
Mutual labels:  productivity, efficiency
Pomodorologger
Pomodoro Logger 🕤 -- When a time tracker meets Pomodoro and Kanban board
Stars: ✭ 316 (-26.17%)
Mutual labels:  productivity, efficiency
Excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
Stars: ✭ 25,509 (+5860.05%)
Mutual labels:  productivity
Odin
A programmable, observable and distributed job orchestration system.
Stars: ✭ 405 (-5.37%)
Mutual labels:  productivity
Gauzy
Gauzy™ - Open-Source Business Management Platform (ERP/CRM/HRM)
Stars: ✭ 374 (-12.62%)
Mutual labels:  productivity
Teamvision
Teamvision软件工程协作工具
Stars: ✭ 380 (-11.21%)
Mutual labels:  project-management
Sublime Rails Snippets
Sublime Text snippets for the latest Ruby and Rails versions
Stars: ✭ 406 (-5.14%)
Mutual labels:  productivity
Marktext
📝A simple and elegant markdown editor, available for Linux, macOS and Windows.
Stars: ✭ 22,894 (+5249.07%)
Mutual labels:  efficiency
Gh Board
"Serverless" Kanban for GitHub Issues using gh-pages
Stars: ✭ 420 (-1.87%)
Mutual labels:  project-management
Support
Agile project management integrated with GitHub
Stars: ✭ 373 (-12.85%)
Mutual labels:  project-management
Fiscript
Execute custom scripts from the MacOS context menu (CTRL+click) in Finder.
Stars: ✭ 372 (-13.08%)
Mutual labels:  productivity
Geistmap
An experimental personal knowledge base with a focus on connections
Stars: ✭ 425 (-0.7%)
Mutual labels:  productivity
Switchkey
Automatically activate the correct input source.
Stars: ✭ 418 (-2.34%)
Mutual labels:  productivity
Protolock
Protocol Buffer companion tool. Track your .proto files and prevent changes to messages and services which impact API compatibility.
Stars: ✭ 394 (-7.94%)
Mutual labels:  productivity

prm

TravisCI Status License Gitter

A minimal project manager for the terminal.

Demo

This script must be sourced, not run in a subshell. See usage for more information.

At present, prm supports zsh, as well as bash. For more information, see the Wiki page on Zsh support.

Ostensibly, prm also works under Cygwin. If your $EDITOR is set to a program external to Cygwin (ex: Sublime Text), you might want to add export prm_use_cygpath=true to your .bashrc/.zshrc to send the native Windows path to the editor.

Regrettably, fish is not supported, because of syntax incompatibilities. See this issue for some details. However, Fred Deschenes has made a port for fish that you could check out.

Additionally, Michael Krieger has integrated prm into a workflow for Alfred (OS X).

What?

This program basically lets you CRUD projects. Upon activation, each projects runs its associated start-script; on deactivation, it runs the project stop-script.

These bash-scripts can be used for things like changing directories, setting environment variables, cleanup, etc.

There is basic prompt integration in the form of [PROJECT] <prompt>, which can be seen in the animated .gif demo above.

You can have several projects active at once in different shells, as prm associates active instances with the shell PID. Currently active projects can be listed (as described in usage).

Dead project instances (i.e. project instances that are still active on shell exit) will be automatically deactivated the next time you run prm – without running their stop-scripts.

For the motivation behind prm, please see the Wiki page on Problem Statements and Design Goals.

How?

Adding and editing projects will open the associated start- and stop-scripts in your editor (as defined by the $EDITOR environment variable).

A project start-script might for instance look something like this:

# cd to project directory
cd $HOME/src/Python/hello-world

# activate conda env
source activate hello-world

# show current git status
git status

The same project's stop-script might look like this:

# deactivate conda env
source deactivate hello-world

# clean up
rm *.log *.tmp

When you activate a new project, prm automatically stops any active project in the current shell.

When a project is deactivated, prm changes the working directory back to the path you were originally on before starting your first project.

Reusability

If you often create projects similar to one you already have, you can load custom scripts from your projects' start.sh and stop.sh. For instance, if you'd like some python-based projects to list the number of outdated packages in their conda envs, you can save

# count outdated packages in conda env
echo "$((($(conda search --outdated --names-only | wc -l)-1))) outdated packages in env"

as e.g. conda-list-outdated.sh in $PRM_DIR/.common/ (this environment variable is detailed in usage). You can then load this script in your start- and stop-scripts like so:

prm_load conda-list-outdated

Additionally, if you need the name of the currently active project, this is available via the $PRM_ACTIVE_PROJECT environment variable.

The prm command line arguments are available in start- and stop-scripts, $3 being the first argument after your project name.

All available environment variables are described on this Wiki page.

Installation

To install prm: git clone https://github.com/EivindArvesen/prm.git, or download and extract a release .zip.

In order to work properly, prm must be sourced, not run in a subshell. The easiest way to do this is probably to add an alias to prm in your ~/.bashrc (or wherever you keep your aliases), like so:

alias prm=". path/to/prm.sh"

The technical reason for this is succinctly explained in this Wikipedia article.

You must set your $EDITOR env-var, e.g.

export EDITOR=nano

in your rc-file (like .bashrc or .zshrc).

Usage

From the help option screen:

usage: prm <option> [<args>] ...

Options:
  active                   List active project instances.
  add <project name>       Add project(s).
  copy <old> <new>         Copy project.
  edit <project name>      Edit project(s).
  list                     List all projects.
  remove <project name>    Remove project(s).
  rename <old> <new>       Rename project.
  start <project name>     Start project.
  stop                     Stop active project.
  -h --help                Display this information.
  -v --version             Display version info.

You can set the prm data directory with the $PRM_DIR environment variable. By default all prm data is written to ~/.prm.

Shell completions

You can install shell completions by running bash completions/deploy_completions.sh from the project root. Only bash is supported for now, but zsh completions are under development.

Contributing

Feedback is strongly encouraged. If you run into a bug or would like to see a new feature, please open a new issue. In the case of bugs, please mention what shell they occur under (i.e. bash or zsh).

Contributions in the form of code (e.g. implementing new features, bug-fixes) are also appreciated. For information about this, see the Wiki page on Contributing.

Pull requests that do not pass the CI tests will not be merged.

Tests

The project tests can be found in the tests directory.

If you have Bats installed, you can run all tests (for both bash and zsh) locally by issuing bash tests/run-tests.sh in the root project folder of prm.

Unit tests can be found in tests/units.bats.

End-to-end tests can be found in tests/e2e.bats.

You can run both by via make test.

License

This software is released under the terms of the 3-clause New BSD License. See the license file for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].