projects

You're a prolific developer (or you want to be). Manage, keep track of, and show off your projects.

npm install projects
16 downloads in the last week
32 downloads in the last month

Projects

You're a prolific developer (or you want to be). Manage, keep track of, and show off your projects with ease.

Installation

$ npm install -g projects

Commands

Command Description
alias output shell aliases
clone git clone a project
each run a command in each project directory
edit edit projects files
gc compact the projects database
get get an attribute for a project
git-status git status across all repositories
git-unpushed display repositories with unpushed commits
github fill your projects database with your GitHub repositories
glob glob across all project directories
info show the JSON for a given project
json-in import your projects from plain JSON
json-out export your projects to plain JSON
open open a project's homepage
query query your projects
remind get a reminder of what you were last working on
set set an attribute to a given value for a project

Writing your own commands

Projects is primarily a framework for making it easy to execute actions on one or more of your projects. For example, you could write a command to check the clean/dirty status of all of your checked out git repositories and list the dirty ones.

If you have an executable file in your PATH that starts with projects- then you can execute it underneath projects (and you're encouraged to share them with others!)

Examples

$ alias p=projects
$ cat ~/.config/projects
[github]
username = beaugunderson

[projects]
directory = ~/p

$ p info vim-scss-instead
{
  "name": "vim-scss-instead",
  "repository": "https://github.com/beaugunderson/vim-scss-instead.git",
  "language": "VimL",
  "role": "creator",
  "released": true,
  "status": "inactive"
}

$ p set vim-scss-instead homepage https://github.com/beaugunderson/vim-scss-instead
Set vim-scss-instead:homepage to "https://github.com/beaugunderson/vim-scss-instead"
$ p open vim-scss-instead # opens a web browser to the homepage URL
$ p clone vim-scss-instead
Cloning into '/Users/beau/p/vim-scss-instead'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.

$ p github
<snip>
Adding vim-scss-instead
Adding vim-human-dates
<snip>
Finished

$ p git-unpushed
node-helmsman: 6 commits ahead of origin
projects: 3 commits ahead of origin

TODO

  • Add ability to specify flag defaults in ~/.config/projects for each command
  • Modify node-helmsman so that it doesn't require() all files (and add ability to specify description, etc. from the helmsman object); this will be a large speed increase
  • Be as git-like as possible when the concepts are similar/the same to prevent having to learn a new way of doing things
  • Shell functions (pcd <project>, for example, will change the directory to a project's directory)
  • Flesh out the query API (by number of issues, by last update, by dirty status, by number of collaborators, number of npm stars, number of packages used, etc.)
  • Open a browser on Windows, Linux (just uses OS X open right now)
  • A web API and examples of what you'd do with it
  • Add GET/POST/DELETE/PUT to the web API and add the concept of a master repository?
  • More well-defined attributes
  • Think more about efficiency
  • Get more people to write commands
  • Talk to people about their workflows
  • Workflows for Alfred
npm loves you