gitlab-markup 1.6.4 → 1.8.0

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: '088585ef527b31da2dd72c9a6efe953a04276e6ca5a0cf411b0b8c32547b27ff'
4
- data.tar.gz: ad0c68e99b095ef0f5f94e5d2343003b555f3ad220ae309db55c0627c8419f42
3
+ metadata.gz: ffe78f2c70532bd5111c1adba163151a60108ceec4525f022a47032af7579192
4
+ data.tar.gz: c0d89038ace9d3756e7866d711776e830469d03a70e7d7a25edf93e964f285c3
5
5
  SHA512:
6
- metadata.gz: 7e9841bddbba24c743d6da4fc6cba9bc3bf04019cc3b16a79d51b15638d778bfab192f3ecf17b64ea7c18470ec701c266ae630c22dc3936d0eed11530d956142
7
- data.tar.gz: ffc895e79b9f1bc84e0214a1e9e7fcebcac0d0d8ab8ee33a7359cbe19ef3debffd0497500fa537ad024ec9297f5134c5e6aefb3d5069e886c304f613eb50d286
6
+ metadata.gz: ba9c3cf53d15ac267552fb7013dc1612b8ae4e15a71aeed4b256f38bd2bcbe6152fb089b9d82c49598ef0556a5f16f7ae72c288adfd95c8d69f40a2929ea268d
7
+ data.tar.gz: 8db081c15c4883e1d51285575bbfcdd9fb9074767d019988a35cead5de3ffaee1f79fd1fea1ef616f265dee25b12080c5f0b652079165b1fa1c0201c9497eb47
data/.gitlab-ci.yml CHANGED
@@ -1,24 +1,116 @@
1
+ include:
2
+ - template: SAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
3
+ - template: Security/Dependency-Scanning.gitlab-ci.yml # https://docs.gitlab.com/ee/user/application_security/dependency_scanning/
4
+ - template: Security/Secret-Detection.gitlab-ci.yml # https://docs.gitlab.com/ee/user/application_security/secret_detection/
5
+
1
6
  variables:
2
7
  LANG: "C.UTF-8"
3
8
 
4
- .specs: &specs
9
+ default:
10
+ tags:
11
+ - gitlab-org
12
+
13
+ workflow:
14
+ rules: &workflow_rules
15
+ # For merge requests, create a pipeline.
16
+ - if: '$CI_MERGE_REQUEST_IID'
17
+ # For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
18
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
19
+ # For tags, create a pipeline.
20
+ - if: '$CI_COMMIT_TAG'
21
+
22
+ .specs:
5
23
  cache:
24
+ key: "$CI_JOB_NAME"
6
25
  paths:
7
26
  - vendor/ruby
8
27
  before_script:
9
28
  - apt update
10
- - apt install python-pip git build-essential -y
11
- - pip install 'docutils==0.13.1'
29
+ - apt install python3 python3-pip git build-essential -y
30
+ - apt remove python -y
31
+ - pip3 install "docutils==$DOCUTILS_VERSION"
12
32
  - bundle install --jobs $(nproc)
13
33
  script:
34
+ - echo "Testing without posix-spawn..."
35
+ - cp Gemfile Gemfile.orig
36
+ - sed -i -e '/posix-spawn/d' Gemfile
37
+ - bundle install
14
38
  - bundle exec rake test
39
+ - echo "Testing with posix-spawn..."
40
+ - mv Gemfile.orig Gemfile
41
+ - bundle install
42
+ - bundle exec rake test
43
+
44
+ .docutils-014:
45
+ variables:
46
+ DOCUTILS_VERSION: "0.14"
47
+
48
+ .docutils-015:
49
+ variables:
50
+ DOCUTILS_VERSION: "0.15.2"
51
+
52
+ .docutils-016:
53
+ variables:
54
+ DOCUTILS_VERSION: "0.16"
55
+
56
+ ruby-25:
57
+ image: ruby:2.5
58
+ extends:
59
+ - .docutils-014
60
+ - .specs
61
+
62
+ ruby-26:
63
+ image: ruby:2.6
64
+ extends:
65
+ - .docutils-014
66
+ - .specs
67
+
68
+ ruby-27:
69
+ image: ruby:2.7
70
+ extends:
71
+ - .docutils-014
72
+ - .specs
73
+
74
+ ruby-25-du15:
75
+ image: ruby:2.5
76
+ extends:
77
+ - .docutils-015
78
+ - .specs
79
+
80
+ ruby-26-du15:
81
+ image: ruby:2.6
82
+ extends:
83
+ - .docutils-015
84
+ - .specs
85
+
86
+ ruby-27-du15:
87
+ image: ruby:2.7
88
+ extends:
89
+ - .docutils-015
90
+ - .specs
91
+
92
+ ruby-25-du16:
93
+ image: ruby:2.5
94
+ extends:
95
+ - .docutils-016
96
+ - .specs
97
+
98
+ ruby-26-du16:
99
+ image: ruby:2.6
100
+ extends:
101
+ - .docutils-016
102
+ - .specs
103
+
104
+ ruby-27-du16:
105
+ image: ruby:2.7
106
+ extends:
107
+ - .docutils-016
108
+ - .specs
109
+
110
+ # Dependency Scanning
111
+ gemnasium-dependency_scanning:
112
+ rules: *workflow_rules
15
113
 
