neruda 0.1.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Neruda
4
- VERSION = '0.1.2'
4
+ # @return [String] the version number of the current Neruda release.
5
+ VERSION = '0.2.4'
5
6
  end
@@ -1,28 +1,45 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'open-uri'
4
+
3
5
  # Neruda::Config is required by Neruda::Utils
4
6
  require 'neruda/utils'
5
7
 
8
+ require 'rake/clean'
9
+
10
+ CLOBBER.push(
11
+ 'tmp/org.tar.gz', 'tmp/__last_org_version__',
12
+ 'org-config.el', '.dir-locals.el', 'htmlize.el'
13
+ )
14
+
6
15
  namespace :org do
7
- desc 'Download last version of org-mode'
8
- task :download do
16
+ desc 'Download last version of Org'
17
+ file 'tmp/org.tar.gz' do
18
+ verbose = Rake::FileUtilsExt.verbose_flag
19
+ download = Thread.new do
20
+ Thread.current[:org_version] = Neruda::Config.org_last_version
21
+ Neruda::Utils.download_org
22
+ end
23
+ if verbose
24
+ download.join
25
+ warn "Org version #{download[:org_version]} has been downloaded"
26
+ else
27
+ Neruda::Utils.throbber(download, 'Downloading Org:')
28
+ end
29
+ end
30
+
31
+ desc 'Compile Org'
32
+ task compile: 'tmp/org.tar.gz' do |task|
9
33
  verbose = Rake::FileUtilsExt.verbose_flag
10
34
  org_version = "org-#{Neruda::Config.org_last_version}"
11
- next if Neruda::Config.org_last_version.nil?
12
35
  next if Dir.exist?("#{org_version}/lisp")
13
- tarball = "#{org_version}.tar.gz"
14
- curl = ['curl', '--progress-bar', '-O',
15
- "https://orgmode.org/#{tarball}"]
16
36
  make = ['make', '-C', org_version]
17
37
  unless verbose
18
- curl[1] = '-s'
19
38
  make << '-s'
20
39
  make << 'EMACSQ="emacs -Q --eval \'(setq inhibit-message t)\'"'
21
40
  end
22
41
  build = Thread.new do
23
- sh curl.join(' ')
24
- sh "tar xzf #{tarball}"
25
- File.unlink tarball
42
+ sh "tar xzf #{task.prerequisites[0]}"
26
43
  sh((make + ['compile']).join(' '))
27
44
  sh((make + ['autoloads']).join(' '))
28
45
  Dir.glob('org-[0-9.]*').each do |ov|
@@ -34,26 +51,18 @@ namespace :org do
34
51
  build.join
35
52
  warn "#{org_version} has been locally installed"
36
53
  else
37
- Neruda::Utils.throbber(build, 'Installing org mode:')
54
+ Neruda::Utils.throbber(build, 'Installing Org:')
38
55
  end
39
56
  end
40
57
 
41
58
  file 'htmlize.el' do
42
- verbose = Rake::FileUtilsExt.verbose_flag
43
- curl = ['curl', '--progress-bar', '-O',
44
- 'https://raw.githubusercontent.com/hniksic/emacs-htmlize/master/htmlize.el']
45
- curl[1] = '-s' unless verbose
46
- build = Thread.new { sh curl.join(' ') }
47
- if verbose
48
- build.join
49
- warn 'htmlize.el has been locally installed'
50
- else
51
- Neruda::Utils.throbber(build, 'Installing htmlize.el:')
52
- end
59
+ htmlize = URI(
60
+ 'https://raw.githubusercontent.com/hniksic/emacs-htmlize/master/htmlize.el'
61
+ ).open.read
62
+ IO.write 'htmlize.el', htmlize
53
63
  end
54
64
 
55
65
  file 'org-config.el' => 'htmlize.el' do
56
- next if Neruda::Config.org_last_version.nil?
57
66
  Neruda::Config.write_org_lisp_config
58
67
  end
59
68
 
@@ -61,9 +70,22 @@ namespace :org do
61
70
  Neruda::Config.write_dir_locals
62
71
  end
63
72
 
64
- desc 'Install org'
65
- task install: ['org:download', 'org-config.el', '.dir-locals.el'] do
73
+ desc 'Install Org'
74
+ multitask install: ['org:compile', 'org-config.el', '.dir-locals.el'] do
66
75
  mkdir_p "#{Neruda::Config.settings['public_folder']}/assets"
