paperwork 0.2.4 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5d904d85bcbd5a2ba7eca856dad8793b0e4eee24da094fbbc1fe774584eae0c
4
- data.tar.gz: 1c33cc363286cc5413a321196719cfb6e9a36e61d5e29778491cca20ad7f67dc
3
+ metadata.gz: e485a22660790291fb8fc471ef6bbec18c5e8ef50bdebf8cbfac4fd5b90f1ebd
4
+ data.tar.gz: b275c2b329f53ca0c8584a596418c924183906a4df0cdedbb528ecb993024655
5
5
  SHA512:
6
- metadata.gz: 40c2a56a01a32c60dbf5770d5875ab952a12cf808d5a5a1a0ab441e30daf53640114ddceb9d539d65770da8253df0800ccd067474dd89ae811924dd2420448a9
7
- data.tar.gz: c46981794b979171ef040449fe987dfc2e2199cf8b7714f73b7b6a0fd176aeefe59fa596b763e9b388c8039b09ec0a5b8774465d9cebe58d5dfc2967d6426bc9
6
+ metadata.gz: 6331130f7d21e226dd7021ff8fd94823d98f518fe93f373329247a3a09fb4b7564f6338001df33aa48666fe145fd22a4a0b8b3836e34e4c55bb21a928b93b89e
7
+ data.tar.gz: 8d02e0938cbae8cf07448d829edafeb3385d8b794f32310c8b8d335f15ee667c99c2fb27c098c64ddf5c769f2aa33b2a4b18a9c29492597b4c6c3268586581f8
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- paperwork (0.2.4)
4
+ paperwork (0.3.2)
5
5
  rake (~> 12.3)
6
6
  redcarpet (~> 3.5.0)
