bleach 0.0.5 → 0.0.8

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: 792461879941dca6078302dc2abe14bc3d801ad9ba68ca13172129bc764cdbf0
4
- data.tar.gz: 4e2c60c2b2d0d06edcd9ca55c7fafe40df997997c0a953463ce3b57e6e9f34e6
3
+ metadata.gz: 95f9bd54acb2898c975be2fd3ca45109f89a2860f5579dcca550ce31020cefe1
4
+ data.tar.gz: 6e219b9618ac5cd203dd60364e848aa5193f4000abc7d8c6bc83d62d57a0d19f
5
5
  SHA512:
6
- metadata.gz: 1786d3a7ef21cfe50684e8bfc1d59abe4f7ae8a3f5463d80d108308b600779c3cc6689ef9d5250a5c10a2498dbcbf414780c4a06c0f0eb9ce6fd5d7337d94479
7
- data.tar.gz: 9ac69eb7a3e8139416a7d0d7df05645b1710633bddc91bf8e7adf9e286778f55924f7471477b096fb829ed0c699cab66d4d31d64ace61a9ffd823802cf157852
6
+ metadata.gz: 72f5ca822ee63ebc52d64d9a0db46c3a055e166a2aaf65de96da96df5fbe348fb7b15bf5cd0a8b5a336d59695f5334833756fe3a752db89606e373e06ca13a84
7
+ data.tar.gz: d5d7bb55e263a4853675ba463008f0eec3208ab518edefcdffca470963021d2abb61c96255b4e301a8558bc5e781a824da9d8d7fc8a7d79384be4993084c2821
data/bin/bleach CHANGED
@@ -6,6 +6,7 @@ require 'tmpdir'
6
6
  require 'json'
7
7
  require 'fileutils'
8
8
  require 'isna'
9
+ require 'pathname'
9
10
 
10
11
 
11
12
  # Discover lib files to be included
@@ -52,6 +53,8 @@ end
52
53
  def resolve_language(filepath)
53
54
  basename = File.basename(filepath)
54
55
  extension = File.extname(basename)
56
+ return 'CSS' if extension == '.css'
57
+ return 'JavaScript' if extension == '.js'
55
58
  return 'Ruby' if basename == 'Gemfile'
56
59
  return 'Ruby' if basename == 'Capfile'
57
60
  return 'Ruby' if basename == 'Onafile'
@@ -60,7 +63,7 @@ def resolve_language(filepath)
60
63
  return 'Ruby' if extension == '.rb'
61
64
  return 'Ruby' if extension == '.gemspec'
62
65
  return 'Ruby' if extension == '.ru'
63
- return 'JavaScript' if extension == '.js'
66
+ return 'SCSS' if extension == '.scss'
64
67
  return basename.inspect
65
68
  end
66
69
 
@@ -68,8 +71,10 @@ end
68
71
  file_language = resolve_language(options[:file])
69
72
 
70
73
  LANGUAGE_MAP = {
74
+ # 'CSS' => 'css',
75
+ 'JavaScript' => 'javascript',
71
76
  'Ruby' => 'ruby',
72
- 'JavaScript' => 'javascript'
77
+ # 'SCSS' => 'scss'
73
78
  }.freeze
74
79
 
75
80
  if LANGUAGE_MAP.keys.include?(file_language)
@@ -109,19 +114,46 @@ Dir.glob("#{__dir__}/../languages/#{LANGUAGE_MAP[file_language]}/*").each do |to
109
114
 
110
115
  # Work is done on copies of the original files inside a temp dir
111
116
  Dir.mktmpdir do |tmpdir|
117
+ FileUtils.cp(options[:file], tmpdir)
118
+ FileUtils.cp(config_file, tmpdir)
119
+ file_copy = File.basename(options[:file])
120
+
112
121
  config['requiredFiles'].each do |required_file|
113
- unless File.exist?(required_file['file'])
122
+ config_file_stack = []
123
+ # File on repository root
124
+ if File.exist?(required_file['file'])
125
+ config_file_stack.push(required_file['file'])
126
+ end
127
+
128
+ # Search for alternate files on path to file
129
+ # Get path to file to be checked
130
+ path_stack = Pathname(options[:file]).each_filename.to_a
131
+ # Get rid of filename (keep directories only)
132
+ path_stack.pop
133
+ unless path_stack.empty?
134
+ for step in 0..(path_stack.length - 1) do
135
+ new_path = ''
136
+ for i in 0..step do
137
+ new_path += path_stack[i] + '/'
138
+ end
139
+ file_with_path = new_path + required_file['file']
140
+ if File.exist?(file_with_path)
141
+ config_file_stack.push(file_with_path)
142
+ end
143
+ end
144
+ end
145
+
146
+ if config_file_stack.empty?
147
+ # No file found anywhere!
114
148
  warn "#{tool} checks need a '#{required_file['file']}' file present to run."
