{"_id":"@alexlafroscia/dotty","_rev":"3-02b27e41d22d64d70fc712265cac8088","name":"@alexlafroscia/dotty","description":"Programmatically configure your development environment","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@alexlafroscia/dotty","version":"1.0.0","description":"Programmatically configure your development environment","main":"index.js","author":{"name":"Alex LaFroscia","email":"alex@lafroscia.com"},"license":"MIT","engines":{"node":">= 9"},"bin":{"dotty":"./index.js"},"scripts":{"build":"pkg . --targets macos --out-path build","lint":"eslint .","test":"ava"},"devDependencies":{"ava":"^0.24.0","eslint":"^4.14.0","eslint-config-prettier":"^2.9.0","eslint-plugin-ava":"^4.4.0","eslint-plugin-prettier":"^2.4.0","pkg":"^4.3.0-beta.5","prettier":"^1.9.2"},"dependencies":{"dag-map":"^2.0.2","execa":"^0.8.0","inquirer":"^4.0.2","listr":"^0.13.0"},"gitHead":"9b9cf2ec82f155cf08b90c99d6a8d5cb8cab757f","_id":"@alexlafroscia/dotty@1.0.0","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"alexlafroscia","email":"alex@lafroscia.com"},"dist":{"integrity":"sha512-BJXgJJdsgYATjJ0d6n+NYG74JYkN4Oz48S8x+x9dq3thFtcFFLuZbJ9O2pO6KYaCMg9rdMVHTh7YwmijR7WWrA==","shasum":"07d6514836ea4a9fbeb1998066a6da7e9351636d","tarball":"https://registry.npmjs.org/@alexlafroscia/dotty/-/dotty-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZt2FlQnhr3PkEwWjTkZNiz/5ecmqvWc+PiNZTj3tSLAiEA04HwnOl2XR+NaobHlmxzHrkPTXyKO7bb1fDGOCnzGzM="}]},"maintainers":[{"name":"alexlafroscia","email":"alex@lafroscia.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dotty-1.0.0.tgz_1515135642864_0.16060905833728611"}},"1.0.1":{"name":"@alexlafroscia/dotty","version":"1.0.1","description":"Programmatically configure your development environment","main":"index.js","author":{"name":"Alex LaFroscia","email":"alex@lafroscia.com"},"license":"MIT","engines":{"node":">= 9"},"bin":{"dotty":"./index.js"},"scripts":{"build":"pkg . --targets macos --out-path build","lint":"eslint .","test":"ava"},"devDependencies":{"ava":"^0.24.0","eslint":"^4.14.0","eslint-config-prettier":"^2.9.0","eslint-plugin-ava":"^4.4.0","eslint-plugin-prettier":"^2.4.0","pkg":"^4.3.0-beta.5","prettier":"^1.9.2"},"dependencies":{"dag-map":"^2.0.2","execa":"^0.8.0","inquirer":"^4.0.2","listr":"^0.13.0"},"gitHead":"5ed9fe750efe0809a2f6b8d880999430962ac3d3","_id":"@alexlafroscia/dotty@1.0.1","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"alexlafroscia","email":"alex@lafroscia.com"},"dist":{"integrity":"sha512-KLrBf8S30BssLuLwnPwT08RTpA8grG0iJ4Vt2zQhCcay4lx67wh7temBlC2l6Oz816ygqvPgziQv3/WHWF4sog==","shasum":"3d4a25a1629e97c3d445ba9366984bf58ec8bbff","tarball":"https://registry.npmjs.org/@alexlafroscia/dotty/-/dotty-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIWACmL3cnKGcS+DLdPgzQrmjsZAn55uxFRXf0ndMEmAiBlaoTXJU27lHCEHR/bVWvuKxWymKkdef3qW+9WydXX4A=="}]},"maintainers":[{"name":"alexlafroscia","email":"alex@lafroscia.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dotty-1.0.1.tgz_1515181361997_0.3432619385421276"}},"2.0.0":{"name":"@alexlafroscia/dotty","version":"2.0.0","description":"Programmatically configure your development environment","main":"index.js","author":{"name":"Alex LaFroscia","email":"alex@lafroscia.com"},"license":"MIT","engines":{"node":">= 9"},"bin":{"dotty":"./index.js"},"scripts":{"build":"pkg . --targets macos --out-path build","lint":"eslint .","test":"ava"},"devDependencies":{"ava":"^0.24.0","eslint":"^4.14.0","eslint-config-prettier":"^2.9.0","eslint-plugin-ava":"^4.4.0","eslint-plugin-prettier":"^2.4.0","pkg":"^4.3.0-beta.5","prettier":"^1.9.2"},"dependencies":{"dag-map":"^2.0.2","execa":"^0.8.0","inquirer":"^4.0.2","listr":"^0.13.0","yargs":"^10.0.3"},"gitHead":"d2efcdbb6abd16bf153fe58c16e1b3b408125d85","_id":"@alexlafroscia/dotty@2.0.0","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"alexlafroscia","email":"alex@lafroscia.com"},"dist":{"integrity":"sha512-UMnDri6ZGU6sfOqISgE+DLqNrPmrOZzbhVbd9If+L8/tiGDgrlxGMn+EOeEieIYZ8il6EjEOFvnmVQxRt0s2RQ==","shasum":"e4e78ce1d26a3d6b5525f80deb5dff842fb198ca","tarball":"https://registry.npmjs.org/@alexlafroscia/dotty/-/dotty-2.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDWmbzce+/sY4nk/KBenhKhO8SeWSExkGytlL60jTkKQIhALlUI7MvEP2Y2Fgu4mOql7RlSrOptoloZBarhjnw+ojW"}]},"maintainers":[{"name":"alexlafroscia","email":"alex@lafroscia.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dotty-2.0.0.tgz_1515522786741_0.9365469771437347"}}},"readme":"# dotty [![Build Status](https://travis-ci.org/alexlafroscia/dotty.svg?branch=master)](https://travis-ci.org/alexlafroscia/dotty)\n\nA tool for declaratively managing your command line tools and configuration\n\n## The Problem\n\nI had a few computers that I do development work on, and it was a annoying to keep them in sync. I wanted a way to script installing and configuring my tools, but lacked tooling in pure shell scripting with the level of polish I desired. I knew I could build the tool I wanted using Node.js, so... here's `dotty`!\n\n## Installation\n\nOn a system that already has Node installed, you can grab `dotty` as an NPM package from `@alexlafroscia/dotty`. If you're setting it up on a new machine, a [`pkg`][pkg]-built binary can be found on the *Releases* tab.\n\n## Usage\n\n### Defining tasks\n\nA `dotty` task looks something like this:\n\n```javascript\n// tasks/brew.js\nmodule.exports = function(Task) {\n  return class Homebrew extends Task {\n    constructor() {\n      super();\n\n      // Set the name of the program being installed\n      this.programName = 'brew';\n    }\n\n    /**\n     * Check if the program needs to be installed\n     */\n    checkInstallation() {\n      return this.which('brew');\n    }\n\n    /**\n     * Install the program\n     */\n    install() {\n      return this.exec(\n        '/usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"'\n      );\n    }\n  };\n};\n```\n\nCheck out the `example-tasks` directory for more examples that show off the full set of hooks available. The [`Task` source code][task-source] has additional information on the available hooks and how they interact with each other.\n\n### Running tasks\n\nYou can invoke `dotty` like so:\n\n```bash\ndotty path/to/tasks/directory\n```\n\nI recommend keeping your tasks in a location where they can easily be synchronized between all of your machines, such as a `dotfiles` repo, iCloud or Dropbox.  For example, on my machine, synchronizing a new machine looks like:\n\n\n```bash\ndotty $DOTFILES/tasks\n```\n\nsince `$DOTFILES` is aliased to my dotfiles directory.\n\n[pkg]: https://www.npmjs.com/package/pkg\n[task-source]: lib/task.js\n","maintainers":[{"name":"alexlafroscia","email":"alex@lafroscia.com"}],"time":{"modified":"2022-04-04T12:41:02.712Z","created":"2018-01-05T07:00:42.978Z","1.0.0":"2018-01-05T07:00:42.978Z","1.0.1":"2018-01-05T19:42:42.293Z","2.0.0":"2018-01-09T18:33:08.633Z"},"author":{"name":"Alex LaFroscia","email":"alex@lafroscia.com"},"license":"MIT","readmeFilename":"README.md"}