station 0.0.113 → 0.0.114
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +9 -7
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/docs/How-To-Use.md +2 -0
- data/lib/nexmo_developer/.nvmrc +1 -1
- data/lib/nexmo_developer/.ruby-version +1 -1
- data/lib/nexmo_developer/Gemfile +8 -9
- data/lib/nexmo_developer/Gemfile.lock +101 -98
- data/lib/nexmo_developer/Runbook.md +4 -4
- data/lib/nexmo_developer/app/controllers/jobs_controller.rb +7 -7
- data/lib/nexmo_developer/app/controllers/static_controller.rb +2 -13
- data/lib/nexmo_developer/app/models/feedback/feedback.rb +2 -0
- data/lib/nexmo_developer/app/presenters/head.rb +5 -1
- data/lib/nexmo_developer/app/presenters/improve_page_presenter.rb +1 -1
- data/lib/nexmo_developer/app/services/orbit_feedback_notifier.rb +53 -0
- data/lib/nexmo_developer/app/services/translator/files_list_coordinator.rb +1 -1
- data/lib/nexmo_developer/app/views/contribute/guides/landing-pages.md +0 -10
- data/lib/nexmo_developer/app/views/contribute/guides/markdown-guide.md +0 -38
- data/lib/nexmo_developer/app/views/contribute/guides/platform.md +0 -1
- data/lib/nexmo_developer/app/webpacker/packs/application.js +0 -3
- data/lib/nexmo_developer/config/routes.rb +0 -2
- data/lib/nexmo_developer/lib/tasks/cache.rake +1 -1
- data/lib/nexmo_developer/lib/tasks/careers.rake +1 -1
- data/lib/nexmo_developer/lib/tasks/ci.rake +7 -7
- data/lib/nexmo_developer/lib/tasks/diff.rake +5 -5
- data/lib/nexmo_developer/lib/tasks/documentation.rake +1 -1
- data/lib/nexmo_developer/lib/tasks/generate_search_terms.rake +2 -2
- data/lib/nexmo_developer/lib/tasks/links.rake +6 -6
- data/lib/nexmo_developer/lib/tasks/smartling.rake +1 -1
- data/lib/nexmo_developer/version.rb +1 -1
- data/package.json +20 -22
- data/station.gemspec +4 -4
- data/yarn.lock +983 -2784
- metadata +47 -52
- data/lib/nexmo_developer/.dockerignore +0 -1
- data/lib/nexmo_developer/Dockerfile +0 -28
- data/lib/nexmo_developer/app/screenshots/webhook-url-for-delivery-receipt.js +0 -44
- data/lib/nexmo_developer/app/screenshots/webhook-url-for-inbound-message.js +0 -44
- data/lib/nexmo_developer/app/views/static/default_landing/partials/_submit_your_idea_form.html.erb +0 -58
- data/lib/nexmo_developer/app/webpacker/javascript/spotlight/index.js +0 -12
- data/lib/nexmo_developer/docker-compose.yml +0 -43
- data/lib/nexmo_developer/lib/tasks/screenshots.rake +0 -11
@@ -4,7 +4,7 @@ Nexmo Developer is a simple Rails application with a mounted Sinatra app that ha
|
|
4
4
|
|
5
5
|
# Deployment
|
6
6
|
|
7
|
-
NDP is hosted in Heroku and is automatically deployed every time a branch is merged into
|
7
|
+
NDP is hosted in Heroku and is automatically deployed every time a branch is merged into main via a Github integration.
|
8
8
|
In case you want to force a deploy, you can always deploy NDP from [Heroku's dashboard](https://dashboard.heroku.com/apps/nexmo-developer).
|
9
9
|
|
10
10
|
## Required Resources
|
@@ -39,7 +39,7 @@ In case NDP is Down:
|
|
39
39
|
|
40
40
|
* Check if [Heroku](https://status.heroku.com/) is having an outage. Unfortunately, if that is the case then there isn't much you can do about it (at least for now).
|
41
41
|
* Otherwise, check the [logs](#logs) or [Bugsnag](#error-monitoring-and-reporting) to see if any issues show up and try to reproduce it locally.
|
42
|
-
If the issue is related to the latest deploy, just revert the offending commits and the deploy again while you work on a fix. Once a fix is ready, open a Pull Request, make sure that it works in the corresponding Review App and finally after all the checks pass merge it into
|
42
|
+
If the issue is related to the latest deploy, just revert the offending commits and the deploy again while you work on a fix. Once a fix is ready, open a Pull Request, make sure that it works in the corresponding Review App and finally after all the checks pass merge it into main.
|
43
43
|
|
44
44
|
# Available configuration options
|
45
45
|
|
@@ -53,7 +53,7 @@ To enable the Search form locally, the `ALGOLIA_SEARCH_KEY` environment variable
|
|
53
53
|
|
54
54
|
# Common issues when running NDP locally
|
55
55
|
|
56
|
-
NDP can be run locally either directly or using Docker, for more information about how to run it see the [Readme](https://github.com/Nexmo/nexmo-developer/blob/
|
56
|
+
NDP can be run locally either directly or using Docker, for more information about how to run it see the [Readme](https://github.com/Nexmo/nexmo-developer/blob/main/README.md#running-locally). When using docker, re-building the image should fix the following issues
|
57
57
|
|
58
58
|
* `Could not find definition '<insert_file_here>' in '<path>'`: set the right `OAS_PATH` in `.env`, check `.env.example` for the default value.
|
59
59
|
|
@@ -66,4 +66,4 @@ NDP can be run locally either directly or using Docker, for more information abo
|
|
66
66
|
|
67
67
|
* Webpacker errors:
|
68
68
|
* `The engine "node" is incompatible with this module. Expected version...` We use [nvm](https://github.com/nvm-sh/nvm) as node's version manage, check that the right version of node is installed (specified in `.nvmrc`) and run `nvm use <version>`.
|
69
|
-
* Make sure that all the packages are
|
69
|
+
* Make sure that all the packages are installed by running `yarn install`
|
@@ -8,19 +8,19 @@ class JobsController < ApplicationController
|
|
8
8
|
if params['ref'] == 'refs/heads/master'
|
9
9
|
url = "https://api.travis-ci.org/repo/#{ENV['TRAVIS_REPO_ID']}/requests"
|
10
10
|
RestClient.post(url, {
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
request: {
|
12
|
+
branch: 'master',
|
13
|
+
config: {
|
14
|
+
script: 'bundle exec rake diff:execute',
|
15
|
+
env: {
|
16
|
+
SSH_KEY_REQUIRED: true,
|
17
17
|
},
|
18
18
|
},
|
19
19
|
},
|
20
20
|
}.to_json, {
|
21
21
|
content_type: :json,
|
22
22
|
accept: :json,
|
23
|
-
|
23
|
+
Authorization: "token #{ENV['TRAVIS_TOKEN']}",
|
24
24
|
'Travis-API-Version': '3',
|
25
25
|
})
|
26
26
|
|
@@ -45,6 +45,8 @@ class StaticController < ApplicationController
|
|
45
45
|
migrate_tropo
|
46
46
|
end
|
47
47
|
|
48
|
+
@frontmatter = @landing_config
|
49
|
+
@document_title = @landing_config['title']
|
48
50
|
@navigation = yaml_name.to_sym
|
49
51
|
render layout: 'landing'
|
50
52
|
end
|
@@ -145,19 +147,6 @@ class StaticController < ApplicationController
|
|
145
147
|
end
|
146
148
|
end
|
147
149
|
|
148
|
-
def spotlight
|
149
|
-
response = RestClient.post(
|
150
|
-
'https://hooks.zapier.com/hooks/catch/1936493/oyzjr4i/',
|
151
|
-
params.permit(:name, :email_address, :background, :outline, :previous_content).to_h
|
152
|
-
)
|
153
|
-
|
154
|
-
if response.code == 200
|
155
|
-
head :ok
|
156
|
-
else
|
157
|
-
head :unprocessable_entity
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
150
|
def blog_cookie
|
162
151
|
# This is the first touch time so we only want to set it if it's not already set
|
163
152
|
set_utm_cookie('ft', Time.now.getutc.to_i) unless cookies[:ft]
|
@@ -26,11 +26,15 @@ class Head
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def title
|
29
|
-
@title ||= config.fetch('title') do
|
29
|
+
@title ||= title_from_frontmatter || config.fetch('title') do
|
30
30
|
raise "You must provide a 'title' parameter in header_meta.yml"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
def title_from_frontmatter
|
35
|
+
@frontmatter && (@frontmatter['meta_title'] || @frontmatter['title'])
|
36
|
+
end
|
37
|
+
|
34
38
|
def description
|
35
39
|
@description ||= Description.new(config: config, frontmatter: frontmatter).description
|
36
40
|
end
|
@@ -4,7 +4,7 @@ class ImprovePagePresenter
|
|
4
4
|
end
|
5
5
|
|
6
6
|
def github_url
|
7
|
-
@github_url ||= "https://github.com/#{docs_repo}/blob/#{ENV.fetch('branch', '
|
7
|
+
@github_url ||= "https://github.com/#{docs_repo}/blob/#{ENV.fetch('branch', 'main')}/#{path_to_url}"
|
8
8
|
end
|
9
9
|
|
10
10
|
def docs_repo
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class OrbitFeedbackNotifier
|
2
|
+
CONFIG = YAML.load_file("#{Rails.configuration.docs_base_path}/config/business_info.yml")
|
3
|
+
|
4
|
+
def self.call(feedback)
|
5
|
+
new(feedback).post!
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(feedback)
|
9
|
+
@feedback = feedback
|
10
|
+
end
|
11
|
+
|
12
|
+
def params
|
13
|
+
@params ||= {
|
14
|
+
id: @feedback.id,
|
15
|
+
email: @feedback.owner.email,
|
16
|
+
resource: "Offered #{@feedback.sentiment} feedback on #{@feedback.resource.uri}",
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def uri
|
21
|
+
@uri ||= URI("https://app.orbit.love/api/v1/#{ENV['ORBIT_WORKSPACE_ID']}/activities")
|
22
|
+
end
|
23
|
+
|
24
|
+
def post!
|
25
|
+
return unless ENV['ORBIT_WORKSPACE_ID']
|
26
|
+
|
27
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
28
|
+
http.use_ssl = true
|
29
|
+
req = Net::HTTP::Post.new(uri)
|
30
|
+
req['Accept'] = 'application/json'
|
31
|
+
req['Content-Type'] = 'application/json'
|
32
|
+
req['Authorization'] = "Bearer #{ENV['ORBIT_API_KEY']}"
|
33
|
+
|
34
|
+
req.body = {
|
35
|
+
activity: {
|
36
|
+
activity_type: 'adp:feedback',
|
37
|
+
key: "adp-feedback-#{params[:id]}",
|
38
|
+
title: 'Offered feedback on ADP',
|
39
|
+
description: params[:resource],
|
40
|
+
occurred_at: Time.zone.now.iso8601,
|
41
|
+
},
|
42
|
+
identity: {
|
43
|
+
source: 'email',
|
44
|
+
source_host: CONFIG['base_url'],
|
45
|
+
email: params[:email],
|
46
|
+
},
|
47
|
+
}
|
48
|
+
|
49
|
+
req.body = req.body.to_json
|
50
|
+
|
51
|
+
http.request(req)
|
52
|
+
end
|
53
|
+
end
|
@@ -13,7 +13,7 @@ module Translator
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def files
|
16
|
-
@files ||= `(git fetch origin
|
16
|
+
@files ||= `(git fetch origin main:main) && (git log --since="#{@days} days" --name-only --oneline --diff-filter=ACM --pretty=format: main #{Rails.configuration.docs_base_path}/_documentation/en #{Rails.configuration.docs_base_path}/_tutorials/en #{Rails.configuration.docs_base_path}/_use_cases/en) | uniq | awk 'NF'`.split("\n")
|
17
17
|
end
|
18
18
|
|
19
19
|
def process_files(files)
|
@@ -544,13 +544,3 @@ The `warning_callout` content block provides an element to render a warning mess
|
|
544
544
|
content: # Warning message goes here
|
545
545
|
|
546
546
|
```
|
547
|
-
|
548
|
-
### Write for Nexmo
|
549
|
-
|
550
|
-
The `write_for_nexmo` content block will provide a call to action element to Write for Nexmo with a Developer Spotlight graphic on the left-hand side and text advertising the Write for Nexmo program on the left-hand side.
|
551
|
-
|
552
|
-
```yaml
|
553
|
-
|
554
|
-
- type: write_for_nexmo
|
555
|
-
|
556
|
-
```
|
@@ -359,44 +359,6 @@ If you are adding support for a changed header this would normally go above the
|
|
359
359
|
|
360
360
|
[Go to the anchor](#anchor-example). I've placed at the top of this document.
|
361
361
|
|
362
|
-
## Screenshots
|
363
|
-
|
364
|
-
Webpage screenshots can be scripted so that they only require sourcing once. Define a screenshot as such:
|
365
|
-
|
366
|
-
````
|
367
|
-
```screenshot
|
368
|
-
script: app/screenshots/webhook-url-for-delivery-receipt.js
|
369
|
-
```
|
370
|
-
````
|
371
|
-
|
372
|
-
Run the following command:
|
373
|
-
|
374
|
-
```
|
375
|
-
$ rake screenshots:new
|
376
|
-
```
|
377
|
-
|
378
|
-
This changes the original source document to add an `image` value pointing to the screenshot:
|
379
|
-
|
380
|
-
````
|
381
|
-
```screenshot
|
382
|
-
script: app/screenshots/webhook-url-for-delivery-receipt.js
|
383
|
-
image: public/assets/screenshots/da5f952d465355c19eb888fa1049844b31e090c2.png
|
384
|
-
```
|
385
|
-
````
|
386
|
-
|
387
|
-
You can also update all examples by running the following command:
|
388
|
-
|
389
|
-
```
|
390
|
-
$ rake screenshots:all
|
391
|
-
```
|
392
|
-
|
393
|
-
Here is the example of the final rendered output:
|
394
|
-
|
395
|
-
```screenshot
|
396
|
-
script: app/screenshots/webhook-url-for-delivery-receipt.js
|
397
|
-
image: public/assets/screenshots/da5f952d465355c19eb888fa1049844b31e090c2.png
|
398
|
-
```
|
399
|
-
|
400
362
|
## Audio (custom plugin)
|
401
363
|
|
402
364
|
The HTML `<audio>` element can be utilised in Markdown with the following syntax:
|
@@ -145,7 +145,6 @@ Frontmatter | No | [Implicit] | Strips frontmatter from documents
|
|
145
145
|
PHPInliner | No | [Implicit] | Fixes a quirk with our code parser that requires PHP code to have `<?php` at the start. This filter adds an option onto PHP code examples that makes this not required.
|
146
146
|
InlineEscape | No | [Extended] | Allows for escaping of inline code where normally the internals would be processes by the markdown. For example this isn't turned into a ``[label]`` when surrounded by two backticks.
|
147
147
|
BlockEscape | No | [Extended] | Allows for escaping of code fences where normally the internals would be processes by the markdown.
|
148
|
-
Screenshot | No | [Plugin] | Allows for screenshots be put into documentation that are captured by a headless browser so they can be easily refreshed.
|
149
148
|
Anchor | No | [Extended] | Useful for when a title changes, an explicit anchor can be added and renders a non-visible anchor link to the same content.
|
150
149
|
Audio | No | [Extended] | Used to embed audio examples using the `<audio>` element.
|
151
150
|
Tooltip | No | [Extended] | Allows for ^[Toolips](Hello world!) to be added with a markdown-style syntax.
|
@@ -7,7 +7,6 @@
|
|
7
7
|
// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate
|
8
8
|
// layout file, like app/views/layouts/application.html.erb
|
9
9
|
|
10
|
-
import '@babel/polyfill'
|
11
10
|
import '@vonagevolta/volta2/js/addons/prism'
|
12
11
|
|
13
12
|
import Rails from "@rails/ujs"
|
@@ -39,7 +38,6 @@ import GithubCards from '../javascript/github_cards'
|
|
39
38
|
import VoltaTabbedExamples from '../javascript/volta_tabbed_examples'
|
40
39
|
import Format from '../javascript/format'
|
41
40
|
import Scroll from '../javascript/scroll'
|
42
|
-
import Spotlight from '../javascript/spotlight'
|
43
41
|
import Notices from '../javascript/notices'
|
44
42
|
import Feedback from '../javascript/components/feedback/Feedback.vue'
|
45
43
|
import JwtGenerator from '../javascript/components/jwt_generator/JwtGenerator.vue'
|
@@ -62,7 +60,6 @@ $(document).ready(function() {
|
|
62
60
|
Scroll()
|
63
61
|
CodeSnippetEvents()
|
64
62
|
new Sidenav()
|
65
|
-
Spotlight()
|
66
63
|
new Careers
|
67
64
|
new LocaleSwitcher
|
68
65
|
|
@@ -57,8 +57,6 @@ Rails.application.routes.draw do
|
|
57
57
|
|
58
58
|
get '(/:locale)/documentation', to: 'static#documentation', constraints: LocaleConstraint.new, as: :documentation
|
59
59
|
|
60
|
-
post '/spotlight', to: 'static#spotlight'
|
61
|
-
|
62
60
|
get '/community/slack', to: 'slack#join'
|
63
61
|
post '/community/slack', to: 'slack#invite'
|
64
62
|
|
@@ -2,7 +2,7 @@ require_relative '../common_errors'
|
|
2
2
|
|
3
3
|
namespace :ci do
|
4
4
|
desc 'Verify all pages to make sure that no exceptions are thrown'
|
5
|
-
task
|
5
|
+
task verify_pages: :environment do
|
6
6
|
document_paths =
|
7
7
|
[
|
8
8
|
"#{Rails.configuration.docs_base_path}/_documentation/en/**/*.md",
|
@@ -24,7 +24,7 @@ namespace :ci do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
desc 'Verify side navigation to make sure every page has valid YAML metadata'
|
27
|
-
task
|
27
|
+
task verify_navigation: :environment do
|
28
28
|
session = ActionDispatch::Integration::Session.new(Rails.application)
|
29
29
|
res = session.get '/documentation'
|
30
30
|
|
@@ -35,7 +35,7 @@ namespace :ci do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
desc 'Render all OAS based API references'
|
38
|
-
task
|
38
|
+
task verify_oas_reference: :environment do
|
39
39
|
session = ActionDispatch::Integration::Session.new(Rails.application)
|
40
40
|
OpenApiConstraint.list.each do |name|
|
41
41
|
res = session.get "/api/#{name}"
|
@@ -48,7 +48,7 @@ namespace :ci do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
desc 'Ensure all OAS error URLS resolve'
|
51
|
-
task
|
51
|
+
task verify_error_urls_resolve: :environment do
|
52
52
|
session = ActionDispatch::Integration::Session.new(Rails.application)
|
53
53
|
session.host! 'localhost' unless Rails.env.test?
|
54
54
|
|
@@ -114,7 +114,7 @@ namespace :ci do
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
-
task
|
117
|
+
task check_word_blocklist: :environment do
|
118
118
|
markdown_files =
|
119
119
|
[
|
120
120
|
"#{Rails.configuration.docs_base_path}/_documentation/en/**/*.md",
|
@@ -145,7 +145,7 @@ namespace :ci do
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
-
task
|
148
|
+
task check_ruby_version: :environment do
|
149
149
|
# We treat .ruby-version as the canonical source
|
150
150
|
ruby_version = File.read('.ruby-version').strip
|
151
151
|
|
@@ -154,7 +154,7 @@ namespace :ci do
|
|
154
154
|
gemfile_version = gemfile.match(/RUBY VERSION.*ruby (\d+\.\d+\.\d+).*BUNDLED WITH/m)[1].strip
|
155
155
|
|
156
156
|
# How about Docker?
|
157
|
-
docker = File.read('Dockerfile')
|
157
|
+
docker = File.read('../../Dockerfile')
|
158
158
|
docker_version = docker.match(/FROM ruby:(\d+\.\d+\.\d+).*/)[1].strip
|
159
159
|
|
160
160
|
errors = []
|
@@ -1,6 +1,6 @@
|
|
1
1
|
namespace :diff do
|
2
2
|
desc 'Build files for comparison'
|
3
|
-
task
|
3
|
+
task execute: :environment do
|
4
4
|
puts 'Building base'.colorize(:yellow)
|
5
5
|
Rake::Task['diff:build:base'].invoke
|
6
6
|
|
@@ -15,24 +15,24 @@ namespace :diff do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
desc 'Build files for comparison'
|
18
|
-
task 'build:base'
|
18
|
+
task 'build:base' => :environment do
|
19
19
|
Diff.generate(mode: 'base')
|
20
20
|
end
|
21
21
|
|
22
22
|
desc 'Build files for comparison'
|
23
|
-
task 'build:compare'
|
23
|
+
task 'build:compare' => :environment do
|
24
24
|
Diff.generate(mode: 'compare')
|
25
25
|
end
|
26
26
|
|
27
27
|
desc 'Build files for comparison'
|
28
|
-
task 'compare:cli'
|
28
|
+
task 'compare:cli' => :environment do
|
29
29
|
diff = Diff.new
|
30
30
|
diff.diff(:color)
|
31
31
|
diff.report_cli
|
32
32
|
end
|
33
33
|
|
34
34
|
desc 'Build files for comparison'
|
35
|
-
task 'compare:pr'
|
35
|
+
task 'compare:pr' => :environment do
|
36
36
|
diff = Diff.new
|
37
37
|
diff.diff(:text)
|
38
38
|
diff.report_pull_request
|
@@ -21,7 +21,7 @@ namespace :search_terms do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
desc 'Clear the index in Algolia'
|
24
|
-
task 'algolia:clear'
|
24
|
+
task 'algolia:clear' => :environment do
|
25
25
|
unless ENV['ALGOLIA_APPLICATION_ID']
|
26
26
|
puts 'Not rebuilding search index, Algolia Application ID not set'
|
27
27
|
next
|
@@ -32,7 +32,7 @@ namespace :search_terms do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
desc 'Refresh the Algolia index'
|
35
|
-
task 'algolia:refresh'
|
35
|
+
task 'algolia:refresh' => :environment do
|
36
36
|
Rake::Task['search_terms:algolia:clear'].invoke
|
37
37
|
Rake::Task['search_terms:algolia:generate'].invoke
|
38
38
|
end
|
@@ -2,7 +2,7 @@ require 'terminal-table'
|
|
2
2
|
|
3
3
|
namespace :links do
|
4
4
|
desc 'Generate a report of all links FROM a given page'
|
5
|
-
task
|
5
|
+
task report_outbound: :environment do
|
6
6
|
ARGV.each { |a| task a.to_sym }
|
7
7
|
filter = ARGV[1]
|
8
8
|
table = Terminal::Table.new do |t|
|
@@ -18,7 +18,7 @@ namespace :links do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
desc 'Generate a report of all links TO a given page'
|
21
|
-
task
|
21
|
+
task report_inbound: :environment do
|
22
22
|
ARGV.each { |a| task a.to_sym }
|
23
23
|
filter = ARGV[1]
|
24
24
|
table = Terminal::Table.new do |t|
|
@@ -34,21 +34,21 @@ namespace :links do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
desc 'Show all pages with no outbound links'
|
37
|
-
task
|
37
|
+
task no_links_outbound: :environment do
|
38
38
|
get_links_on_a_page("#{Rails.configuration.docs_base_path}/_documentation/**/*.md").each do |from, to|
|
39
39
|
puts from if to.empty?
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
desc 'Show all pages with no inbound links'
|
44
|
-
task
|
44
|
+
task no_links_inbound: :environment do
|
45
45
|
get_links_to_a_page("#{Rails.configuration.docs_base_path}/_documentation/**/*.md").each do |to, from|
|
46
46
|
puts to if from.empty?
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
desc 'Generate graph of all links out of pages'
|
51
|
-
task
|
51
|
+
task graph_outbound: :environment do
|
52
52
|
ARGV.each { |a| task a.to_sym }
|
53
53
|
filter = ARGV[1]
|
54
54
|
additional_title = ''
|
@@ -69,7 +69,7 @@ namespace :links do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
desc 'Generate graph of all links to pages'
|
72
|
-
task
|
72
|
+
task graph_inbound: :environment do
|
73
73
|
ARGV.each { |a| task a.to_sym }
|
74
74
|
filter = ARGV[1]
|
75
75
|
additional_title = ''
|