paperwork 0.2.4 → 0.3.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.
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