67
- mkdir_p 'src'
76
+ Neruda::Config.sources.each do |s|
77
+ mkdir_p s['path'] unless Dir.exist? s['path']
78
+ end
79
+ end
80
+
81
+ # The following task only run the clobber task (not provided by us)
82
+ # and the org:install one, which is already tested. Thus, we can
83
+ # safely remove it from coverage.
84
+ # :nocov:
85
+ desc 'Upgrade Org'
86
+ task :upgrade do
87
+ Rake::Task['clobber'].execute
88
+ Rake::Task['org:install'].invoke
68
89
  end
90
+ # :nocov:
69
91
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'neruda/emacs'
3
4
  require 'neruda/index'
4
5
  require 'neruda/utils'
5
6
  require 'neruda/org_file'
@@ -8,9 +9,6 @@ require 'neruda/templater'
8
9
  namespace :site do
9
10
  desc 'Generates all index files'
10
11
  task :index do
11
- blog_path = Neruda::Config.settings['blog_path']
12
- next if blog_path.nil?
13
- next unless Dir.exist?("src/#{blog_path}")
14
12
  index = Neruda::Index.new
15
13
  verbose = Rake::FileUtilsExt.verbose_flag
16
14
  if verbose
@@ -18,22 +16,28 @@ namespace :site do
18
16
  next
19
17
  end
20
18
  build = Thread.new do
21
- index.write_all(false)
19
+ index.write_all(verbose: false)
22
20
  end
23
21
  Neruda::Utils.throbber(build, 'Generating indexes:')
22
+ next if index.empty?
23
+ Neruda::Config.write_org_lisp_config(with_tags: true)
24
24
  end
25
25
 
26
- desc 'Convert all org files'
27
- task build: :index do
26
+ desc 'Convert and customize all org files'
27
+ task :build, [:force?] => ['org-config.el', :index] do |_, args|
28
+ args.with_defaults(:force? => false)
28
29
  build_html = Thread.new do
29
- Neruda::OrgFile.new(nil, verbose: Rake::FileUtilsExt.verbose_flag).publish
30
+ rm_r 'tmp/timestamps', force: true if args[:force?]
31
+ Neruda::Emacs.new(verbose: Rake::FileUtilsExt.verbose_flag).publish
30
32
  end
31
33
  begin
32
- Neruda::Utils.throbber(build_html, 'Publishing:')
34
+ Neruda::Utils.throbber(build_html, 'Building:')
35
+ # :nocov:
33
36
  rescue RuntimeError
34
37
  warn 'Aborting'
35
38
  next
36
39
  end
40
+ # :nocov:
37
41
  customize_html = Thread.new do
38
42
  pubfolder = Neruda::Config.settings['public_folder']
39
43
  Dir["#{pubfolder}/**/*.html"].each do |f|
@@ -43,34 +47,9 @@ namespace :site do
43
47
  Neruda::Utils.throbber(customize_html, 'Customizing:')
44
48
  end
45
49
 
46
- namespace :build do
47
- desc 'Convert one org file'
48
- task :one, :source do |_, args|
49
- if args[:source].nil?
50
- warn 'No source file given'
51
- next
52
- end
53
- verbose = Rake::FileUtilsExt.verbose_flag
54
- o = Thread.new do
55
- Neruda::OrgFile.new(args[:source], verbose: verbose).publish
56
- end
57
- begin
58
- Neruda::Utils.throbber(o, 'Publishing:')
59
- rescue RuntimeError
60
- warn 'Aborting'
61
- next
62
- end
63
- target = Neruda::OrgFile.target_for_source(args[:source])
64
- warn "Customizing file #{target}" if verbose
65
- Neruda::Templater.customize_output(target, o)
66
- end
67
- end
68
-
69
- # :nocov:
70
50
  desc 'Start a test server'
71
51
  task :preview do
72
52
  require 'neruda/preview'
73
53
  Neruda.start_preview
74
54
  end
75
- # :nocov:
76
55
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'neruda/config'
4
+ require 'neruda/utils'
4
5
 
5
6
  def rsync_command(verbose, test = nil)
6
7
  rsync_command = Neruda::Config.settings['rsync']
@@ -24,7 +25,10 @@ namespace :sync do
24
25
  next
25
26
  end
26
27
  public_folder = Neruda::Config.settings['public_folder']
