All Projects β†’ cdzombak β†’ thingshub

cdzombak / thingshub

Licence: MIT license
[UNMAINTAINED] Synchronize issues assigned to you from a Github repo into Things.

Programming Languages

objective c
16641 projects - #2 most used programming language
Roff
2310 projects
shell
77523 projects

Projects that are alternatives of or similar to thingshub

Web-Tracker
Stand alone program that Tracks/Logs all the opened websites in the Chrome Browser. Even incognito! *No need to install anything in browser*
Stars: ✭ 34 (+100%)
Mutual labels:  scriptingbridge
Pyrez
(ON REWRITE) An easy to use (a)sync wrapper for Hi-Rez Studios API (Paladins, Realm Royale, and Smite), written in Python. 🐍
Stars: ✭ 23 (+35.29%)
Mutual labels:  sync
putio-sync
Command-line program to sync a folder between put.io and your computer.
Stars: ✭ 50 (+194.12%)
Mutual labels:  sync
scroll-sync-react
A scroll syncing library for react that is up to date
Stars: ✭ 49 (+188.24%)
Mutual labels:  sync
offPIM
Decentralized, Offline-first, Personal Information Manager (PIM) using PouchDB/CouchDB. Includes task-, note-, and contact-management, as well as journaling.
Stars: ✭ 63 (+270.59%)
Mutual labels:  sync
live-band
Play drums and other instruments with the rest of the world
Stars: ✭ 20 (+17.65%)
Mutual labels:  sync
trylock
TryLock for Go
Stars: ✭ 65 (+282.35%)
Mutual labels:  sync
mongomeili
Keep your Mongoose Schemas synced with MeiliSearch
Stars: ✭ 33 (+94.12%)
Mutual labels:  sync
go-pool
A better Generic Pool (sync.Pool)
Stars: ✭ 42 (+147.06%)
Mutual labels:  sync
myplanet
πŸŒ• myPlanet android app reads data from 🌎 for offline use as well as it collect usage data and sends them back to the Planet.
Stars: ✭ 17 (+0%)
Mutual labels:  sync
Junction
Use git to manage content in Confluence Cloud
Stars: ✭ 22 (+29.41%)
Mutual labels:  sync
lockpick
A CLI for syncing Dart dependency versions between pubspec.yaml and pubspec.lock files.
Stars: ✭ 34 (+100%)
Mutual labels:  sync
Radium
Synced stream and video playback with VOD capabilities utilizing HLS. Developed for movie nights but has many use cases.
Stars: ✭ 172 (+911.76%)
Mutual labels:  sync
vuepouch
A tiny library to enable you work with PouchDB in a Vuejs app. It syncs with remote CouchDB tooΒ :-)
Stars: ✭ 59 (+247.06%)
Mutual labels:  sync
TabSync
A lightweight synchronizer between Android's Tabs and Lists. Available on the View system and Jetpack Compose.
Stars: ✭ 98 (+476.47%)
Mutual labels:  sync
CSV
A simple CSV file parser and serializer
Stars: ✭ 31 (+82.35%)
Mutual labels:  sync
mindav
A self-hosted file backup server which bridges WebDAV protocol with @minio written in @totoval. Webdav ❀️ Minio
Stars: ✭ 64 (+276.47%)
Mutual labels:  sync
commercetools-project-sync
Dockerized CLI application which allows to automatically sync different resources between commercetools projects
Stars: ✭ 26 (+52.94%)
Mutual labels:  sync
gae-vue-webapp2-starter
A simple GAE Vue Webapp2 starter project.
Stars: ✭ 17 (+0%)
Mutual labels:  sync
errgroup
errgroup with goroutine worker limits
Stars: ✭ 143 (+741.18%)
Mutual labels:  sync

Unmaintained

No Maintenance Intended