16
- ruby-21:
17
- image: ruby:2.1
18
- <<: *specs
19
- ruby-22:
20
- image: ruby:2.2
21
- <<: *specs
22
- ruby-23:
23
- image: ruby:2.3
24
- <<: *specs
114
+ # Secret Detection
115
+ secret_detection:
116
+ rules: *workflow_rules
data/HISTORY.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## 1.8.0 (2021-12-02)
2
+
3
+ * Disable configuration file processing in RST
4
+ * Wrap call to rest2html in a timeout
5
+
6
+ ## 1.7.1 (2020-05-01)
7
+
8
+ * Fix RST rendering not working for large files
9
+
10
+ ## 1.7.0 (2019-03-05)
11
+
12
+ * Require Python 3
13
+
14
+ ## 1.6.5 (2018-10-31)
15
+
16
+ * Renamed executable from `github-markup` to `gitlab-markup`
17
+
1
18
  ## 1.6.4 (2018-06-08)
2
19
 
3
20
  * Fixed extra blank line at start of rendered reStructuredText code block
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  GitLab Markup
2
2
  =============
3
3
 
4
- [![build status](https://gitlab.com/gitlab-org/gitlab-markup/badges/master/build.svg)](https://gitlab.com/gitlab-org/gitlab-markup/commits/master)
4
+ [![build status](https://gitlab.com/gitlab-org/gitlab-markup/badges/master/pipeline.svg)](https://gitlab.com/gitlab-org/gitlab-markup/commits/master)
5
5
 
6
6
  This library is a fork of GitHub Markup, which is used to render all non Markdown markups:
7
7
 
@@ -17,15 +17,15 @@ Markups
17
17
  -------
18
18
 
19
19
  The following markups are supported. The dependencies listed are required if
20
- you wish to run the library. You can also run `script/bootstrap` to fetch them all.
20
+ you wish to run the library. You can also run `script/bootstrap` to fetch them all (Python 3 required).
21
21
 
22
22
  * [.markdown, .mdown, .mkdn, .md](http://daringfireball.net/projects/markdown/) -- `gem install redcarpet` (https://github.com/vmg/redcarpet)
23
23
  * [.textile](http://www.textism.com/tools/textile/) -- `gem install RedCloth`
24
- * [.rdoc](http://rdoc.sourceforge.net/) -- `gem install rdoc -v 3.6.1`
24
+ * [.rdoc](https://ruby.github.io/rdoc/) -- `gem install rdoc -v 3.6.1`
25
25
  * [.org](http://orgmode.org/) -- `gem install org-ruby`
26
26
  * [.creole](http://wikicreole.org/) -- `gem install creole`
27
27
  * [.mediawiki, .wiki](http://www.mediawiki.org/wiki/Help:Formatting) -- `gem install wikicloth`
28
- * [.rst](http://docutils.sourceforge.net/rst.html) -- `pip install docutils==0.13.1`
28
+ * [.rst](https://docutils.sourceforge.io/rst.html) -- `pip install docutils`
29
29
  * [.asciidoc, .adoc, .asc](http://asciidoc.org/) -- `gem install asciidoctor` (http://asciidoctor.org)
30
30
  * [.pod](http://search.cpan.org/dist/perl/pod/perlpod.pod) -- `Pod::Simple::HTML`
31
31
  comes with Perl >= 5.10. Lower versions should install [Pod::Simple](http://search.cpan.org/~dwheeler/Pod-Simple-3.28/lib/Pod/Simple.pod) from CPAN.
@@ -33,7 +33,9 @@ you wish to run the library. You can also run `script/bootstrap` to fetch them a
33
33
  Installation
34
34
  -----------
35
35
 
36
- ```
36
+ Ruby 2.6+ is highly recommended (Ruby 2.5 is still supported).
37
+
38
+ ```shell
37
39
  gem install gitlab-markup
38
40
  ```
39
41
 
File without changes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require File.expand_path('../lib/github-markup', __FILE__)
2
3
 
3
4
  Gem::Specification.new do |s|
@@ -24,7 +25,7 @@ Gem::Specification.new do |s|
24
25
  s.add_development_dependency 'activesupport', '~> 4.0'
25
26
  s.add_development_dependency 'html-pipeline', '~> 1.0'
26
27
  s.add_development_dependency 'minitest', '~> 5.4.3'
27
- s.add_development_dependency 'nokogiri', '~> 1.6.1'
28
+ s.add_development_dependency 'nokogiri', '~> 1.10.9'
28
29
  s.add_development_dependency 'nokogiri-diff', '~> 0.2.0'
29
- s.add_development_dependency 'sanitize', '~> 2.1.0'
30
+ s.add_development_dependency 'sanitize', '~> 5.1.0'
30
31
  end
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env python
1
+ #!/usr/bin/env python3
2
2
  """
3
3
  rest2html - A small wrapper file for parsing ReST files at GitHub.
4
4
 
@@ -54,6 +54,7 @@ from docutils.core import publish_parts
54
54
  from docutils.writers.html4css1 import Writer, HTMLTranslator
55
55
 
56
56
  SETTINGS = {
57
+ '_disable_config': True,
57
58
  'cloak_email_addresses': False,
58
59
  'file_insertion_enabled': False,
59
60
  'raw_enabled': False,
@@ -12,6 +12,8 @@ module GitHub
12
12
  end
13
13
 
14
14
  class CommandImplementation < Implementation
15
+ DEFAULT_GITLAB_MARKUP_TIMEOUT = '10'.freeze
16
+
15
17
  attr_reader :command, :block, :name
16
18
 
17
19
  def initialize(regexp, command, name, &block)
@@ -27,7 +29,8 @@ module GitHub
27
29
  call_block(rendered, content)
28
30
  end
29
31
 
30
- private
32
+ private
33
+
31
34
  def call_block(rendered, content)
32
35
  if block && block.arity == 2
33
36
  block.call(rendered, content)
@@ -38,27 +41,44 @@ module GitHub
38
41
  end
39
42
  end
40
43
 
44
+ def timeout_in_seconds
45
+ ENV.fetch('GITLAB_MARKUP_TIMEOUT', DEFAULT_GITLAB_MARKUP_TIMEOUT).to_i
46
+ end
47
+
48
+ def prepend_command_timeout_prefix(command)
49
+ timeout_command_prefix = "timeout --signal=KILL #{timeout_in_seconds}"
50
+
51
+ # Preserve existing support for command being either a String or an Array
52
+ if command.is_a?(String)
53
+ "#{timeout_command_prefix} #{command}"
54
+ else
55
+ timeout_command_prefix.split(' ') + command
56
+ end
57
+ end
58
+
41
59
  if defined?(POSIX::Spawn)
42
60
  def execute(command, target)
43
- spawn = POSIX::Spawn::Child.new(*command, :input => target)
61
+ command_with_timeout_prefix = prepend_command_timeout_prefix(command)
62
+ spawn = POSIX::Spawn::Child.new(*command_with_timeout_prefix, :input => target)
44
63
  if spawn.status.success?
45
64
  sanitize(spawn.out, target.encoding)
65
+ elsif spawn.status.termsig == Signal.list['KILL']
66
+ raise TimeoutError.new("Command was killed, probably due to exceeding GITLAB_MARKUP_TIMEOUT limit of #{timeout_in_seconds} seconds")
46
67
  else
47
68
  raise CommandError.new(spawn.err.strip)
48
69
  end
49
70
  end
50
71
  else
51
72
  def execute(command, target)
52
- output = Open3.popen3(*command) do |stdin, stdout, stderr, wait_thr|
53
- stdin.puts target
54
- stdin.close
55
- if wait_thr.value.success?
56
- stdout.readlines
57
- else
58
- raise CommandError.new(stderr.readlines.join('').strip)
59
- end
73
+ command_with_timeout_prefix = prepend_command_timeout_prefix(command)
74
+ stdout_str, stderr_str, status = Open3.capture3(*command_with_timeout_prefix, stdin_data: target)
75
+ if status.success?
76
+ sanitize(stdout_str, target.encoding)
77
+ elsif status.termsig == Signal.list['KILL']
78
+ raise TimeoutError.new("Command was killed, probably due to exceeding GITLAB_MARKUP_TIMEOUT limit of #{timeout_in_seconds} seconds")
79
+ else
80
+ raise CommandError.new(stderr_str.strip)
60
81
  end
61
- sanitize(output.join(''), target.encoding)
62
82
  end
63
83
  end
64
84
 
@@ -33,7 +33,7 @@ markup(:asciidoctor, /adoc|asc(iidoc)?/) do |content|
33
33
  end
34
34
 
35
35
  command(
36
- "python2 -S #{Shellwords.escape(File.dirname(__FILE__))}/commands/rest2html",
36
+ "python3 #{Shellwords.escape(File.dirname(__FILE__))}/commands/rest2html",
37
37
  /re?st(\.txt)?/,
38
38
  "restructuredtext"
39
39
  )
data/lib/github-markup.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module GitHub
2
2
  module Markup
3
- VERSION = '1.6.4'
3
+ VERSION = '1.8.0'
4
4
  Version = VERSION
5
5
  end
6
6
  end