27
- sh [rsync_command(Rake::FileUtilsExt.verbose_flag, args[:test?]),
28
- "#{public_folder}/", remote_path].join(' ')
28
+ publish_thread = Thread.new do
29
+ sh [rsync_command(Rake::FileUtilsExt.verbose_flag, args[:test?]),
30
+ "#{public_folder}/", remote_path].join(' ')
31
+ end
32
+ Neruda::Utils.throbber(publish_thread, 'Publishing:')
29
33
  end
30
34
  end
@@ -5,19 +5,15 @@ require 'neruda/index'
5
5
  namespace :tags do
6
6
  desc 'List all tags by name'
7
7
  task :name do
8
- blog_path = Neruda::Config.settings['blog_path']
9
- next if blog_path.nil?
10
- next unless Dir.exist?("src/#{blog_path}")
11
8
  index = Neruda::Index.new
9
+ next if index.empty?
12
10
  puts index.sort_by(:name).join("\n")
13
11
  end
14
12
 
15
13
  desc 'List all tags by weight'
16
14
  task :weight do
17
- blog_path = Neruda::Config.settings['blog_path']
18
- next if blog_path.nil?
19
- next unless Dir.exist?("src/#{blog_path}")
20
15
  index = Neruda::Index.new
16
+ next if index.empty?
21
17
  puts index.sort_by(:weight).join("\n")
22
18
  end
23
19
  end
@@ -2,7 +2,27 @@
2
2
  pablo:
3
3
  error:
4
4
  no_command: 'ERROR: no command or unknown command given.'
5
+ no_file: 'ERROR: no file to open or edit.'
6
+ usage: 'Usage: pablo %1 [options]'
7
+ commands:
8
+ cmd_title: Commands
9
+ alias: Alias for %1.
10
+ init: Initialize your Neruda instance (you just need to do it once).
11
+ preview: 'Start a test web server to preview your website on http://127.0.0.1:5000'
12
+ open: Open or create an org file.
13
+ build: Compile your org files to HTML.
14
+ publish: Push local changes to your public web server.
15
+ help: Alias for the -h switch.
16
+ options:
17
+ cmd_title: Options
18
+ path: Path to the new file.
19
+ directory: Wrap the new org file in this named folder.
20
+ help: Display help for a command and exit.
21
+ version: Display Neruda version and exit.
5
22
  neruda:
23
+ error:
24
+ label: An error occured.
25
+ explanation: To see it, run again your command with more verbosity, i.e. pablo build -v
6
26
  index:
7
27
  unsorted: Unsorted
8
28
  published_on: Published on %1
@@ -14,5 +34,5 @@ neruda:
14
34
  org:
15
35
  postamble:
16
36
  written_by: Written by %a
17
- with_emacs: with %c, and published with <a href="https://deparis.io/neruda">Neruda</a>
37
+ with_emacs: 'with %c, and published with %N'
18
38
  last_modification: Last modification on %C
@@ -1,8 +1,28 @@
1
1
  ---
2
2
  pablo:
3
3
  error:
4
- no_command: 'ERREUR: Aucune commande ou commande inconnue donnée.'
4
+ no_command: 'ERREUR: Aucune commande ou commande inconnue donnée.'
5
+ no_file: 'ERREUR : Aucun fichier à ouvrir ou éditer.'
6
+ usage: 'Usage : pablo %1 [options]'
7
+ commands:
8
+ cmd_title: Commandes
9
+ alias: Alias pour %1.
10
+ init: Initialise votre instance de Neruda (vous ne devriez faire cela qu'une fois).
11
+ preview: "Démarre un serveur web de test pour prévisualiser votre site à l'adresse http://127.0.0.1:5000"
12
+ open: Ouvre ou crée un fichier org.
13
+ build: Compile vos fichiers org en HTML.
14
+ publish: Pousse vos changements locaux vers votre serveur web public.
15
+ help: Alias pour l'argument -h.
16
+ options:
17
+ cmd_title: Options
18
+ path: Chemin vers le nouveau fichier.
19
+ directory: Place le nouveau fichier org dans un dossier à ce nom.
20
+ help: Affiche l'aide pour une commande et quitte.
21
+ version: Affiche la version de Neruda et quitte.
5
22
  neruda:
23
+ error:
24
+ label: Une erreur est survenue
25
+ explanation: Pour voir le détail, lancez de nouveau la commande avec plus de verbosité, par exemple pablo build -v
6
26
  index:
7
27
  unsorted: Non triés
8
28
  published_on: Publié le %1
@@ -14,5 +34,5 @@ neruda:
14
34
  org:
15
35
  postamble:
16
36
  written_by: Écrit par %a
17
- with_emacs: avec %c et publié avec <a href="https://deparis.io/neruda">Neruda</a>
37
+ with_emacs: 'avec %c et publié avec %N'
18
38
  last_modification: dernière modification le %C
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neruda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Étienne Deparis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-22 00:00:00.000000000 Z
11
+ date: 2020-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.2'
33
+ version: '4.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.2'
40
+ version: '4.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rainbow
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '12.3'
61
+ version: '13.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '12.3'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: byebug
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '11.0'
75
+ version: '11.1'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '11.0'
82
+ version: '11.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: org-ruby
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,70 +100,98 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.12'
103
+ version: '0.13'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.12'
110
+ version: '0.13'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: pry-doc
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.0'
117
+ version: '1.1'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.0'
124
+ version: '1.1'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.8'
131
+ version: '3.9'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.8'
138
+ version: '3.9'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0.70'
145
+ version: '0.93'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0.70'
152
+ version: '0.93'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-performance
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.8'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.8'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.43'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.43'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: simplecov
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
185
  - - "~>"
158
186
  - !ruby/object:Gem::Version
159
- version: '0.16'
187
+ version: '0.19'
160
188
  type: :development
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
192
  - - "~>"
165
193
  - !ruby/object:Gem::Version
166
- version: '0.16'
194
+ version: '0.19'
167
195
  - !ruby/object:Gem::Dependency
168
196
  name: yard
169
197
  requirement: !ruby/object:Gem::Requirement
@@ -179,14 +207,13 @@ dependencies:
179
207
  - !ruby/object:Gem::Version
180
208
  version: '0.9'
181
209
  description: |
182
- An opinionated org-mode static website generator.
183
- Write your org files, we take care of the rest.
210
+ An opinionated Org static website generator.
211
+ Write your org-mode files, we take care of the rest.
184
212
  email: etienne@depar.is
185
213
  executables:
186
214
  - pablo
187
215
  extensions: []
188
- extra_rdoc_files:
189
- - LICENSE
216
+ extra_rdoc_files: []
190
217
  files:
191
218
  - LICENSE
192
219
  - bin/pablo
@@ -194,6 +221,7 @@ files:
194
221
  - lib/neruda/config/lisp_config.rb
195
222
  - lib/neruda/config/org-config.el
196
223
  - lib/neruda/config/ox-neruda.el
224
+ - lib/neruda/emacs.rb
197
225
  - lib/neruda/index.rb
198
226
  - lib/neruda/index/atom_generator.rb
199
227
  - lib/neruda/index/org_generator.rb
@@ -211,32 +239,27 @@ files:
211
239
  - lib/tasks/tags.rake
212
240
  - locales/en.yml
213
241
  - locales/fr.yml
214
- - themes/default/css/style.css
215
- - themes/default/fonts/Yanone_Kaffeesatz_400.woff
216
- - themes/default/fonts/Yanone_Kaffeesatz_400.woff2
217
- homepage: https://git.deparis.io/neruda/
242
+ homepage: https://git.umaneti.net/neruda/about/
218
243
  licenses:
219
244
  - WTFPL
220
245
  metadata: {}
221
- post_install_message:
222
- rdoc_options:
223
- - "-m"
224
- - org
246
+ post_install_message:
247
+ rdoc_options: []
225
248
  require_paths:
226
249
  - lib
227
250
  required_ruby_version: !ruby/object:Gem::Requirement
228
251
  requirements:
229
252
  - - ">="
230
253
  - !ruby/object:Gem::Version
231
- version: '2.5'
254
+ version: '2.6'
232
255
  required_rubygems_version: !ruby/object:Gem::Requirement
233
256
  requirements:
234
257
  - - ">="
235
258
  - !ruby/object:Gem::Version
236
259
  version: '0'
237
260
  requirements: []
238
- rubygems_version: 3.1.2
239
- signing_key:
261
+ rubygems_version: 3.1.4
262
+ signing_key:
240
263
  specification_version: 4
241
- summary: A simplistic way to create an org-mode static website.
264
+ summary: A simplistic way to create an Org static website.
242
265
  test_files: []