7
+ thor (~> 1.1.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
@@ -51,6 +52,7 @@ GEM
51
52
  docile (~> 1.1)
52
53
  simplecov-html (~> 0.11)
53
54
  simplecov-html (0.12.2)
55
+ thor (1.1.0)
54
56
  unicode-display_width (1.7.0)
55
57
 
56
58
  PLATFORMS
data/Rakefile CHANGED
@@ -13,4 +13,4 @@ task rebuild: [:clean, :build]
13
13
  task default: :spec
14
14
  CLEAN.include(".work/coverage")
15
15
 
16
- paperwork :doc, sources: ["README.md", "nested_example/navdemo.md", "site.yml", "custom.js", "custom.css"]
16
+ paperwork :doc, sources: ["README.md", "nested_example/navdemo.md", "paperwork.yml", "custom.js", "custom.css"]
data/bin/paperwork ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "paperwork"
5
+
6
+ Paperwork::CLI.start
data/lib/paperwork.rb CHANGED
@@ -35,5 +35,7 @@ require "paperwork/tasks/root_helpers"
35
35
  require "paperwork/tasks/document"
36
36
  require "paperwork/tasks/template"
37
37
 
38
+ require "paperwork/cli"
39
+
38
40
 
39
41
  include Paperwork # rubocop:disable Style/MixinUsage
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # globla namespace for paperwork
5
+ #
6
+ module Paperwork
7
+ require "yaml"
8
+ require "thor"
9
+ require "paperwork"
10
+
11
+ ##
12
+ # command line interface for paperwork
13
+ #
14
+ class CLI < Thor
15
+ attr_accessor :config
16
+
17
+ CONFIG_FILE = "paperwork.yml"
18
+
19
+ class_option :verbose, aliases: "-v", desc: "be verbose about the build", type: :boolean, default: false
20
+
21
+ desc "build",
22
+ <<~DESC
23
+ creates documentation as defined in
24
+ #{CONFIG_FILE} and writes it to
25
+ '#{Paperwork::Config[:build_root]}/<name>/build'
26
+ DESC
27
+ def build
28
+ build_internal "build"
29
+ end
30
+
31
+ desc "rebuild",
32
+ <<~DESC
33
+ removes previous builds and creates
34
+ documentation as defined in
35
+ #{CONFIG_FILE} and writes it to
36
+ '#{Paperwork::Config[:build_root]}/<name>/build'
37
+ DESC
38
+ def rebuild
39
+ build_internal "rebuild"
40
+ end
41
+
42
+ desc "server",
43
+ "starts a aerver that serves documentation as defined in #{CONFIG_FILE}"
44
+ def server
45
+ build_internal "server"
46
+ end
47
+
48
+ protected
49
+
50
+ def build_internal(task)
51
+ setup_config
52
+ setup_tasks
53
+ invoke_tasks task
54
+ end
55
+
56
+ def setup_config
57
+ unless File.exist?(CONFIG_FILE)
58
+ raise Exception.new(
59
+ "#{CONFIG_FILE} not found. You need to create a configuration file first."
60
+ )
61
+ end
62
+
63
+ yaml = YAML.load_file(CONFIG_FILE)
64
+ self.config = yaml["config"]
65
+ self.config["sources"] << CONFIG_FILE
66
+
67
+ return unless self.config.nil?
68
+
69
+ raise Exception.new(
70
+ "No 'config' found in #{CONFIG_FILE}. You need to describe the build setup in a 'config' section first."
71
+ )
72
+ end
73
+
74
+ def setup_tasks
75
+ paperwork self.config["name"], sources: self.config["sources"]
76
+ end
77
+
78
+ def invoke_tasks(target)
79
+ Rake::Task["paperwork:#{self.config["name"]}:set_verbose"].invoke if options[:verbose]
80
+ Rake::Task["paperwork:#{self.config["name"]}:#{target}"].invoke
81
+ end
82
+ end
83
+ end
@@ -9,7 +9,7 @@ module Paperwork
9
9
  ##
10
10
  # main task generator for building the document
11
11
  #
12
- class Document < Paperwork::Tasks::Base
12
+ class Document < Paperwork::Tasks::Base # rubocop:disable Metrics/ClassLength
13
13
  attr_reader :dir
14
14
 
15
15
  include Rake::DSL
@@ -34,12 +34,18 @@ module Paperwork
34
34
 
35
35
  private
36
36
 
37
- def get_destination(dst_base, src) # rubocop:disable Metrics/AbcSize
38
- nested = File.dirname(src)
37
+ def get_destination(dst_base, src) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
38
+ nested_base = File.dirname(src)
39
+ nested_base = if nested_base == "."
40
+ dst_base
41
+ else
42
+ File.join(dst_base, nested_base)
43
+ end
44
+
39
45
  ext = File.extname(src)
40
46
  case ext
41
47
  when ".md"
42
- File.join(dst_base, nested, File.basename(src)).gsub(".md", ".html.md")
48
+ File.join(nested_base, File.basename(src)).gsub(".md", ".html.md")
43
49
  when ".scss"
44
50
  Paperwork::Config[:custom_css] << File.basename(src, ext)
45
51
  File.join(dst_base, "stylesheets", File.basename(src)).gsub(".scss", ".css.scss")
@@ -62,17 +68,16 @@ module Paperwork
62
68
  task self.name => self.dependencies do
63
69
  verbose_flag = Paperwork::Config[:verbose] ? " --verbose" : ""
64
70
  Dir.chdir(self.dir) do
65
- Bundler.with_unbundled_env do
66
- Process.spawn(
67
- "bundle exec middleman build#{verbose_flag}",
68
- out: :out,
69
- in: :in,
70
- err: :err
71
- )
71
+ cmd = "bundle exec middleman build#{verbose_flag}"
72
+ if defined? Bundler
73
+ Bundler.with_unbundled_env do
74
+ Process.spawn(cmd, out: :out, in: :in, err: :err)
75
+ end
76
+ else
77
+ Process.spawn(cmd, out: :out, in: :in, err: :err)
72
78
  end
73
79
  Process.waitall
74
80
  end
75
-
76
81
  puts
77
82
  puts "...Done!"
78
83
  puts "build artifacts are located in #{File.join(self.dir, "build")}"
@@ -80,9 +85,9 @@ module Paperwork
80
85
  end
81
86
  end
82
87
 
83
- def tasks_nested # rubocop:disable Metrics/AbcSize
84
- namespace :paperwork do
85
- namespace self.name do
88
+ def tasks_nested # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
89
+ namespace :paperwork do # rubocop:disable Metrics/BlockLength
90
+ namespace self.name do # rubocop:disable Metrics/BlockLength
86
91
  task build: ["paperwork:#{self.name}"]
87
92
 
88
93
  desc "rebuild documentation from scratch for '#{self.name}'"
@@ -99,6 +104,31 @@ module Paperwork
99
104
  task :clean do
100
105
  rm_rf self.dir
101
106
  end
107
+
108
+ desc "start middleman server for editing documents and get visual feedback with live reload"
109
+ task server: :build do
110
+ Dir.chdir(self.dir) do
111
+ cmd = "bundle exec middleman server"
112
+ if defined? Bundler
113
+ Bundler.with_unbundled_env do
114
+ Process.spawn(cmd, out: :out, in: :in, err: :err)
115
+ end
116
+ else
117
+ Process.spawn(cmd, out: :out, in: :in, err: :err)
118
+ end
119
+ puts
120
+ puts "+---------------------------------------------------------------+"
121
+ puts "| |"
122
+ puts "| IMPORTANT: Edit documents in #{self.dir} for live reload! |"
123
+ puts "| ---------- The documents there are hard links to your |"
124
+ puts "| source files, so the changes will be there |"
125
+ puts "| as well. |"
126
+ puts "| |"
127
+ puts "+---------------------------------------------------------------+"
128
+ puts
129
+ Process.waitall
130
+ end
131
+ end
102
132
  end
103
133
  end
104
134
  end
@@ -85,7 +85,6 @@ module DocRenderer
85
85
  <<~IMG
86
86
  <img src="#{relative_link link, scope.current_path}" alt="#{alt_text}" class="img-fluid">#{title}</img>
87
87
  IMG
88
- #super(relative_link(link, scope.current_path), title, alt_text)
89
88
  end
90
89
 
91
90
  # def linebreak()
@@ -20,7 +20,7 @@ module InfoHelpers
20
20
  end
21
21
  end
22
22
 
23
- def relative_link(stringifyable, current_path=current_page.path)
23
+ def relative_link(stringifyable, current_path = current_page.path)
24
24
  relative = String.new
25
25
  dots = current_path.split(/[\/\\]/).size - 1
26
26
  dots.times{ relative += "../" }
@@ -35,28 +35,29 @@ module InfoHelpers
35
35
  relative + stringifyable.to_s
36
36
  end
37
37
 
38
- def site?
39
- data.respond_to?(:site)
38
+ def paperwork?
39
+ data.respond_to?(:paperwork)
40
40
  end
41
41
 
42
42
  def navbar?
43
- site? && data.site.respond_to?(:navbar)
43
+ paperwork? && data.paperwork.respond_to?(:navbar)
44
44
  end
45
45
 
46
46
  def navbar_links
47
- nav = data.site.navbar.links if navbar?
47
+ nav = data.paperwork.navbar.links if navbar?
48
48
  nav ||= {}
49
+ mapped = {}
49
50
  nav.each do |name, link|
50
- nav[name] = relative_link(link)
51
+ mapped[name] = relative_link(link)
51
52
  end
52
- nav
53
+ mapped
53
54
  end
54
55
 
55
56
  def navbar_brand
56
- data.site.navbar.brand if navbar?
57
+ data.paperwork.navbar.brand if navbar?
57
58
  end
58
59
 
59
60
  def footer_text
60
- data.site.footer if site?
61
+ data.paperwork.footer if paperwork?
61
62
  end
62
63
  end
@@ -28,13 +28,13 @@ module Paperwork
28
28
  directory self.name => self.dependencies do
29
29
  cp_r template, self.dir
30
30
  Dir.chdir(self.dir) do
31
- Bundler.with_unbundled_env do
32
- Process.spawn(
33
- "bundle install --path=../.bundle/gems --jobs 8 --without test development",
34
- out: :out,
35
- in: :in,
36
- err: :err
37
- )
31
+ cmd = "bundle install --path=../.bundle/gems --jobs 8 --without test development"
32
+ if defined? Bundler
33
+ Bundler.with_unbundled_env do
34
+ Process.spawn(cmd, out: :out, in: :in, err: :err)
35
+ end
36
+ else
37
+ Process.spawn(cmd, out: :out, in: :in, err: :err)
38
38
  end
39
39
  Process.spawn("yarn install", out: :out, in: :in, err: :err)
40
40
  Process.waitall
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Paperwork
4
- VERSION = "0.2.4"
4
+ VERSION = "0.3.2"
5
5
  end
data/paperwork.gemspec CHANGED
@@ -35,4 +35,5 @@ Gem::Specification.new do |spec|
35
35
 
36
36
  spec.add_runtime_dependency "rake", "~> 12.3"
37
37
  spec.add_runtime_dependency "redcarpet", "~> 3.5.0"
38
+ spec.add_runtime_dependency "thor", "~> 1.1.0"
38
39
  end
@@ -5,3 +5,11 @@ navbar:
5
5
  links:
6
6
  Home: README.md
7
7
  Navbar Demo: nested_example/navdemo.md
8
+
9
+ config:
10
+ name: doc
11
+ sources:
12
+ - README.md
13
+ - nested_example/navdemo.md
14
+ - custom.js
15
+ - custom.css
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperwork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schmid
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-19 00:00:00.000000000 Z
11
+ date: 2021-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -108,12 +108,25 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 3.5.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: thor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.0
111
125
  description:
112
126
  email:
113
127
  - couchbelag@gmail.com
114
128
  executables:
115
- - console
116
- - setup
129
+ - paperwork
117
130
  extensions: []
118
131
  extra_rdoc_files: []
119
132
  files:
@@ -127,13 +140,13 @@ files:
127
140
  - LICENSE.txt
128
141
  - README.md
129
142
  - Rakefile
130
- - bin/console
131
- - bin/setup
143
+ - bin/paperwork
132
144
  - custom.css
133
145
  - custom.js
134
146
  - lib/paperwork.rb
135
147
  - lib/paperwork/assets/paperwork/presentation.css
136
148
  - lib/paperwork/assets/presentation.css
149
+ - lib/paperwork/cli.rb
137
150
  - lib/paperwork/config.rb
138
151
  - lib/paperwork/tasks.rb
139
152
  - lib/paperwork/tasks/base.rb
@@ -163,7 +176,7 @@ files:
163
176
  - lib/paperwork/version.rb
164
177
  - nested_example/navdemo.md
165
178
  - paperwork.gemspec
166
- - site.yml
179
+ - paperwork.yml
167
180
  homepage: https://gitlab.com/couchbelag/paperwork
168
181
  licenses:
169
182
  - MIT
data/bin/console DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require "bundler/setup"
5
- require "paperwork"
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
13
-
14
- require "irb"
15
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here