outliner/README.md

126 lines
4.7 KiB
Markdown
Raw Normal View History

2020-04-26 00:48:20 +00:00
# Outliner [![Gem Version](https://badge.fury.io/rb/outliner.svg)](https://badge.fury.io/rb/outliner) [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/captn3m0/outliner)](https://hub.docker.com/r/captn3m0/outliner) [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/captn3m0/outliner)](https://hub.docker.com/r/captn3m0/outliner) [![Docker Image Size (latest semver)](https://img.shields.io/docker/image-size/captn3m0/outliner)](https://hub.docker.com/r/captn3m0/outliner)
2019-07-24 14:06:18 +00:00
A simple HTTParty based wrapper for the [Outline API](https://www.getoutline.com/developers). It also offers a one-line import option to let you migrate an existing set of Markdown files to Outline. For quickly running export/import commands, you can use the Docker Image as well.
2019-07-24 14:06:18 +00:00
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'outliner'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install outliner
## Usage
The API Client automatically picks up the Token from the `OUTLINE_TOKEN` environment variable. All the API calls are available with the `.` replaced with a `_` in the method name. So if you need to call the `collections.remove_user` API, use the `collections_remove_user` method.
```ruby
require 'outliner'
client = Outliner.new('https://knowledge.example.com')
pp client.auth_info
pp client.collections_list(offset: 0, limit: 10)
```
2019-07-24 15:17:46 +00:00
### Import
`outliner` can be used to import an existing collection of documents into Outline. To do this, run:
2019-07-24 15:17:46 +00:00
```bash
export OUTLINE_BASE_URI="https://kb.example.com"
export OUTLINE_TOKEN="PUT YOUR TOKEN HERE"
export SOURCE_DIRECTORY="/home/user/wiki"
export DESTINATION_COLLECTION_NAME="Archive"
bundle install outliner
outliner-import "$SOURCE_DIRECTORY" "$DESTINATION_COLLECTION_NAME"
```
### Export
`outliner` can be used to run a one-time export of all documents in Outline to a local directory. To do this, run:
```bash
export OUTLINE_BASE_URI="https://kb.example.com"
export OUTLINE_TOKEN="PUT YOUR TOKEN HERE"
# Ensure that this exists and is writable
export DESTINATION_DIRECTORY="/data"
bundle install outliner
outliner-export "$DESTINATION_DIRECTORY"
```
## Docker
You can use the pre-built docker image to run the above commands as well. See the following commands for examples:
2020-04-26 00:48:20 +00:00
### Setup
Copy the `env.sample` file to `.env` and update the values there.
### Export
2020-04-26 00:48:20 +00:00
Downloads all collections from Outline, and exports them as nested markdown files inside the given directory (`/data` inside the container, mount it accordingly.)
```bash
2020-04-26 00:48:20 +00:00
docker run --env-file .env
--volume /tmp:/data \
captn3m0/outliner \
export \
/data
```
### Import
2020-04-26 00:48:20 +00:00
Imports all markdown documents in a directory to a named Collection on outline. Creates the collection if it doesn't exist.
```bash
2020-04-26 00:48:20 +00:00
docker run --env-file .env
--volume /path/to/wiki:/data \
captn3m0/outliner \
2020-04-26 00:48:20 +00:00
import /data "Archive"
2019-07-24 15:17:46 +00:00
```
2020-04-26 00:48:20 +00:00
### Sync
Does a export from Outline, and pushes the corresponding result to the Git repository. Currenly does a force-push to the repository. Use with care.
2019-08-14 09:39:11 +00:00
2020-04-26 00:48:20 +00:00
Note: Sync is currently only available as a Docker Command
2019-08-14 09:39:11 +00:00
```bash
2020-04-26 00:48:20 +00:00
docker run --env-file .env
2019-08-14 09:39:11 +00:00
--volume /etc/ssh/private.key:/root/.ssh/id_rsa
captn3m0/outliner \
2020-04-26 00:48:20 +00:00
sync
2019-08-14 09:39:11 +00:00
```
2019-07-24 15:17:46 +00:00
#### Limitations
2020-04-26 00:48:20 +00:00
- [import] Images are currently not imported. Host them externally for this to work.
- [import] Only `.md` files are currently supported
- [docker] `StrictHostKeyChecking` is currently disabled for `push`, please only run this in trusted networks.
2019-07-24 15:17:46 +00:00
2019-07-24 14:06:18 +00:00
## Development
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/captn3m0/outliner. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
## Code of Conduct
Everyone interacting in the Outliner projects codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/captn3m0/outliner/blob/master/CODE_OF_CONDUCT.md).
## License
Licensed under the [MIT License](https://nemo.mit-license.org/). See LICENSE file for details.