115
149
  warn 'Check will be stopped.'
116
150
  exit 1
151
+ else
152
+ # Use config file closest to file to be checked
153
+ FileUtils.cp(config_file_stack.pop, tmpdir)
117
154
  end
118
- FileUtils.cp(required_file['file'], tmpdir)
119
155
  end
120
156
 
121
- FileUtils.cp(options[:file], tmpdir)
122
- FileUtils.cp(config_file, tmpdir)
123
- file_copy = File.basename(options[:file])
124
-
125
157
  # Verify if Docker image exists
126
158
  inspect_command = DockerCommand::DockerImageInspect.new(tag: tool)
127
159
  unless inspect_command.system
@@ -0,0 +1,4 @@
1
+ FROM alpine:3.12.4
2
+ RUN apk update
3
+ RUN apk add npm
4
+ RUN npm install -g stylelint stylelint-scss
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # Discover lib files to be included
5
+ Dir.glob("#{__dir__}/../../../lib/**/*.rb").each do |lib_file|
6
+ require File.expand_path(lib_file, __dir__)
7
+ end
8
+
9
+ require 'optparse'
10
+ require 'json'
11
+
12
+ options = {}
13
+ OptionParser.new do |opts|
14
+ opts.banner = "Usage: #{File.basename(__FILE__)} [OPTIONS]"
15
+
16
+ opts.on('-f', '--file [STRING]', 'File.') do |value|
17
+ options[:file] = value
18
+ end
19
+ end.parse!
20
+
21
+ required_options = [:file]
22
+ required_options.each do |option|
23
+ unless options[option]
24
+ warn "Can not run #{option} was not given."
25
+ exit 1
26
+ end
27
+ end
28
+
29
+ file = File.basename(options[:file])
30
+ dir = File.dirname(options[:file])
31
+
32
+ config_file = "#{dir}/config.json"
33
+ config = JSON.parse(File.read(config_file))
34
+
35
+ image_name = config['imageName']
36
+ tool_config = config['requiredFiles'].find do |record|
37
+ record['type'] == 'Stylelint Config'
38
+ end['file']
39
+
40
+ check_command = CodeCheck::StylelintCSS.new(
41
+ pwd: dir,
42
+ image_name: image_name,
43
+ config_file: tool_config,
44
+ source_files: "/code/#{file}"
45
+ )
46
+ exit 1 unless check_command.system
@@ -0,0 +1,10 @@
1
+ {
2
+ "imageName" : "bleach/stylelint",
3
+ "requiredFiles" : [
4
+ {
5
+ "type" : "Stylelint Config",
6
+ "file" : ".stylelintrc.js"
7
+ }
8
+ ]
9
+
10
+ }
@@ -0,0 +1,4 @@
1
+ FROM alpine:3.12.4
2
+ RUN apk update
3
+ RUN apk add npm
4
+ RUN npm install -g stylelint stylelint-scss
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # Discover lib files to be included
5
+ Dir.glob("#{__dir__}/../../../lib/**/*.rb").each do |lib_file|
6
+ require File.expand_path(lib_file, __dir__)
7
+ end
8
+
9
+ require 'optparse'
10
+ require 'json'
11
+
12
+ options = {}
13
+ OptionParser.new do |opts|
14
+ opts.banner = "Usage: #{File.basename(__FILE__)} [OPTIONS]"
15
+
16
+ opts.on('-f', '--file [STRING]', 'File.') do |value|
17
+ options[:file] = value
18
+ end
19
+ end.parse!
20
+
21
+ required_options = [:file]
22
+ required_options.each do |option|
23
+ unless options[option]
24
+ warn "Can not run #{option} was not given."
25
+ exit 1
26
+ end
27
+ end
28
+
29
+ file = File.basename(options[:file])
30
+ dir = File.dirname(options[:file])
31
+
32
+ config_file = "#{dir}/config.json"
33
+ config = JSON.parse(File.read(config_file))
34
+
35
+ image_name = config['imageName']
36
+ tool_config = config['requiredFiles'].find do |record|
37
+ record['type'] == 'Stylelint Config'
38
+ end['file']
39
+
40
+ check_command = CodeCheck::StylelintSCSS.new(
41
+ pwd: dir,
42
+ image_name: image_name,
43
+ config_file: tool_config,
44
+ source_files: "/code/#{file}"
45
+ )
46
+ exit 1 unless check_command.system
@@ -0,0 +1,10 @@
1
+ {
2
+ "imageName" : "bleach/stylelint",
3
+ "requiredFiles" : [
4
+ {
5
+ "type" : "Stylelint Config",
6
+ "file" : ".stylelintrc.js"
7
+ }
8
+ ]
9
+
10
+ }
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ module CodeCheck
5
+ # Template for Stylelint CSS check
6
+ class StylelintCSS < AbstractCommand
7
+ def template
8
+ 'docker run ' \
9
+ '--rm ' \
10
+ '--volume %<pwd>s:/code ' \
11
+ '%<image_name>s ' \
12
+ 'stylelint ' \
13
+ '--config /code/%<config_file>s ' \
14
+ '--color ' \
15
+ '%<source_files>s'
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ module CodeCheck
5
+ # Template for Stylelint SCSS check
6
+ class StylelintSCSS < AbstractCommand
7
+ def template
8
+ 'docker run ' \
9
+ '--rm ' \
10
+ '--volume %<pwd>s:/code ' \
11
+ '%<image_name>s ' \
12
+ 'stylelint ' \
13
+ '--config /code/%<config_file>s ' \
14
+ '--color ' \
15
+ '%<source_files>s'
16
+ end
17
+ end
18
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bleach
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luis Flores
8
8
  - Kazuyoshi Tlacaelel
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-30 00:00:00.000000000 Z
12
+ date: 2021-11-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: abstract_command
@@ -39,8 +39,8 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: 0.0.4
42
- description:
43
- email:
42
+ description:
43
+ email:
44
44
  executables:
