neruda 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +96 -0
- data/bin/pablo +52 -17
- data/lib/tasks/capistrano/sinatra.rake +3 -1
- data/lib/tasks/chapters.rake +3 -1
- data/lib/tasks/sinatra.rake +8 -1
- metadata +5 -18
- data/README.org +0 -107
- data/TODO.org +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 763f0127b37c30ad1d8bf6217259349364b5b0c3
|
4
|
+
data.tar.gz: e1e24d906ba72ff2432b27d2bafb960dd068b281
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5067b657dc79aa4cec67e5be77d6cf475e3ee29a83da58a0583f502ae2fc55b44072577b6b17e90df46effc2e59fe214b02927bf2827f093525e6451d2e9c95
|
7
|
+
data.tar.gz: b1c4ffd1196f3c65267fca521bdb92a983888ec8b64d310262b7a4e437debd748334b9af16307609415cbc41062ad571d9cdd805c9b7671fcdf455e59bba43e1
|
data/README.md
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
**Neruda** is a little [Sinatra](http://sinatrarb.com) app, which aims to offer a quick access for writers to web publication. It is named in memory of Pablo Neruda.
|
2
|
+
|
3
|
+
Source code is available on my [cgit instance](https://git.deparis.io/neruda), while issues should be followed on my [redmine instance](https://projects.deparis.io/projects/neruda).
|
4
|
+
|
5
|
+
Install
|
6
|
+
=======
|
7
|
+
|
8
|
+
These installation instructions use [rvm](https://rvm.io) as ruby provider. If you want to use rbenv or your system ruby, please refer to their specific documentation to know how to install ruby 2.4.
|
9
|
+
|
10
|
+
First we need to upgrade rvm (always do that from time to time):
|
11
|
+
|
12
|
+
``` bash
|
13
|
+
$ rvm get latest
|
14
|
+
$ rvm install ruby-2.4.1
|
15
|
+
```
|
16
|
+
|
17
|
+
Then the installation itself:
|
18
|
+
|
19
|
+
``` bash
|
20
|
+
$ mkdir mysite
|
21
|
+
$ rvm use ruby-2.4.1@neruda --create
|
22
|
+
$ gem install neruda
|
23
|
+
```
|
24
|
+
|
25
|
+
Finally, you need to configure it to your needs.
|
26
|
+
|
27
|
+
``` bash
|
28
|
+
$ pablo init
|
29
|
+
```
|
30
|
+
|
31
|
+
Running it
|
32
|
+
==========
|
33
|
+
|
34
|
+
For testing it, you should just run:
|
35
|
+
|
36
|
+
``` bash
|
37
|
+
$ pablo start
|
38
|
+
```
|
39
|
+
|
40
|
+
For production use, just pass the right environnement variable:
|
41
|
+
|
42
|
+
``` bash
|
43
|
+
$ APP_ENV=production pablo start
|
44
|
+
```
|
45
|
+
|
46
|
+
To stop it, just enter `ctrl+C` if you are in development mode or enter `pablo stop` in production mode.
|
47
|
+
|
48
|
+
Pablo command
|
49
|
+
=============
|
50
|
+
|
51
|
+
In order to manage you Neruda installation, this gem provides a little helper called `pablo`. You already used it to `init`, `start` and `stop` your local installation. It can do a little more.
|
52
|
+
|
53
|
+
New
|
54
|
+
---
|
55
|
+
|
56
|
+
`pablo new [article title]` will open your favorite text editor to let you write a new chapter to your book.
|
57
|
+
|
58
|
+
If you don't provide a title to the command, `pablo` will ask you for one before launching your editor.
|
59
|
+
|
60
|
+
If you don't have configured the `EDITOR` or `VISUAL` environnement variable, `pablo` will default to Gnu Emacs.
|
61
|
+
|
62
|
+
Compile
|
63
|
+
-------
|
64
|
+
|
65
|
+
`pablo compile` will first convert your orphaned org files (the ones without a corresponding epub file), then producing the global epub book, made with all your chapters.
|
66
|
+
|
67
|
+
Capify
|
68
|
+
------
|
69
|
+
|
70
|
+
`pablo capify` will add the correct references to Neruda rake tasks in your `Capfile`, what will allow you to call them as part of your deployment workflow.
|
71
|
+
|
72
|
+
You can add the `chapters:sync` task:
|
73
|
+
|
74
|
+
``` ruby
|
75
|
+
after 'deploy:finishing', 'chapters:sync'
|
76
|
+
```
|
77
|
+
|
78
|
+
This task depends on all the following. Or you can just select a bunch of them:
|
79
|
+
|
80
|
+
``` ruby
|
81
|
+
after 'deploy:finishing', 'chapters:build_epubs'
|
82
|
+
after 'deploy:finishing', 'chapters:upload_epubs'
|
83
|
+
after 'deploy:finishing', 'chapters:upload_book'
|
84
|
+
after 'deploy:finishing', 'chapters:purge:remote'
|
85
|
+
```
|
86
|
+
|
87
|
+
Don't forget to restart the remote sinatra server:
|
88
|
+
|
89
|
+
``` ruby
|
90
|
+
after 'deploy:finished', 'sinatra:restart:remote'
|
91
|
+
```
|
92
|
+
|
93
|
+
Known issues
|
94
|
+
============
|
95
|
+
|
96
|
+
See [issues on redmine](https://projects.deparis.io/projects/neruda/issues).
|
data/bin/pablo
CHANGED
@@ -19,6 +19,13 @@ def help
|
|
19
19
|
STDERR.puts 'Usage: ' + Rainbow("pablo [ #{options.join(' | ')} ]").yellow
|
20
20
|
end
|
21
21
|
|
22
|
+
def bundler_is_present?
|
23
|
+
ENV['PATH'].split(':').each do |folder|
|
24
|
+
return true if File.exist? File.join(folder, 'bundle')
|
25
|
+
end
|
26
|
+
false
|
27
|
+
end
|
28
|
+
|
22
29
|
def capify
|
23
30
|
unless File.exist? 'Capfile'
|
24
31
|
STDERR.puts Rainbow('ERROR: Capfile does not exist.').red
|
@@ -91,6 +98,10 @@ def _init_rackup
|
|
91
98
|
end
|
92
99
|
|
93
100
|
def _init_bundler
|
101
|
+
return if File.exist? 'Gemfile'
|
102
|
+
puts ''
|
103
|
+
puts 'Bundler has been detected in your path.'
|
104
|
+
# puts ''
|
94
105
|
# print 'Do you want to use [o]rg files, [m]arkdown files or [b]oth' \
|
95
106
|
# ' (default is org): '
|
96
107
|
# markup = STDIN.gets.strip.downcase
|
@@ -119,22 +130,23 @@ def _init_bundler
|
|
119
130
|
end
|
120
131
|
EOF
|
121
132
|
IO.write('Gemfile', gemfile)
|
133
|
+
puts ''
|
134
|
+
puts 'To complete this installation, you must now run: ' +
|
135
|
+
Rainbow('bundle install').yellow
|
122
136
|
end
|
123
137
|
|
124
138
|
def init
|
125
|
-
puts Rainbow('Creating main folders…').
|
139
|
+
puts Rainbow('Creating main folders…').blue
|
126
140
|
_init_path
|
127
|
-
puts Rainbow('Populating config file…').
|
141
|
+
puts Rainbow('Populating config file…').blue
|
128
142
|
_init_config
|
129
|
-
puts Rainbow('Copying template files…').
|
143
|
+
puts Rainbow('Copying template files…').blue
|
130
144
|
_init_assets
|
131
|
-
puts Rainbow('Installing rake
|
145
|
+
puts Rainbow('Installing rake files…').blue
|
132
146
|
_init_rackup
|
133
|
-
_init_bundler
|
134
|
-
puts Rainbow('Neruda has been successfully installed.').green
|
135
147
|
puts ''
|
136
|
-
puts '
|
137
|
-
|
148
|
+
puts Rainbow('Neruda has been successfully installed.').green
|
149
|
+
_init_bundler if bundler_is_present?
|
138
150
|
end
|
139
151
|
|
140
152
|
def create_new(title)
|
@@ -167,18 +179,42 @@ elsif ARGV[0] == 'capify'
|
|
167
179
|
capify
|
168
180
|
|
169
181
|
elsif ['start', 'run'].include?(ARGV[0])
|
170
|
-
|
171
|
-
|
182
|
+
loc_env = ENV['APP_ENV'] || 'development'
|
183
|
+
if loc_env != 'production'
|
184
|
+
puts Rainbow("Neruda is run in #{loc_env} environment").green
|
185
|
+
else
|
186
|
+
puts Rainbow('>> Neruda is run in production environment <<').yellow
|
187
|
+
end
|
188
|
+
puts ''
|
189
|
+
if bundler_is_present?
|
190
|
+
puts Rainbow('bundle exec rake sinatra:start').blue
|
191
|
+
exec 'bundle', 'exec', 'rake', 'sinatra:start'
|
192
|
+
else
|
193
|
+
puts Rainbow('rake sinatra:start').blue
|
194
|
+
exec 'rake', 'sinatra:start'
|
195
|
+
end
|
172
196
|
|
173
197
|
elsif ARGV[0] == 'stop'
|
174
|
-
|
175
|
-
|
198
|
+
if bundler_is_present?
|
199
|
+
puts Rainbow('bundle exec rake sinatra:stop').blue
|
200
|
+
exec 'bundle', 'exec', 'rake', 'sinatra:stop'
|
201
|
+
else
|
202
|
+
puts Rainbow('rake sinatra:stop').blue
|
203
|
+
exec 'rake', 'sinatra:stop'
|
204
|
+
end
|
176
205
|
|
177
206
|
elsif ARGV[0] == 'compile'
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
207
|
+
if bundler_is_present?
|
208
|
+
puts Rainbow('bundle exec rake chapters:build_epubs').blue
|
209
|
+
exec 'bundle', 'exec', 'rake', 'chapters:build_epubs'
|
210
|
+
puts Rainbow('bundle exec rake chapters:make_book').blue
|
211
|
+
exec 'bundle', 'exec', 'rake', 'chapters:make_book'
|
212
|
+
else
|
213
|
+
puts Rainbow('rake chapters:build_epubs').blue
|
214
|
+
exec 'rake', 'chapters:build_epubs'
|
215
|
+
puts Rainbow('rake chapters:make_book').blue
|
216
|
+
exec 'rake', 'chapters:make_book'
|
217
|
+
end
|
182
218
|
|
183
219
|
elsif ARGV[0] == 'new'
|
184
220
|
if ARGV[1].nil?
|
@@ -187,7 +223,6 @@ elsif ARGV[0] == 'new'
|
|
187
223
|
else
|
188
224
|
title = ARGV[1]
|
189
225
|
end
|
190
|
-
|
191
226
|
create_new title
|
192
227
|
|
193
228
|
else
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
namespace :sinatra do
|
2
4
|
namespace :restart do
|
3
5
|
desc 'Restart the remote neruda application'
|
@@ -7,7 +9,7 @@ namespace :sinatra do
|
|
7
9
|
if test("[ -e '#{release_path}/tmp/pids/sinatra.pid' ]")
|
8
10
|
execute :pkill, '-F', 'tmp/pids/sinatra.pid'
|
9
11
|
end
|
10
|
-
execute :
|
12
|
+
execute :rackup, '-E', fetch(:app_env),
|
11
13
|
'-P', 'tmp/pids/sinatra.pid', '-D'
|
12
14
|
end
|
13
15
|
end
|
data/lib/tasks/chapters.rake
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yaml'
|
2
4
|
|
3
5
|
namespace :chapters do
|
@@ -45,7 +47,7 @@ namespace :chapters do
|
|
45
47
|
next if file_radix == 'index'
|
46
48
|
epub_file = "private/epubs/#{file_radix}.epub"
|
47
49
|
epub_to_upload << epub_file
|
48
|
-
|
50
|
+
sh 'pandoc', '-S', "-o #{epub_file}", filename
|
49
51
|
end
|
50
52
|
next if epub_to_upload.empty?
|
51
53
|
IO.write('tmp/epub_to_upload.yml', epub_to_upload.to_yaml)
|
data/lib/tasks/sinatra.rake
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'rainbow'
|
4
|
+
|
3
5
|
namespace :sinatra do
|
4
6
|
desc 'Stop the underlaying sinatra application'
|
5
7
|
task :stop do
|
@@ -10,6 +12,7 @@ namespace :sinatra do
|
|
10
12
|
pid = IO.read('tmp/pids/neruda.pid').strip.to_i
|
11
13
|
Process.kill('TERM', pid)
|
12
14
|
File.unlink 'tmp/pids/neruda.pid'
|
15
|
+
puts Rainbow('Done').green
|
13
16
|
end
|
14
17
|
|
15
18
|
desc 'Start the underlaying sinatra application'
|
@@ -17,7 +20,11 @@ namespace :sinatra do
|
|
17
20
|
loc_env = ENV['APP_ENV'] || 'development'
|
18
21
|
cmd = ['rackup', "-E #{loc_env}", '-P', 'tmp/pids/neruda.pid']
|
19
22
|
cmd << '-D' if loc_env == 'production'
|
20
|
-
|
23
|
+
begin
|
24
|
+
sh cmd.join(' ')
|
25
|
+
rescue Interrupt
|
26
|
+
puts Rainbow(' Kthxbye').blue
|
27
|
+
end
|
21
28
|
end
|
22
29
|
|
23
30
|
desc 'Restart local sinatra server'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neruda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Étienne Deparis
|
@@ -10,20 +10,6 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2017-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rainbow
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,11 +87,12 @@ email: etienne@depar.is
|
|
101
87
|
executables:
|
102
88
|
- pablo
|
103
89
|
extensions: []
|
104
|
-
extra_rdoc_files:
|
90
|
+
extra_rdoc_files:
|
91
|
+
- README.md
|
92
|
+
- LICENSE
|
105
93
|
files:
|
106
94
|
- LICENSE
|
107
|
-
- README.
|
108
|
-
- TODO.org
|
95
|
+
- README.md
|
109
96
|
- bin/pablo
|
110
97
|
- docs/Rakefile.example
|
111
98
|
- docs/config.yml.example
|
data/README.org
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
#+title: Neruda
|
2
|
-
|
3
|
-
*Neruda* is a little [[http://sinatrarb.com][Sinatra]] app, which aims to offer a quick access for
|
4
|
-
writers to web publication. It is named in memory of Pablo Neruda.
|
5
|
-
|
6
|
-
Source code is available on my [[https://git.deparis.io/neruda][cgit instance]], while issues should be
|
7
|
-
followed on my [[https://projects.deparis.io/projects/neruda][redmine instance]].
|
8
|
-
|
9
|
-
* Install
|
10
|
-
|
11
|
-
These installation instructions use [[https://rvm.io][rvm]] as ruby provider. If you want to
|
12
|
-
use rbenv or your system ruby, please refer to their specific
|
13
|
-
documentation to know how to install ruby 2.4.
|
14
|
-
|
15
|
-
First we need to upgrade rvm (always do that from time to time):
|
16
|
-
|
17
|
-
#+begin_src shell
|
18
|
-
$ rvm get latest
|
19
|
-
$ rvm install ruby-2.4.1
|
20
|
-
#+end_src
|
21
|
-
|
22
|
-
Then the installation itself:
|
23
|
-
|
24
|
-
#+begin_src shell
|
25
|
-
$ mkdir mysite
|
26
|
-
$ rvm use ruby-2.4.1@neruda --create
|
27
|
-
$ gem install neruda
|
28
|
-
#+end_src
|
29
|
-
|
30
|
-
Finally, you need to configure it to your needs.
|
31
|
-
|
32
|
-
#+begin_src shell
|
33
|
-
$ pablo init
|
34
|
-
$ bundle install
|
35
|
-
#+end_src
|
36
|
-
|
37
|
-
* Running it
|
38
|
-
|
39
|
-
For testing it, you should just run:
|
40
|
-
|
41
|
-
#+begin_src shell
|
42
|
-
$ pablo start
|
43
|
-
#+end_src
|
44
|
-
|
45
|
-
For production use, just pass the right environnement variable:
|
46
|
-
|
47
|
-
#+begin_src shell
|
48
|
-
$ APP_ENV=production pablo start
|
49
|
-
#+end_src
|
50
|
-
|
51
|
-
To stop it, just enter =ctrl+C= if you are in development mode or enter
|
52
|
-
=pablo stop= in production mode.
|
53
|
-
|
54
|
-
* Pablo command
|
55
|
-
|
56
|
-
In order to manage you Neruda installation, this gem provides a little
|
57
|
-
helper called =pablo=. You already used it to =init=, =start= and =stop=
|
58
|
-
your local installation. It can do a little more.
|
59
|
-
|
60
|
-
** New
|
61
|
-
|
62
|
-
=pablo new [article title]= will open your favorite text editor to let
|
63
|
-
you write a new chapter to your book.
|
64
|
-
|
65
|
-
If you don't provide a title to the command, =pablo= will ask you for
|
66
|
-
one before launching your editor.
|
67
|
-
|
68
|
-
If you don't have configured the =EDITOR= or =VISUAL= environnement
|
69
|
-
variable, =pablo= will default to Gnu Emacs.
|
70
|
-
|
71
|
-
** Compile
|
72
|
-
|
73
|
-
=pablo compile= will first convert your orphaned org files (the ones
|
74
|
-
without a corresponding epub file), then producing the global epub book,
|
75
|
-
made with all your chapters.
|
76
|
-
|
77
|
-
** Capify
|
78
|
-
|
79
|
-
=pablo capify= will add the correct references to Neruda rake tasks in
|
80
|
-
your =Capfile=, what will allow you to call them as part of your
|
81
|
-
deployment workflow.
|
82
|
-
|
83
|
-
You can add the =chapters:sync= task:
|
84
|
-
|
85
|
-
#+begin_src ruby
|
86
|
-
after 'deploy:finishing', 'chapters:sync'
|
87
|
-
#+end_src
|
88
|
-
|
89
|
-
This task depends on all the following. Or you can just select a bunch
|
90
|
-
of them:
|
91
|
-
|
92
|
-
#+begin_src ruby
|
93
|
-
after 'deploy:finishing', 'chapters:build_epubs'
|
94
|
-
after 'deploy:finishing', 'chapters:upload_epubs'
|
95
|
-
after 'deploy:finishing', 'chapters:upload_book'
|
96
|
-
after 'deploy:finishing', 'chapters:purge:remote'
|
97
|
-
#+end_src
|
98
|
-
|
99
|
-
Don't forget to restart the remote sinatra server:
|
100
|
-
|
101
|
-
#+begin_src ruby
|
102
|
-
after 'deploy:finished', 'sinatra:restart:remote'
|
103
|
-
#+end_src
|
104
|
-
|
105
|
-
* Known issues
|
106
|
-
|
107
|
-
See [[TODO.org][TODO.org]]
|