hound-cli 0.1.2 → 0.2.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
  SHA1:
3
- metadata.gz: 52b4b8c36d2cb010ab4f2f8de819bfe5f53da7e9
4
- data.tar.gz: 882d323cdc4c303662ea9e879904f1e4b3647277
3
+ metadata.gz: 454ad367bd7e0e30dbd8116cc19b4ff47e338932
4
+ data.tar.gz: dd94b1526e032629da0558cab1d2617944b52db6
5
5
  SHA512:
6
- metadata.gz: c8e0da9b2e3f4ca3ca1a52987264b9e1434b6088b8d37c543590207cfd491a0a7ff900ce84eb0a81877559730132bdf5a740b1ece21bd59aa1e9878162343e25
7
- data.tar.gz: 74af28d773e13dfa09073f4757712f2fb75d5ac0d8556be363080c06af1fa44bcb8a0c1ef4bd6d3cbc688a715926b07add7461840b1d753912d8000932bb6c84
6
+ metadata.gz: 4f5153ffe726f7ff7c7257b09d126cbb0a1c8a630e8264712e7d3aae776c9fd0040da38339b179d77b4b9f45d260a812c666934dbb3280874e40027ff96e011f
7
+ data.tar.gz: e21c72eee152627b07c063fee3d748cf1e9cbd8d35ece1bf0ab7155a39f8221e0ccf0fc831f9dad60a154ab8e892b625418119a93373874cee89562f865986af
data/.travis.yml CHANGED
@@ -1,5 +1,12 @@
1
- sudo: false
2
1
  language: ruby
3
2
  rvm:
4
- - 2.3.1
3
+ - 2.3.1
5
4
  before_install: gem install bundler -v 1.12.5
5
+ deploy:
6
+ provider: rubygems
7
+ api_key:
8
+ secure: dHxqTlIlkQvCOMG5acKpJaD/Sh+5K7tQNYrvXjJjAByLeFRjRP9lTduVgJgMn8Dj+r71WwVWmKlAQ8NU4/syBUpBRnrXHZ3t9mt6jYDzBI+e0j6aOPLYrXlC9hEPgI/g9TrG9p45KAFgCK+1zg4wD6l9HAe4nHAJ8IyMCWJRcTtAEQcMiNBKzObA2V1ygyRkNR32wF3k025J+nMNlblZ9s5ptcU2UVcE4XT49R8kWtvXOZPX9k1TsRnJ3pSNCmyOz6mHOiTmSS587ds+gt4xSghIgKUTzVYBks5buY3fQ6eXs4QtebOE1JT3yVWJkvRaGBhiABBENidNHQCbo3METYaPy+5GkxmdZ+2TiZhF4cMfGdXJhwEnGkKfrbGdFGn0s/RcDWcUzb/J11wotj1gi8dQ2ZvlSF/gZaO9ZaYkkq67QewhgebLrTyuU8kfsqqad2tLMshPSUBNWO1zU+H2pJinP5KV/zGFcOCrKFkSPa25fmR4VyG13pCBck8A2dp9CeRTG9lkczg6e7OoIoX8lGN5uoQZ2ITFxi0/fSMUeyxxizJKg+HL7zTwioz9zp/TqQROgcpDYK9/0lFPIzG2Ru4LteMhuqsdkqvrFDpodt+F0WEhWzipEctjr7l2mt6wbibgcqfHPxw269bWZW05prOkzxfAf7WidKHeOhDfRhI=
9
+ gem: hound-cli
10
+ on:
11
+ tags: true
12
+ repo: platanus/hound-cli
data/README.md CHANGED
@@ -56,17 +56,26 @@ You will get in your `$HOME` path the following files:
56
56
  .scss-lint.yml
57
57
  ```
58
58
 
59
- Also, you can pass a linter's name to update rules for a specific language.
59
+ Also, you can pass a linter's name to update rules for specific languages.
60
60
 
61
61
  For example:
62
62
 
63
63
  Running...
64
64
 
65
65
  ```
