gitlab-markup 1.6.4 → 1.8.0

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: '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