syclink

syclink is a comand line application to create a website with a link collection. syclink allows to add, update and delete links.

Installation

The application is installed with RubyGems

$ gem install syclink

Command Line Interface

syclink comes with a default website template and a CSS file. This can be adjusted to your convenience.

Templates

The templates are located in ~/.syc/syclink/templates and can be adjusted or completely replaced.

Command Line

Following list comprises the commands available

Website commands

  • website show - show all websites or search for websites
  • website remove - Remove website
  • website create - Create a HTML representation of the website

Link commands

  • add - Add a link
  • file - Add links from a file
  • update - Update a link
  • delete - Delete a link
  • list - List all links with an optional filter
  • find - Find links based on a search string

Commands

Following the commands and how to use them is explained based on examples.

Create a website

A website is send to syclink with the global -w flag. If the website does not exist yet the user is asked whether to create it and whether to set it as the default website. This is done with commands that require a website to operate on.

$ syclink -w my-new-website add "http://example.com"

Before the command add is executed the website is created. In this case a website called 'my-new-website' is created in the default directory at `~/.syc/syclink/websites/my-new-website.website

Commands that require a website are add, update, delete, list, find and website create.

If no website is specified the default website is used.

A link may have a title, a description and a tag. Title, description and tag are optional but a link obviously has to be provided. If no title is given the link is used as the title.

$ syclink add --title "Test page" --tag TEST \
              --description 'For testing purposes' http://example.com 

It is also possible to add links from a file

$ syclink file file-with-links

To update a link the URL has to be specified. If more than one link has the same URL only the first link is updated.

$ syclink update --title "Example" http://example.com 

To remove one or more links the URLs have to be provided.

$ syclink delete http://example.com,http://challenge.com

Links can be selected based on a filter. If no filter is given all links are listed. It is possible to specify the columns to print. Possible columns are url, name, description and tag.

$ syclink list --tag TEST --columns 'url,description'

url                | description
-------------------+---------------------
http://example.com | For testing purposes

It is also possible to search for links based on a search string. The find command searches all attributes of the links and is searching for the occurance of the search string within the attributes. So the search is not list only exact matches.

$ syclink find --columns 'url,tag' 'example' 

url                | tag
-------------------+-----
http://example.com | TEST

List websites

The websites are saved to ~/.syc/syclink/websites/ and the html representations are saved to ~/.syc/syclink/html/. When listing websites both webstites and html files are listed.

The following command will list all websites

$ syclink website list

To list websites based on a search string the search string has to be send to the list command

$ syclink website list "example"

If the --exact switch is given the command is only listing exact matches of the search string

$ syclink website list -e "http://example.com"

Remove websites

Websites and their html representations can be deleted based on a filter string. To delete all websites and respective html representation the filter string '*' can be provided

$ syclink website remove "*"

About to delete:

Websites
--------
/home/user/.syc/syclink/website/example.website

HTML-Files
----------
/home/user/.syc/syclink/html/example.html

Delete websites and corresponding html files (y/n)? 

Other exmamples of filter strings are *mple which will find example as well as ex*.

Make a html representation of the website

The ultimate command is website create which will create the html representation of the website.

The html file is created based on an erb file located in ~/.syc/syclink/templates/syclink.html.erb. This can be adjusted to your convenience. The methods that can be used can be looked up in lib/syctask/website.rb.

The html file will search for a css file in the directory stylesheets which is relative to the html file. The stylesheet is named styles.css. It is possible to change it or replace it entirely. If the stylesheet's name is changed this also has to be done in ~/.syc/syclink/templates/syclink.html.erb.

There is also a scss file which needs to be compiled to css with sass like so

$ sass ~/.syc/syclink/html/stylesheets/styles.css.scss:\
  ~/.syc/syclink/html/stylesheets/styles.css

Warning: If the css file has been changed all changes will be overridden by sass.

Workflow

To create a website the steps are as follows

  • add links to a website
  • create the html representation

Following is showing the above sequence in commands

$ syclink -w example add "http://example.com" --tag EXAMPLE
$ syclink add "http://github.com" --tag DEVELOPMENT
$ syclink website create