pronto-golang 0.0.6 → 0.0.7
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 +4 -4
- data/README.md +17 -14
- data/lib/pronto/golang.rb +17 -7
- data/lib/pronto/golang/file_finder.rb +46 -0
- data/lib/pronto/golang/tools.rb +3 -3
- data/lib/pronto/golang/tools/base.rb +43 -0
- data/lib/pronto/golang/tools/errcheck.rb +2 -10
- data/lib/pronto/golang/tools/golint.rb +2 -10
- data/lib/pronto/golang/tools/govet.rb +4 -8
- data/lib/pronto/golang/tools/{unused.rb → staticcheck.rb} +3 -11
- data/lib/pronto/golang/version.rb +1 -1
- metadata +5 -5
- data/lib/pronto/golang/tools/gosimple.rb +0 -23
- data/lib/pronto/golang/tools/unparam.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44322a5abe5e297a8aca4dcbcaf6cadcc281aece
|
4
|
+
data.tar.gz: 5e3a4285833911a46405d0ca87b52f4328917374
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc3dc687d363a3a91ca82ab729aa548f8dcae82ab2999e7c239355674eaaf3661bf40ac67979e0dd099a59d25be3cd6d1e78a7106bb154ffda91cefa9c79b23c
|
7
|
+
data.tar.gz: 2338419e929ff992ce3751d8fb546704d219e23b2e00dc8a5034de2200591d9bded52c60fe28b56d91345149ad64bbe11f4582580b9e7cad5856b82eb0eba1e2
|
data/README.md
CHANGED
@@ -8,26 +8,26 @@ Pronto runner for [Golang](https://golang.org) tools
|
|
8
8
|
|
9
9
|
| Tool | Install |
|
10
10
|
|----------|----------|
|
11
|
-
| golint | go get -u golang.org/x/lint/golint |
|
12
|
-
| gosimple | go get -u honnef.co/go/tools/cmd/gosimple |
|
13
|
-
| go vet | - |
|
14
|
-
| unused | go get -u honnef.co/go/tools/cmd/unused |
|
15
|
-
| unparam | go get -u mvdan.cc/unparam |
|
16
11
|
| errcheck | go get -u github.com/kisielk/errcheck |
|
12
|
+
| go vet | - |
|
13
|
+
| golint | go get -u golang.org/x/lint/golint |
|
14
|
+
| staticcheck | go get -u honnef.co/go/tools/cmd/staticcheck |
|
17
15
|
|
18
|
-
##
|
16
|
+
## Configuring tools
|
19
17
|
|
20
|
-
In order to
|
18
|
+
In order to configure certain tools for execution it is possible to provide a `.golangtools.yml` file in the directory of execution, any parent directory or `$HOME`.
|
21
19
|
|
22
20
|
It looks as follows:
|
23
21
|
```yaml
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
tools:
|
23
|
+
<tool base command>:
|
24
|
+
enabled: true
|
25
|
+
parameters: './...'
|
28
26
|
```
|
29
27
|
|
30
|
-
If
|
28
|
+
If a tool is not listed here, it will automatically be enabled with the parameters `./...`.
|
29
|
+
In order to specifically disable a tool, it has to be listed and `enabled` has to be set to `false`.
|
30
|
+
If either of the keys is not provided the default will be assumed.
|
31
31
|
|
32
32
|
## Implementing additional tools
|
33
33
|
|
@@ -37,11 +37,14 @@ It is expected that it reponds to the following methods:
|
|
37
37
|
|
38
38
|
| Method | Description |
|
39
39
|
|--------|-------------|
|
40
|
+
| `initialize` | Configuration hash from the `.golangtools.yml` config |
|
40
41
|
| `command(file_path)` | Executes the command and receives the file_path to allow checking only the current file |
|
41
|
-
| `base_command` | Returns the name/basic command that will be invoked. Is also used for enabling and disabling it via `.golangtools.yml` |
|
42
|
-
| `
|
42
|
+
| `self.base_command` | Returns the name/basic command that will be invoked. Is also used for enabling and disabling it via `.golangtools.yml` |
|
43
|
+
| `available?` | Returns true if the tool can be found, e.g. through `which #{base_command}` |
|
43
44
|
| `parse_line(line)` | Receives the line returned from the tool for parsing. Returns `absolute_path`, `line_number`, `level`, `message text` |
|
44
45
|
|
46
|
+
It is possible to inherit from `Pronto::GolangTools::Base`, in which case only `self.base_command` and `parse_line` need to be implemented.
|
47
|
+
|
45
48
|
## License
|
46
49
|
|
47
50
|
[MIT](LICENSE)
|
data/lib/pronto/golang.rb
CHANGED
@@ -3,10 +3,13 @@ require 'pronto'
|
|
3
3
|
require 'yaml'
|
4
4
|
require 'shellwords'
|
5
5
|
|
6
|
+
require_relative './golang/file_finder'
|
6
7
|
require_relative './golang/tools'
|
7
8
|
|
8
9
|
module Pronto
|
9
10
|
class Golang < Runner
|
11
|
+
include ::Pronto::GolangSupport::FileFinder
|
12
|
+
|
10
13
|
CONFIG_FILE = '.golangtools.yml'
|
11
14
|
GOLANG_FILE_EXTENSIONS = ['.go'].freeze
|
12
15
|
|
@@ -75,12 +78,13 @@ module Pronto
|
|
75
78
|
config = dotconfig
|
76
79
|
|
77
80
|
@tools = GolangTools.constants.sort.map do |constant|
|
78
|
-
|
81
|
+
next if constant.to_s == 'Base'
|
82
|
+
|
83
|
+
tool_class = Object.const_get("Pronto::GolangTools::#{constant}")
|
79
84
|
|
80
|
-
|
81
|
-
(!config.key?('enabled_tools') ||
|
82
|
-
config['enabled_tools'].include?(tool.base_command))
|
85
|
+
tool = tool_class.new(config.fetch('tools').fetch(tool_class.base_command))
|
83
86
|
|
87
|
+
if tool.available?
|
84
88
|
tool
|
85
89
|
else
|
86
90
|
nil
|
@@ -92,11 +96,17 @@ module Pronto
|
|
92
96
|
end
|
93
97
|
|
94
98
|
def dotconfig
|
95
|
-
|
96
|
-
|
99
|
+
file = find_file_upwards(CONFIG_FILE, Dir.pwd, use_home: true)
|
100
|
+
|
101
|
+
base = {
|
102
|
+
'tools' => {}
|
103
|
+
}
|
104
|
+
|
105
|
+
if file
|
106
|
+
return base.merge(YAML.load_file(file))
|
97
107
|
end
|
98
108
|
|
99
|
-
return
|
109
|
+
return base
|
100
110
|
end
|
101
111
|
|
102
112
|
def go_file?(path)
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Pronto
|
4
|
+
module GolangSupport
|
5
|
+
module FileFinder
|
6
|
+
def self.root_level=(level)
|
7
|
+
@root_level = level
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.root_level?(path)
|
11
|
+
@root_level == path.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_file_upwards(filename, start_dir, use_home: false)
|
15
|
+
traverse_files_upwards(filename, start_dir, use_home) do |file|
|
16
|
+
# minimize iteration for performance
|
17
|
+
return file if file
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def find_files_upwards(filename, start_dir, use_home: false)
|
22
|
+
files = []
|
23
|
+
traverse_files_upwards(filename, start_dir, use_home) do |file|
|
24
|
+
files << file
|
25
|
+
end
|
26
|
+
files
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def traverse_files_upwards(filename, start_dir, use_home)
|
32
|
+
Pathname.new(start_dir).expand_path.ascend do |dir|
|
33
|
+
break if FileFinder.root_level?(dir)
|
34
|
+
|
35
|
+
file = dir + filename
|
36
|
+
yield(file.to_s) if file.exist?
|
37
|
+
end
|
38
|
+
|
39
|
+
return unless use_home && ENV.key?('HOME')
|
40
|
+
|
41
|
+
file = File.join(Dir.home, filename)
|
42
|
+
yield(file) if File.exist?(file)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/pronto/golang/tools.rb
CHANGED
@@ -3,9 +3,9 @@ module Pronto
|
|
3
3
|
end
|
4
4
|
end
|
5
5
|
|
6
|
+
require_relative './tools/base'
|
7
|
+
|
6
8
|
require_relative './tools/errcheck'
|
7
9
|
require_relative './tools/golint'
|
8
|
-
require_relative './tools/gosimple'
|
9
10
|
require_relative './tools/govet'
|
10
|
-
require_relative './tools/
|
11
|
-
require_relative './tools/unused'
|
11
|
+
require_relative './tools/staticcheck'
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Pronto
|
2
|
+
module GolangTools
|
3
|
+
class Base
|
4
|
+
def self.base_command
|
5
|
+
raise 'base_command needs to be overwritten in inheritance'
|
6
|
+
end
|
7
|
+
|
8
|
+
def base_command
|
9
|
+
self.class.base_command
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(config)
|
13
|
+
@config = config
|
14
|
+
end
|
15
|
+
|
16
|
+
def command(file_path)
|
17
|
+
"#{base_command} #{parameters}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def parameters
|
21
|
+
@config.fetch('parameters', './...') # Default to './...' if the key is not configured
|
22
|
+
end
|
23
|
+
|
24
|
+
def available?
|
25
|
+
installed? && enabled?
|
26
|
+
end
|
27
|
+
|
28
|
+
def installed?
|
29
|
+
`which #{base_command}` != ""
|
30
|
+
end
|
31
|
+
|
32
|
+
def enabled?
|
33
|
+
@config.fetch('enabled', true) # Default to true if the key is not configured
|
34
|
+
end
|
35
|
+
|
36
|
+
def parse_line(line)
|
37
|
+
file_path, line_number, _, message = line.split(':')
|
38
|
+
|
39
|
+
return file_path, line_number, :warning, message.to_s.strip
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,18 +1,10 @@
|
|
1
1
|
module Pronto
|
2
2
|
module GolangTools
|
3
|
-
class Errcheck
|
4
|
-
def
|
5
|
-
"#{base_command} ./..."
|
6
|
-
end
|
7
|
-
|
8
|
-
def base_command
|
3
|
+
class Errcheck < Base
|
4
|
+
def self.base_command
|
9
5
|
'errcheck'
|
10
6
|
end
|
11
7
|
|
12
|
-
def installed?
|
13
|
-
`which #{base_command}` != ""
|
14
|
-
end
|
15
|
-
|
16
8
|
def parse_line(line)
|
17
9
|
file_path, line_number, _, _ = line.split(':')
|
18
10
|
|
@@ -1,18 +1,10 @@
|
|
1
1
|
module Pronto
|
2
2
|
module GolangTools
|
3
|
-
class Golint
|
4
|
-
def
|
5
|
-
"#{base_command} ./..."
|
6
|
-
end
|
7
|
-
|
8
|
-
def base_command
|
3
|
+
class Golint < Base
|
4
|
+
def self.base_command
|
9
5
|
'golint'
|
10
6
|
end
|
11
7
|
|
12
|
-
def installed?
|
13
|
-
`which #{base_command}` != ""
|
14
|
-
end
|
15
|
-
|
16
8
|
def parse_line(line)
|
17
9
|
file_path, line_number, _, message = line.split(':')
|
18
10
|
|
@@ -1,16 +1,12 @@
|
|
1
1
|
module Pronto
|
2
2
|
module GolangTools
|
3
|
-
class Govet
|
4
|
-
def
|
5
|
-
"#{base_command} ./..."
|
6
|
-
end
|
7
|
-
|
8
|
-
def base_command
|
3
|
+
class Govet < Base
|
4
|
+
def self.base_command
|
9
5
|
'go vet'
|
10
6
|
end
|
11
7
|
|
12
|
-
def
|
13
|
-
|
8
|
+
def available?
|
9
|
+
enabled?
|
14
10
|
end
|
15
11
|
|
16
12
|
def parse_line(line)
|
@@ -1,16 +1,8 @@
|
|
1
1
|
module Pronto
|
2
2
|
module GolangTools
|
3
|
-
class
|
4
|
-
def
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def base_command
|
9
|
-
'unused'
|
10
|
-
end
|
11
|
-
|
12
|
-
def installed?
|
13
|
-
`which #{base_command}` != ""
|
3
|
+
class Staticcheck < Base
|
4
|
+
def self.base_command
|
5
|
+
'staticcheck'
|
14
6
|
end
|
15
7
|
|
16
8
|
def parse_line(line)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pronto-golang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Schoknecht
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pronto
|
@@ -63,13 +63,13 @@ files:
|
|
63
63
|
- LICENSE
|
64
64
|
- README.md
|
65
65
|
- lib/pronto/golang.rb
|
66
|
+
- lib/pronto/golang/file_finder.rb
|
66
67
|
- lib/pronto/golang/tools.rb
|
68
|
+
- lib/pronto/golang/tools/base.rb
|
67
69
|
- lib/pronto/golang/tools/errcheck.rb
|
68
70
|
- lib/pronto/golang/tools/golint.rb
|
69
|
-
- lib/pronto/golang/tools/gosimple.rb
|
70
71
|
- lib/pronto/golang/tools/govet.rb
|
71
|
-
- lib/pronto/golang/tools/
|
72
|
-
- lib/pronto/golang/tools/unused.rb
|
72
|
+
- lib/pronto/golang/tools/staticcheck.rb
|
73
73
|
- lib/pronto/golang/version.rb
|
74
74
|
homepage: https://github.com/Barzahlen/pronto-golang
|
75
75
|
licenses:
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Pronto
|
2
|
-
module GolangTools
|
3
|
-
class Gosimple
|
4
|
-
def command(file_path)
|
5
|
-
"#{base_command} ./..."
|
6
|
-
end
|
7
|
-
|
8
|
-
def base_command
|
9
|
-
'gosimple'
|
10
|
-
end
|
11
|
-
|
12
|
-
def installed?
|
13
|
-
`which #{base_command}` != ""
|
14
|
-
end
|
15
|
-
|
16
|
-
def parse_line(line)
|
17
|
-
file_path, line_number, _, message = line.split(':')
|
18
|
-
|
19
|
-
return file_path, line_number, :warning, message.to_s.strip
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Pronto
|
2
|
-
module GolangTools
|
3
|
-
class Unparam
|
4
|
-
def command(file_path)
|
5
|
-
"#{base_command} ./..."
|
6
|
-
end
|
7
|
-
|
8
|
-
def base_command
|
9
|
-
'unparam'
|
10
|
-
end
|
11
|
-
|
12
|
-
def installed?
|
13
|
-
`which #{base_command}` != ""
|
14
|
-
end
|
15
|
-
|
16
|
-
def parse_line(line)
|
17
|
-
file_path, line_number, _, message = line.split(':')
|
18
|
-
|
19
|
-
return file_path, line_number, :warning, message.to_s.strip
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|