Skip to content

cweiske/shpub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shpub - micropub client for your shell

Command line micropub client written in PHP.

shpub is released as self-contained .phar file that includes all dependencies.

See shpub downloads page for all released versions.

After downloading shpub-x.y.z.phar, you can either use it directly:

$ php /path/to/shpub-x.y.z.phar --version

or make it more easily accessible:

$ mv /path/to/shpub-x.y.z.phar /usr/local/bin/shpub
$ chmod +x /usr/local/bin/shpub
$ shpub --version

You might need sudo to be able to copy it into the /usr/local/bin/ directory.

If you're running from the git checkout, start it as follows:

$ ./bin/shpub.php --version

When using the git version, you need to have the following dependencies installed on your system:

$ shpub connect http://mywebsite

In case there are multiple users on the same server:

$ shpub connect http://sharedwebsite http://shareswebsite/user

If you pass a third parameter, then that will be the name of the connection. You can select a specific server/connection with -s on all commands.

$ shpub server
rr
test
anoweco.bogo
local2

Also try server -v which lists server and user URLs.

shpub has support for the following post types:

By default shpub sends data form-encoded. To send JSON requests, use the --json option.

$ shpub like http://example.org/
Like created at server
http://anoweco.bogo/comment/23.htm
$ shpub reply http://example.org/ "Hey, cool!"
Reply created at server
http://anoweco.bogo/comment/42.htm

A normal note:

$ shpub note "oh this is cool!"
Note created at server
http://known.bogo/2016/oh-this-is-cool.htm

Note with an image:

$ shpub note -f image.jpg "this is so cute"
Note created at server
http://known.bogo/2016/this-is-so-cute

You can use -f several times to upload multiple files.

URL image upload:

$ shpub note -f http://example.org/1.jpg "img url!"
Note created at server
http://known.bogo/2016/img-url

Load note content from a file:

$ shpub note - < /path/to/file.txt
Note created at server
http://known.bogo/2017/some-note

You may create custom post types with the x command. This is useful if your micropub endpoint supports additional types, like known's "annotation" type (comments and likes for posts).

Create a comment to a known post:

$ shpub x annotation\
    -x url=http://known.bogo/2016/example-domain-1\
    -x type=reply\
    -x username=barryf\
    -x userurl=http://example.org/~barryf\
    -x userphoto=http://example.org/~barryf/avatar.jpg\
    -x content="There is a typo in paragraph 1. 'Fou' should be 'Foo'"

You may delete and restore posts on micropub servers:

$ shpub delete http://known.bogo/2016/like

Restore a deleted post:

$ shpub undelete http://known.bogo/2016/like

Existing posts can be modified if the server supports this:

$ ./bin/shpub update --add category=foo category=bar\
                     --replace slug=differentslug\
                     --delete category=oldcat\
                     http://known.bogo/2016/post

You may list the syndication targets defined on the server:

$ shpub targets
IndieNews
 https://news.indieweb.org/en

Then specify it when creating a post:

$ shpub article -x mp-syndicate-to=https://news.indieweb.org/en title text

Most post types allow file uploads. Simply use -f:

$ shpub note -f path/to/image.jpg "image test"
Note created at server
http://known.bogo/2016/image-test

The media endpoint is used automatically if the micropub endpoint has one. To force shpub to directly upload the file and skip the media endpoint, use the --direct-upload option:

$ shpub note --direct-upload -f path/to/image.jpg "direct upload"

Use the upload command to upload files to the media endpoint without creating a post:

$ shpub upload /path/to/file.jpg /path/to/file2.jpg
Uploaded file /path/to/file.jpg
http://test.bogo/micropub-media-endpoint/1474362040.2941/file.jpg
Uploaded file /path/to/file2.jpg
http://test.bogo/micropub-media-endpoint/1474362040.3383/file2.jpg

To debug shpub or your micropub endpoint, use the --debug option to see curl command equivalents to the shpub HTTP requests:

$ shpub -s known -d note "a simple note"
curl -X POST -H 'User-Agent: shpub' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Authorization: Bearer abc' -d 'h=entry' -d 'content=a simple note' 'http://known.bogo/micropub/endpoint'
Post created at server
http://known.bogo/2016/a-simple-note

You may use the --dry-run option to make shpub not send any modifying HTTP requests (e.g. POST and PUT).

Together with --debug you can use this to get curl commands without sending anything to the server:

$ shpub --debug --dry-run like example.org
curl -X POST -H 'User-Agent: shpub' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Authorization: Bearer cafe' -d 'h=entry' -d 'like-of=http://example.org' 'http://anoweco.bogo/micropub.php'
Like created at server
http://example.org/fake-response

To see which server, user and endpoint URLs shpub uses, pass the server name to the server command:

$ shpub server commentpara.de
commentpara.de
 URL:   http://commentpara.de
 User:  https://commentpara.de/user/3.htm
 Endpoints:
  micropub:      https://commentpara.de/micropub.php
  media:
  token:         https://commentpara.de/token.php
  authorization: https://commentpara.de/auth.php
  1. Add notes to ChangeLog
  2. Update version number in build.xml and src/shpub/Cli.php
  3. Run phing
  4. Commit and tag the version
  5. In the cweiske.de directory, run ./scripts/update-shpub.sh

shpub's homepage is http://cweiske.de/shpub.htm

shpub's source code is available from http://git.cweiske.de/shpub.git or the mirror on github.

shpub is licensed under the AGPL v3 or later.

shpub was written by Christian Weiske.