45
45
  - bleach
46
46
  - install-bleach-git-hooks
@@ -49,6 +49,9 @@ extra_rdoc_files: []
49
49
  files:
50
50
  - "./bin/bleach"
51
51
  - "./bin/install-bleach-git-hooks"
52
+ - "./languages/css/stylelint/Dockerfile"
53
+ - "./languages/css/stylelint/check-file"
54
+ - "./languages/css/stylelint/config.json"
52
55
  - "./languages/javascript/eslint/Dockerfile"
53
56
  - "./languages/javascript/eslint/check-file"
54
57
  - "./languages/javascript/eslint/config.json"
@@ -58,10 +61,15 @@ files:
58
61
  - "./languages/ruby/rubocop/Dockerfile"
59
62
  - "./languages/ruby/rubocop/check-file"
60
63
  - "./languages/ruby/rubocop/config.json"
64
+ - "./languages/scss/stylelint/Dockerfile"
65
+ - "./languages/scss/stylelint/check-file"
66
+ - "./languages/scss/stylelint/config.json"
61
67
  - "./lib/command/check_file.rb"
68
+ - "./lib/command/code_check/css/stylelint.rb"
62
69
  - "./lib/command/code_check/javascript/eslint.rb"
63
70
  - "./lib/command/code_check/ruby/brakeman.rb"
64
71
  - "./lib/command/code_check/ruby/rubocop.rb"
72
+ - "./lib/command/code_check/scss/stylelint.rb"
65
73
  - "./lib/command/docker_build.rb"
66
74
  - "./lib/command/docker_image_inspect.rb"
67
75
  - "./lib/command/docker_remove_image.rb"
@@ -73,7 +81,7 @@ homepage: https://github.com/freshout-dev/bleach
73
81
  licenses:
74
82
  - MIT
75
83
  metadata: {}
76
- post_install_message:
84
+ post_install_message:
77
85
  rdoc_options: []
78
86
  require_paths:
79
87
  - lib
@@ -88,8 +96,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
96
  - !ruby/object:Gem::Version
89
97
  version: '0'
90
98
  requirements: []
91
- rubygems_version: 3.1.2
92
- signing_key:
99
+ rubygems_version: 3.0.3
100
+ signing_key:
93
101
  specification_version: 4
94
102
  summary: bleach - code check tool
95
103
  test_files: []