Unmaintained: Due to several factors (apparent Things.app instability when using Scripting Bridge, bugs like #34 resulting in odd duplicates and project splits, and the GitHub Authorizations API going away which will require rewriting large parts of the software), I’m no longer devoting any time to this project.


ThingsHub

Synchronize issues assigned to you, one-way, from a Github repo into Things.

Usage

Configuration

ThingsHub checks for a config file at ~/.thingshubconfig, then traverses from the home directory down to the current dir (or from the root to the current dir, if the current directory isn't in ~), merging in .thingshubconfig files as it finds them.

This means you can put global configuration and defaults (eg. githubLogin, tagNamespace) in ~/.thingshubconfig, leaving project-specific settings (eg. repoOwner, repoName, areaName, projectPrefix) in your-project-dir/.thingshubconfig, sort of like using git's configuration system.

Configuration parameters may additionally be specified on the command line, like -githubLogin cdzombak. Parameters specified on the command line override those found in any configuration files.

See thingshubconfig.example in this distribution for details on the configuration format.

You may also want to add .thingshubconfig to your ~/.gitignore.

Run with the -verbose flag to see the final, resolved configuration.

Parameters

These may be used in a configuration file (param = value) or on the CLI (-param value).

  • githubLogin: your Github username. Required.
  • tagNamespace: namespace to use as a prefix for tags imported from Github. Optional; default is "github".
  • delegate: the sync delegate used to communicate with the local task manager app. Optional; default is Things. Currently only Things is supported.
  • map.label name (-"map.label name" on the CLI, if you need spaces): map a Github label to a local tag name. Optional.
  • repoOwner: the owner of the Github repo to sync. Required.
  • repoName: the Github repo to sync. Required.
  • areaName: the area in Things to use for this project. Optional; default is none.
  • projectPrefix: prefix which will be applied to project names & tasks’ titles (before the issue number). Optional; default is none.

Run

The simplest usage is just to run thingshub and specify all configuration options on the command line.

Alternatively, run thingshub from a project's directory, optionally specifying configuration options via the CLI. ThingsHub will configure itself from your configuration files as described in the Configuration section.

Logout/Reset Github OAuth Token

thingshub -logout <GitHub Username>

Version Check

thingshub -version

Installation

Current version: v1.1.1.

Installation requires Xcode.

Get the most recent release and run make install. This will install thingshub to /usr/local/bin and its man page to /usr/local/share/man/man1.

Troubleshooting

Ensure that the target directories exist and you can write to them.

Workflow

  • This never updates GitHub from Things; GitHub is the source of truth.
  • This will always create issues in Anytime. You can move them to Today/Upcoming/Someday as desired.
  • This will move issues to areas/projects to reflect milestone changes. This doesn't change the todo between Today/Anytime/Upcoming/Someday.

Why one way sync? Why GitHub as the source of truth?

  • Issues may be modified by many people online, increasing the chance of conflicts if you modify an issue locally.
    • Conflict management is easy this way, and we probably won't lose much data.
  • Issues are often closed as side effects of other operations (merges, commits), so closing issues in your client usually won't make much sense.
  • Descriptions on Todos are often used in your task management software for personal notes.
  • The entire one-way sync operation is idempotent, so partial sync failures are easily recoverable; just re-trigger the sync.

Sync (to Things)

  • Milestones, if any, are represented as projects in your selected Area, or if no Area, as projects in Anytime/Someday. Projects' due dates reflect the milestone due date.
  • Milestones: each project's due date, tags, and status are updated every sync. Name and notes are only touched when creating a new Project.
  • A project is not created for an open milestone if you have no issues assigned to you in that milestone.
  • Issues without a milestone are placed directly in the selected Area, or if no Area, into Anytime. (If updating an existing task, we won't move it back into Anytime, though.)
  • Todos and projects are marked as incomplete/complete based on open/close status in Github. Todos/projects that exist for deleted/unassigned milestones/issues are marked as canceled.
  • We only search for existing issues in Today, Anytime, Upcoming, Someday, Projects, and Trash β€” not Inbox or Logbook.
  • We don't touch due dates or handle scheduling for tasks.
  • Issues: todo's project/area, tags, name, and status are updated every sync. Notes are only touched when the todo is created.
  • Pull requests are treated the same as issues, with "(PR #xxx)" instead of just "(#xxx)" in the name.

Tags

  • When a todo is created/updated, remove any extant "github:" tags, and apply "github:" tags that are currently on the issue.
  • When creating/updating a todo/project, add a "via:github" tag.

Contributors

Thanks to:

License

MIT; see LICENSE in this distribution.

Dev Notes

  • Run make bootstrap to set up a local, self-contained environment for CocoaPods. Its only external dependency is Bundler.
  • make pods runs bundle exec pod install for you.

Implementation details

Things

Identifying synced items:

The following will be placed in the notes field for relevant projects/todos:

  • //thingshub/ORG/REPO/issue/###//
  • //thingshub/ORG/REPO/milestone/###//

Reference Material

Things and Scripting Bridge

RAC

Github API

KVC, Predicates

NSRunLoop

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].