neruda 0.1.0 → 0.2.2

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.
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Neruda
4
- VERSION = '0.1.0'
4
+ # @return [String] the version number of the current Neruda release.
5
+ VERSION = '0.2.2'
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,17 +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
26
  desc 'Convert all org files'
27
- task build: :index do
27
+ task :build, [:force?] => [: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
- Neruda::Utils.throbber(build_html, 'Publishing:')
33
+ begin
34
+ Neruda::Utils.throbber(build_html, 'Building:')
35
+ # :nocov:
36
+ rescue RuntimeError
37
+ warn 'Aborting'
38
+ next
39
+ end
40
+ # :nocov:
32
41
  customize_html = Thread.new do
33
42
  pubfolder = Neruda::Config.settings['public_folder']
34
43
  Dir["#{pubfolder}/**/*.html"].each do |f|
@@ -46,39 +55,33 @@ namespace :site do
46
55
  next
47
56
  end
48
57
  verbose = Rake::FileUtilsExt.verbose_flag
49
- o = Neruda::OrgFile.new(args[:source], verbose: verbose)
50
- o.publish
51
- target = Neruda::OrgFile.target_for_source(args[:source])
58
+ project = Neruda::OrgFile.project_for_source(args[:source])
59
+ if project.nil?
60
+ warn "No project found for #{args['source']}"
61
+ next
62
+ end
63
+ build_html = Thread.new do
64
+ o = Neruda::OrgFile.new(
65
+ args[:source], project: project, verbose: verbose
66
+ )
67
+ Thread.current[:org_file] = o
68
+ o.publish
69
+ end
70
+ begin
71
+ Neruda::Utils.throbber(build_html, 'Building:')
72
+ rescue RuntimeError
73
+ warn 'Aborting'
74
+ next
75
+ end
76
+ target = Neruda::OrgFile.target_for_source(args[:source], project)
52
77
  warn "Customizing file #{target}" if verbose
53
- Neruda::Templater.customize_output(target, o)
78
+ Neruda::Templater.customize_output(target, build_html[:org_file])
54
79
  end
55
80
  end
56
81
 
57
- # :nocov:
58
82
  desc 'Start a test server'
59
83
  task :preview do
60
84
  require 'neruda/preview'
61
85
  Neruda.start_preview
62
86
  end
63
- # :nocov:
64
- end
65
-
66
- namespace :tags do
67
- desc 'List all tags by name'
68
- task :name do
69
- blog_path = Neruda::Config.settings['blog_path']
70
- next if blog_path.nil?
71
- next unless Dir.exist?("src/#{blog_path}")
72
- index = Neruda::Index.new
73
- puts index.sort_by(:name).join("\n")
74
- end
75
-
76
- desc 'List all tags by weight'
77
- task :weight do
78
- blog_path = Neruda::Config.settings['blog_path']
79
- next if blog_path.nil?
80
- next unless Dir.exist?("src/#{blog_path}")
81
- index = Neruda::Index.new
82
- puts index.sort_by(:weight).join("\n")
83
- end
84
87
  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
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'neruda/index'
4
+
5
+ namespace :tags do
6
+ desc 'List all tags by name'
7
+ task :name do
8
+ index = Neruda::Index.new
9
+ next if index.empty?
10
+ puts index.sort_by(:name).join("\n")
11
+ end
12
+
13
+ desc 'List all tags by weight'
14
+ task :weight do
15
+ index = Neruda::Index.new
16
+ next if index.empty?
17
+ puts index.sort_by(:weight).join("\n")
18
+ end
19
+ end
@@ -2,7 +2,26 @@
2
2
  pablo:
3
3
  error:
4
4
  no_command: 'ERROR: no command or unknown command given.'
5
+ usage: 'Usage: pablo %1 [options]'
6
+ commands:
7
+ cmd_title: Commands
8
+ alias: Alias for %1.
9
+ init: Initialize your Neruda instance (you just need to do it once).
10
+ preview: 'Start a test web server to preview your website on http://127.0.0.1:5000'
11
+ open: Open or create an org file.
12
+ build: Compile your org files to HTML.
13
+ publish: Push local changes to your public web server.
14
+ help: Alias for the -h switch.
15
+ options:
16
+ cmd_title: Options
17
+ path: Path to the new file.
18
+ directory: Wrap the new org file in this named folder.
19
+ help: Display help for a command and exit.
20
+ version: Display Neruda version and exit.
5
21
  neruda:
22
+ error:
23
+ label: An error occured.
24
+ explanation: To see it, run again your command with more verbosity, i.e. pablo build -v
6
25
  index:
7
26
  unsorted: Unsorted
8
27
  published_on: Published on %1
@@ -14,5 +33,5 @@ neruda:
14
33
  org:
15
34
  postamble:
16
35
  written_by: Written by %a
17
- with_emacs: with %c, and published with <a href="https://deparis.io/neruda">Neruda</a>
36
+ with_emacs: 'with %c, and published with %N'
18
37
  last_modification: Last modification on %C
@@ -2,7 +2,26 @@
2
2
  pablo:
3
3
  error:
4
4
  no_command: 'ERREUR: Aucune commande ou commande inconnue donnée.'
5
+ usage: 'Usage : pablo %1 [options]'
6
+ commands:
7
+ cmd_title: Commandes
8
+ alias: Alias pour %1.
9
+ init: Initialise votre instance de Neruda (vous ne devriez faire cela qu'une fois).
10
+ preview: "Démarre un serveur web de test pour prévisualiser votre site à l'adresse http://127.0.0.1:5000"
11
+ open: Ouvre ou crée un fichier org.
12
+ build: Compile vos fichiers org en HTML.
13
+ publish: Pousse vos changements locaux vers votre serveur web public.
14
+ help: Alias pour l'argument -h.
15
+ options:
16
+ cmd_title: Options
17
+ path: Chemin vers le nouveau fichier.
18
+ directory: Place le nouveau fichier org dans un dossier à ce nom.
19
+ help: Affiche l'aide pour une commande et quitte.
20
+ version: Affiche la version de Neruda et quitte.
5
21
  neruda:
22
+ error:
23
+ label: Une erreur est survenue
24
+ explanation: Pour voir le détail, lancez de nouveau la commande avec plus de verbosité, par exemple pablo build -v
6
25
  index:
7
26
  unsorted: Non triés
8
27
  published_on: Publié le %1
@@ -14,5 +33,5 @@ neruda:
14
33
  org:
15
34
  postamble:
16
35
  written_by: Écrit par %a
17
- with_emacs: avec %c et publié avec <a href="https://deparis.io/neruda">Neruda</a>
36
+ with_emacs: 'avec %c et publié avec %N'
18
37
  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.0
4
+ version: 0.2.2
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: 2019-11-23 00:00:00.000000000 Z
11
+ date: 2020-10-19 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,8 +207,8 @@ 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
@@ -194,6 +222,7 @@ files:
194
222
  - lib/neruda/config/lisp_config.rb
195
223
  - lib/neruda/config/org-config.el
196
224
  - lib/neruda/config/ox-neruda.el
225
+ - lib/neruda/emacs.rb
197
226
  - lib/neruda/index.rb
198
227
  - lib/neruda/index/atom_generator.rb
199
228
  - lib/neruda/index/org_generator.rb
@@ -208,16 +237,14 @@ files:
208
237
  - lib/tasks/org.rake
209
238
  - lib/tasks/site.rake
210
239
  - lib/tasks/sync.rake
240
+ - lib/tasks/tags.rake
211
241
  - locales/en.yml
212
242
  - locales/fr.yml
213
- - themes/default/css/style.css
214
- - themes/default/fonts/Yanone_Kaffeesatz_400.woff
215
- - themes/default/fonts/Yanone_Kaffeesatz_400.woff2
216
- homepage: https://hg.deparis.io/neruda/
243
+ homepage: https://git.umaneti.net/neruda/about/
217
244
  licenses:
218
245
  - WTFPL
219
246
  metadata: {}
220
- post_install_message:
247
+ post_install_message:
221
248
  rdoc_options:
222
249
  - "-m"
223
250
  - org
@@ -227,15 +254,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
254
  requirements:
228
255
  - - ">="
229
256
  - !ruby/object:Gem::Version
230
- version: '2.5'
257
+ version: '2.6'
231
258
  required_rubygems_version: !ruby/object:Gem::Requirement
232
259
  requirements:
233
260
  - - ">="
234
261
  - !ruby/object:Gem::Version
235
262
  version: '0'
236
263
  requirements: []
237
- rubygems_version: 3.0.6
238
- signing_key:
264
+ rubygems_version: 3.1.4
265
+ signing_key:
239
266
  specification_version: 4
240
- summary: A simplistic way to create an org-mode static website.
267
+ summary: A simplistic way to create an Org static website.
241
268
  test_files: []