66
- $ hound rules update ruby
66
+ $ hound rules update ruby tslint
67
67
  ```
68
68
 
69
- You will get an updated `.rubocop.yml` file in your `$HOME` path.
69
+ You will get updated `.rubocop.yml` and `tslint.json` files in your `$HOME` path.
70
+
71
+ If you want to put the rules in the current path (your project's path) instead of `$HOME` you can run the command with `--local` option.
72
+
73
+ ```
74
+ $ hound rules update --local
75
+ $ hound rules update ruby tslint --local
76
+ ```
77
+
78
+ > Running update with `--local` option will create a hound.yml file in the current path too.
70
79
 
71
80
  ## Contributing
72
81
 
File without changes
data/lib/hound/cli.rb CHANGED
@@ -14,22 +14,18 @@ module Hound
14
14
 
15
15
  def define_update_cmds
16
16
  command("rules update") do |c|
17
- c.syntax = "hound rules updates"
18
- c.description = "Update rules for enabled linters"
19
- c.action { RulesUpdater.update }
20
- end
21
-
22
- ConfigCollection::LINTER_NAMES.each do |linter|
23
- define_update_linter_cmd(linter)
17
+ c.syntax = "hound rules update [#{ConfigCollection::LINTER_NAMES.join(' ')}] [options]"
18
+ c.option "--local", "Updates rules only for local project (current path)"
19
+ c.description = "Updates rules for enabled linters"
20
+ c.action do |linters, options|
21
+ linter_names = linters.empty? ? ConfigCollection::LINTER_NAMES : linters
22
+ RulesUpdater.update(linter_names, options.local || hound_yml_exist?)
23
+ end
24
24
  end
25
25
  end
26
26
 
27
- def define_update_linter_cmd(linter)
28
- command("rules update #{linter}") do |c|
29
- c.syntax = "hound rules update #{linter}"
30
- c.description = "Update rules for #{linter} linter"
31
- c.action { RulesUpdater.update(linter) }
32
- end
27
+ def hound_yml_exist?
28
+ File.exist?(File.join(File.expand_path('.'), 'hound.yml'))
33
29
  end
34
30
  end
35
31
  end
@@ -7,8 +7,16 @@ module Hound
7
7
  name_from_class
8
8
  end
9
9
 
10
- def linters_file_path
11
- File.join(File.expand_path("~"), linters_file_name)
10
+ def hound_yml_config
11
+ {
12
+ enabled: true,
13
+ config_file: linters_file_name
14
+ }
15
+ end
16
+
17
+ def linters_file_path(local = false)
18
+ from = local ? "." : "~"
19
+ File.join(File.expand_path(from), linters_file_name)
12
20
  end
13
21
 
14
22
  def rules_url
@@ -1,8 +1,10 @@
1
1
  module Hound
2
- class ConfigCollection
2
+ module ConfigCollection
3
+ extend self
4
+
3
5
  LINTER_NAMES = %w{ruby eslint tslint scss}
4
6
 
5
- def self.config_instances(linter_names = [])
7
+ def config_instances(linter_names = [])
6
8
  linter_names = LINTER_NAMES if linter_names.empty?
7
9
  linter_names.map do |linter|
8
10
  ensure_valid_linter(linter)
@@ -10,13 +12,11 @@ module Hound
10
12
  end
11
13
  end
12
14
 
13
- class << self
14
- private
15
+ private
15
16
 
16
- def ensure_valid_linter(linter)
17
- if !LINTER_NAMES.include?(linter)
18
- raise Hound::Error::InvalidLang.new("Invalid #{linter} linter")
19
- end
17
+ def ensure_valid_linter(linter)
18
+ if !LINTER_NAMES.include?(linter)
19
+ raise Hound::Error::InvalidLang.new("Invalid #{linter} linter")
20
20
  end
21
21
  end
22
22
  end
@@ -1,11 +1,13 @@
1
- class HoundConfig
1
+ module HoundConfig
2
+ extend self
3
+
2
4
  CONFIG_FILE_REPOSITORY = "https://raw.githubusercontent.com/platanus/la-guia/master/"
3
5
 
4
- def self.content
6
+ def content
5
7
  @@content ||= load_content
6
8
  end
7
9
 
8
- def self.enabled_for?(linter_name)
10
+ def enabled_for?(linter_name)
9
11
  # disabled if linter_name key does not exist in hound.yml
10
12
  return false unless content.key?(linter_name)
11
13
  options = options_for(linter_name)
@@ -15,32 +17,30 @@ class HoundConfig
15
17
  !!options["enabled"] || !!options["Enabled"]
16
18
  end
17
19
 
18
- def self.options_for(linter_name)
20
+ def options_for(linter_name)
19
21
  return content[linter_name] if content.respond_to?(:key?) && content.key?(linter_name)
20
22
  Hash.new
21
23
  end
22
24
 
23
- def self.rules_url_for(linter_name)
25
+ def rules_url_for(linter_name)
24
26
  path_in_repo = options_for(linter_name)["config_file"].to_s
25
27
  HoundConfig::CONFIG_FILE_REPOSITORY + path_in_repo
26
28
  end
27
29
 
28
- class << self
29
- private
30
+ private
30
31
 
31
- def config_file_url
32
- CONFIG_FILE_REPOSITORY + ".hound.yml"
33
- end
32
+ def config_file_url
33
+ CONFIG_FILE_REPOSITORY + ".hound.yml"
34
+ end
34
35
 
35
- def load_content
36
- Hound::Parser.yaml(RestClient.get(config_file_url))
37
- rescue RestClient::ResourceNotFound
38
- inform_config_not_found(config_file_url)
39
- Hash.new
40
- end
36
+ def load_content
37
+ Hound::Parser.yaml(RestClient.get(config_file_url))
38
+ rescue RestClient::ResourceNotFound
39
+ inform_config_not_found(config_file_url)
40
+ Hash.new
41
+ end
41
42
 
42
- def inform_config_not_found(url)
43
- puts "config file not found in #{url}".red
44
- end
43
+ def inform_config_not_found(url)
44
+ puts "config file not found in #{url}".red
45
45
  end
46
46
  end
data/lib/hound/parser.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Hound
2
- class Parser
2
+ module Parser
3
3
  def self.yaml(content)
4
4
  YAML.safe_load(content, [Regexp])
5
5
  end
@@ -1,48 +1,62 @@
1
+ require "yaml"
2
+
1
3
  module Hound
2
- class RulesUpdater
3
- def self.update(*linter_names)
4
- ConfigCollection.config_instances(linter_names).each do |linter_config|
5
- get_rules(linter_config)
6
- end
7
- end
4
+ module RulesUpdater
5
+ extend self
8
6
 
9
- class << self
10
- private
7
+ def update(linter_names = [], local = false)
8
+ linter_configs = ConfigCollection.config_instances(linter_names)
9
+ write_rules(linter_configs, local)
10
+ write_hound_yml(linter_configs) if local
11
+ end
11
12
 
12
- def get_rules(linter_config)
13
- if !HoundConfig.enabled_for?(linter_config.name)
14
- inform_disabled(linter_config)
15
- return
16
- end
13
+ private
17
14
 
18
- rules = get_rules_from_url(linter_config)
19
- return unless rules
20
- write_linters_file(linter_config, rules)
21
- inform_update(linter_config)
15
+ def write_hound_yml(linter_configs)
16
+ hound_config = linter_configs.inject({}) do |memo, linter_config|
17
+ memo[linter_config.name] = linter_config.hound_yml_config
18
+ memo
22
19
  end
23
20
 
24
- def get_rules_from_url(linter_config)
25
- RestClient.get(linter_config.rules_url)
26
- rescue RestClient::ResourceNotFound
27
- inform_rules_not_found(linter_config)
28
- end
21
+ hound_yml_path = File.join(File.expand_path('.'), 'hound.yml')
22
+ File.write(hound_yml_path, hound_config.to_yaml)
23
+ end
29
24
 
30
- def write_linters_file(linter_config, rules)
31
- File.write(linter_config.linters_file_path, rules)
25
+ def write_rules(linter_configs, local)
26
+ linter_configs.each do |linter_config|
27
+ get_rules(linter_config, local)
32
28
  end
29
+ end
33
30
 
34
- def inform_update(linter_config)
35
- puts "#{linter_config.linters_file_name} (#{linter_config.name} style) was updated".green
31
+ def get_rules(linter_config, local)
32
+ if !HoundConfig.enabled_for?(linter_config.name)
33
+ inform_disabled(linter_config)
34
+ return
36
35
  end
37
36
 
38
- def inform_disabled(linter_config)
39
- puts "#{linter_config.linters_file_name} (#{linter_config.name} style) wasn't updated \
37
+ rules = get_rules_from_url(linter_config)
38
+ return unless rules
39
+ File.write(linter_config.linters_file_path(local), rules)
40
+ inform_update(linter_config)
41
+ end
42
+
43
+ def get_rules_from_url(linter_config)
44
+ RestClient.get(linter_config.rules_url)
45
+ rescue RestClient::ResourceNotFound
46
+ inform_rules_not_found(linter_config)
47
+ end
48
+
49
+ def inform_update(linter_config)
50
+ puts "#{linter_config.linters_file_name} (#{linter_config.name} style) was updated".green
51
+ end
52
+
53
+ def inform_disabled(linter_config)
54
+ puts "#{linter_config.linters_file_name} (#{linter_config.name} style) wasn't updated \
40
55
  because the style was undefined or disabled in .hound.yml file".yellow
41
- end
56
+ end
42
57
 
43
- def inform_rules_not_found(linter_config)
44
- puts "rules for #{linter_config.name} not found in #{linter_config.rules_url}".red
45
- end
58
+ def inform_rules_not_found(linter_config)
59
+ puts "rules for #{linter_config.name} not found in #{linter_config.rules_url}".red
46
60
  end
47
61
  end
48
62
  end
data/lib/hound/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hound
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hound-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Platanus
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-05 00:00:00.000000000 Z
11
+ date: 2016-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -145,7 +145,7 @@ files:
145
145
  - bin/console
146
146
  - bin/setup
147
147
  - exe/hound
148
- - hound.gemspec
148
+ - hound-cli.gemspec
149
149
  - lib/hound.rb
150
150
  - lib/hound/cli.rb
151
151
  - lib/hound/config/base.rb
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  version: '0'
180
180
  requirements: []
181
181
  rubyforge_project:
182
- rubygems_version: 2.5.1
182
+ rubygems_version: 2.4.5
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Ruby CLI to generate style rules