Convert your Markdown todo lists to Basecamp Todolists and back
MIT License
Convert your Markdown todo lists to Basecamp Todolists and back
Being a commandline tool primarily, Baseamp prefers to be installed globally:
npm install -g baseamp
First set these environment keys:
export BASECAMP_USERNAME="<your private username>"
export BASECAMP_PASSWORD="<your private password>"
export BASECAMP_ACCOUNT_ID="<your private account id (1st number in urls)>"
export BASECAMP_PROJECT_ID="<your private project id (2nd number in urls)>"
WARNING: Use a test project first, Baseamp will overwrite todos in existing projects!
To download (from Basecamp API -> local markdown):
$ baseamp download -
## Bugs (this list should always be emptied first) (#21402412)
- [ ] TIK Big file upload lists can exceed the assemblies.files database field length: http://support.transloadit.com/discussions/problems/13485-problem-with-assemblies-page-files-display (#133063190)
- [ ] TIK result: false is ignored if step is piped into a storage step (#133071595)
## Documentation (#21403029)
- [ ] Add ffmpeg new stack lists, link them, show lists which formats they support and which not directly in the docs, when one should use which and then also show the preset contents for each stack version (#133067237)
...etc...
To upload (from local markdown -> Basecamp API):
To download (from Basecamp API -> local markdown):
$ baseamp sync ./Our-Todos.md
Because our two datasources (a markdown file and the basecamp api) weren't really designed to run in sync, Baseamps syncing is far from perfect.
Here are pointers on behavior and things to watch out for.
When uploading, Baseamp:
(#id)
of in markdown textWhen downloading, Baseamp:
completed
, due_at
, assignee
, content
)When syncing, Baseamp:
.md
file, not with STDIN/OUTBaseamp cannot sync a todo's attachments or contents, but also won't override them, so you can safely use the webinterface to enrich todos.
There is no concept of sub-todos.
Keep in mind that if you remove 1 item from a list, it can result in position
updates for siblings in that list.
During a sync, when there are conflicting values, the local Markdown file is leading. However, Baseamp does not uncomplete remotely completed items as the usecase for that is limited, and this allows people to check off items online.
If you want to avoid having other values overwritten, keep your Markdown file in Git, and do a download before editting & syncing.
This allows the use of a Makefile
such as:
download: install
git pull
git add --all .
git commit -am "Updated todolist" || true
git push
source env.sh && node_modules/.bin/baseamp download ./Backup.md
cp ./Backup.md ./Basecamp.md
git diff --color | cat || true
git add --all .
git commit -am "Downloaded from Basecamp" || true
git push
sync: install
@git pull
@git add --all .
git commit -am "Updated todolist" || true
git push
source env.sh && node_modules/.bin/baseamp download ./Backup.md
git diff --color | cat || true
@test -z "$$(git status --porcelain)" || (echo "--> There are remote changes since you were last here. Copy your changes, type 'make download', paste your changes, try sync again. " && false)
source env.sh && node_modules/.bin/baseamp sync ./Basecamp.md
git diff --color | cat || true
@git add --all .
git commit -am "Synced with Basecamp" || true
git push
Now if you type make sync
in your Git todolist repo, you'll never overwrite remote changes by accident, and you always have a backup in Backup.md
.
Retrieving todolists...
weekstarter
mode, gives a quick overview of Last week / This weekI'd be happy to accept pull requests. If you plan on working on something big, please first give a shout!
This project is written in CoffeeScript, but the JavaScript it generates is commited back into the repository so people can use this module without a CoffeeScript dependency. If you want to work on the source, please do so in ./src
and type: make build
or make test
(also builds first). Please don't edit generated JavaScript in ./lib
!
Run tests via make test
.
To single out a test use make test GREP=30x
source env.sh
DEBUG=Baseamp:* ./bin/baseamp.js download -
source env.sh && make build && DEBUG=Baseamp:* ./bin/baseamp.js sync /tmp/full.md
Or use Makefile shortcuts
make run-download
make run-upload
Releasing a new version to npmjs.org can be done via make release-patch
(or minor / major, depending on the semantic versioning impact of your changes). This:
package.json
Like this project? Consider a donation. You'd be surprised how rewarding it is for me see someone spend actual money on these efforts, even if just $1.