github-markdown-server 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -2
- data/contrib/github-markdown-server.el +33 -14
- data/github-markdown-server.gemspec +1 -1
- data/lib/github-markdown-server/version.rb +1 -1
- metadata +3 -4
- data/contrib/p +0 -116
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b494d220af9950651041ea55cf4d4b20280ced3e
|
4
|
+
data.tar.gz: 7e6c5f2599a92bd9a76d2b068458d2d1eee31dae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13a669ea9878cd574e06cd36b33f8468032c0ceb5741e947caa8a6f033fa40bb0070ded07f419dd558265dd3db8be3792104a1458311401123259bd991dcd938
|
7
|
+
data.tar.gz: 09fe4e4def06aa10f73b1b7028ce9a7375c6a477e513c26f0427da45a1fc7dec98fb0fbc846824d8f696b6a38a303a95ae3a13beffc668a31f6a4914230c44aa
|
data/README.md
CHANGED
@@ -13,12 +13,16 @@ github-markdown-server README.md
|
|
13
13
|
|
14
14
|
This will start a server serving in the current directory and all child directories and open a browser (on a mac) showing README.md converted to html. If you navigate to a directory name only child directories and .md files are shown in a directory listing. If there is a README.md file in that directory it will be appended to the directory listing.
|
15
15
|
|
16
|
+
If you are deep down inside a git repository and you want to serve the whole repository (so that relative links will work) then this command will do that for you.
|
17
|
+
|
18
|
+
```shell
|
19
|
+
github-markdown-server -d $(git rev-parse --show-toplevel) somefile.md
|
20
|
+
```
|
21
|
+
|
16
22
|
## Contrib
|
17
23
|
|
18
24
|
There is a [contrib](contrib/) directory with an emacs lisp file which will start a server and open a file for you. It'll keep track of which servers it has started and reuse an existing server if a file you want to preview is under that server's serving directory.
|
19
25
|
|
20
|
-
There is also a small python script (called `p`) which will work with files and produce paths and urls.
|
21
|
-
|
22
26
|
## Contributing
|
23
27
|
|
24
28
|
Please feel free to send me pull requests! This is my first Ruby project and it always feels like my first time when I write Emacs Lisp.
|
@@ -9,11 +9,14 @@
|
|
9
9
|
|
10
10
|
(defvar github-markdown-servers '() "The servers we have running.")
|
11
11
|
(defvar github-markdown-server-port 7494 "The next available server port.")
|
12
|
+
(defvar github-markdown-server-browser "Google Chrome" "Application to use with osx's open -a to open files.")
|
12
13
|
|
13
14
|
(defun git-base (&optional file-name)
|
14
15
|
"Get the base of a git repository for FILE-NAME (or the current buffer)."
|
15
16
|
(interactive (buffer-file-name))
|
16
|
-
(shell-command-to-string
|
17
|
+
(shell-command-to-string
|
18
|
+
(concat "git -C " (shell-quote-argument (directory-file-name file-name))
|
19
|
+
" rev-parse --show-toplevel 2>/dev/null")))
|
17
20
|
|
18
21
|
(defun github-markdown-serve (&optional file-name)
|
19
22
|
"Get the base of a git repository for FILE-NAME (or the current buffer)."
|
@@ -44,18 +47,26 @@
|
|
44
47
|
(substring file-name (length (car server))))))))
|
45
48
|
(progn
|
46
49
|
(if server
|
47
|
-
(
|
50
|
+
(message (concat "re-starting github-markdown-server on port:" (number-to-string (cdr server))))
|
48
51
|
(progn
|
49
|
-
|
50
|
-
(
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
52
|
+
;; find the next available port
|
53
|
+
(while (< 0 (length (shell-command-to-string
|
54
|
+
(concat "lsof -n -i4TCP:" (number-to-string github-markdown-server-port) " | grep LISTEN"))))
|
55
|
+
(setq github-markdown-server-port (+ github-markdown-server-port 1)))
|
56
|
+
|
57
|
+
(message (concat "starting github-markdown-server on port:" (number-to-string (cdr server))))
|
58
|
+
(setq server (cons base github-markdown-server-port))))
|
59
|
+
(call-process-shell-command
|
60
|
+
(concat "github-markdown-server"
|
61
|
+
" --directory=" (shell-quote-argument (car server))
|
62
|
+
" --port=" (number-to-string (cdr server))
|
63
|
+
" " (shell-quote-argument file-name))
|
64
|
+
nil 0)
|
56
65
|
(if (not server)
|
57
|
-
(progn
|
58
|
-
(
|
66
|
+
(progn
|
67
|
+
(add-to-list 'github-markdown-servers server)
|
68
|
+
(setq github-markdown-server-port (+ github-markdown-server-port 1))))))
|
69
|
+
(message ""))))
|
59
70
|
|
60
71
|
(defun view-file-in-browser (&optional file-name)
|
61
72
|
"Open up file on github or via a local markdown server.
|
@@ -65,9 +76,17 @@ Prefix arg \[universal-argument] to not run local server."
|
|
65
76
|
(if (and (not current-prefix-arg) (string-match "\.md$" file-name))
|
66
77
|
(github-markdown-serve file-name)
|
67
78
|
(call-process-shell-command
|
68
|
-
(concat "open "
|
69
|
-
(
|
70
|
-
|
79
|
+
(concat "open -a " (shell-quote-argument github-markdown-server-browser) " \"$("
|
80
|
+
"perl -e 'use File::Basename; $f = shift @ARGV; $d = dirname($f); $b = basename($f); "
|
81
|
+
"$o = `git -C $d config --get remote.origin.url`; "
|
82
|
+
"if ($o =~ qr(!git(@|://)github.com[:/]!)) { "
|
83
|
+
" $o =~ s!git(@|://)github.com[:/](.*).git$!https://github.com/$2!; "
|
84
|
+
"} else { $o = \"\" }"
|
85
|
+
"$p = `git -C $d rev-parse --show-prefix`; "
|
86
|
+
"chomp($o, $p); "
|
87
|
+
"if ($o) { print \"$o/blob/master/$p$b\n\"; } else { print \"file://$f\" }' "
|
88
|
+
(shell-quote-argument (buffer-file-name)) ")\"")
|
89
|
+
nil 0)))
|
71
90
|
|
72
91
|
(provide 'github-markdown-server)
|
73
92
|
;;; github-markdown-server ends here
|
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.version = GithubMarkdownServer::VERSION
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ['Alex K (wtwf.com)']
|
9
|
-
s.email = '
|
9
|
+
s.email = 'wtwf.com'
|
10
10
|
s.homepage = 'https://github.com/arkarkark/github-markdown-server'
|
11
11
|
s.summary = %q{Use your favorite editor to edit a markdown file, Run the server and open the file. Saving in your editor updates instantly in the browser.}
|
12
12
|
s.description = %q{Runs a webserver to preview Github markdown with live.js updating.}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github-markdown-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex K (wtwf.com)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: github-markdown-preview
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '10.3'
|
75
75
|
description: Runs a webserver to preview Github markdown with live.js updating.
|
76
|
-
email:
|
76
|
+
email: wtwf.com
|
77
77
|
executables:
|
78
78
|
- github-markdown-server
|
79
79
|
extensions: []
|
@@ -84,7 +84,6 @@ files:
|
|
84
84
|
- README.md
|
85
85
|
- bin/github-markdown-server
|
86
86
|
- contrib/github-markdown-server.el
|
87
|
-
- contrib/p
|
88
87
|
- data/image/favicon.ico
|
89
88
|
- data/js/live.js
|
90
89
|
- github-markdown-server.gemspec
|
data/contrib/p
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
#!/usr/bin/python
|
2
|
-
# Created by: Alex K (wtwf.com)Tue Dec 7 16:50:41 2004
|
3
|
-
# Last Modified: Time-stamp: <Thu Nov 27 03:08:53 PST 2014>
|
4
|
-
|
5
|
-
"""
|
6
|
-
Turn a path into an absolute path or url.
|
7
|
-
|
8
|
-
-g, --git print out the root directory of this git repository
|
9
|
-
-h, --help print out this message
|
10
|
-
-p, --path show a full absolute path to the file
|
11
|
-
-t, --trim do not append a newline to the file
|
12
|
-
-u, --url show a url to the file (https://github.com/... or file:///)
|
13
|
-
-s, --server show a utl to a local github-markdown-server
|
14
|
-
--port use this port for github-markdown-server url (default 7474)
|
15
|
-
--host use this host for github-markdown-server url (default localhost)
|
16
|
-
"""
|
17
|
-
|
18
|
-
__author__ = 'wtwf.com (Alex K)'
|
19
|
-
|
20
|
-
import getopt
|
21
|
-
import logging
|
22
|
-
import os
|
23
|
-
import re
|
24
|
-
import sys
|
25
|
-
|
26
|
-
def Usage(code, msg=''):
|
27
|
-
"""Show a usage message."""
|
28
|
-
if code:
|
29
|
-
fd = sys.stderr
|
30
|
-
else:
|
31
|
-
fd = sys.stdout
|
32
|
-
PROGRAM = os.path.basename(sys.argv[0]) # pylint: disable=invalid-name,unused-variable
|
33
|
-
print >> fd, __doc__ % locals()
|
34
|
-
if msg:
|
35
|
-
print >> fd, msg
|
36
|
-
sys.exit(code)
|
37
|
-
|
38
|
-
def Main():
|
39
|
-
"""Run."""
|
40
|
-
logging.basicConfig()
|
41
|
-
logging.getLogger().setLevel(logging.DEBUG)
|
42
|
-
try:
|
43
|
-
opts, args = getopt.getopt(sys.argv[1:], 'ghpstu',
|
44
|
-
'git,help,host=,path,port=,server,trim,url'.split(','))
|
45
|
-
except getopt.error, msg:
|
46
|
-
Usage(1, msg)
|
47
|
-
|
48
|
-
if not args:
|
49
|
-
Usage(1)
|
50
|
-
|
51
|
-
output = 'path'
|
52
|
-
trim = False
|
53
|
-
port = 7474
|
54
|
-
host = 'localhost'
|
55
|
-
for opt, arg in opts:
|
56
|
-
if opt in ('-g', '--git'):
|
57
|
-
output = 'git'
|
58
|
-
if opt in ('-h', '--help'):
|
59
|
-
Usage(0)
|
60
|
-
if opt in ('--host',):
|
61
|
-
host = arg
|
62
|
-
if opt in ('-p', '--path'):
|
63
|
-
output = 'path'
|
64
|
-
if opt in ('--port',):
|
65
|
-
port = int(arg)
|
66
|
-
if opt in ('-s', '--server'):
|
67
|
-
output = 'github-markdown-server'
|
68
|
-
if opt in ('-t', '--trim'):
|
69
|
-
trim = True
|
70
|
-
if opt in ('-u', '--url'):
|
71
|
-
output = 'url'
|
72
|
-
|
73
|
-
for arg in args:
|
74
|
-
arg = os.path.abspath(arg)
|
75
|
-
if output != 'path':
|
76
|
-
arg = ConvertToUrl(arg, output, port, host)
|
77
|
-
if trim:
|
78
|
-
sys.stdout.write(arg) # for python 3 we could do print(arg, end='',flush=True)
|
79
|
-
else:
|
80
|
-
print arg
|
81
|
-
|
82
|
-
def ConvertToUrl(arg, output, port, host):
|
83
|
-
"""Try to turn this into a url."""
|
84
|
-
directory = arg
|
85
|
-
base_url = None
|
86
|
-
while directory != '/' and not base_url:
|
87
|
-
directory = os.path.dirname(directory)
|
88
|
-
config_filename = os.path.join(directory, '.git', 'config')
|
89
|
-
if os.path.exists(config_filename):
|
90
|
-
if output == 'git':
|
91
|
-
return directory
|
92
|
-
for line in open(config_filename):
|
93
|
-
match = re.search(r'url = git@github.com:(.*)\.git', line)
|
94
|
-
if match:
|
95
|
-
base_url = 'https://github.com/%s/blob/master/' % match.group(1)
|
96
|
-
break
|
97
|
-
|
98
|
-
if output == 'git':
|
99
|
-
return ''
|
100
|
-
if output == 'github-markdown-server':
|
101
|
-
if base_url:
|
102
|
-
basename = arg[len(directory) + 1:]
|
103
|
-
arg = 'http://%s:%d/%s' % (host, port, basename)
|
104
|
-
else:
|
105
|
-
basename = os.path.basename(arg)
|
106
|
-
arg = 'http://%s:%d/%s' % (host, port, basename)
|
107
|
-
else:
|
108
|
-
if base_url:
|
109
|
-
arg = base_url + arg[len(directory) + 1:]
|
110
|
-
else:
|
111
|
-
arg = 'file://' + arg
|
112
|
-
|
113
|
-
return arg
|
114
|
-
|
115
|
-
if __name__ == '__main__':
|
116
|
-
Main()
|