claide-plugins 0.9.0 → 0.9.1

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: 5ad1f52c0be19c6682f2f3d80e72bb1c5f2f47a0
4
- data.tar.gz: 10b9e27ab9a8518cdfbeda69d88347adaec6fa24
3
+ metadata.gz: 3bf05e511929565f0bf09a993816fcff77deb684
4
+ data.tar.gz: d4acbe03d9b46f9d2e545bc5eb5059fd10ba88dd
5
5
  SHA512:
6
- metadata.gz: 4474443f0b957e4b3c5a1f9c60f6066419893cd19559e800600fc8986208dc021634e1e284c9ab4ce407ab88f9a6160b232168b0fb9a10dbb0ab7a6ff4e6179d
7
- data.tar.gz: 8d3f047420b850b0b67c888235cace7e16ed032eb58299b703bc9fff992acdb00585b2ebb6ce619d3f4723deef2a98230766695533373f1f36522220c7944e8d
6
+ metadata.gz: 7075dfd3dba9626b5189591d00d48661bd7410728afb581d0a0b56cf8113c74c835adf97535bb94784d55ccf3d4fbc5fdea36fc5aa57875c6075b9ad102fbc3c
7
+ data.tar.gz: 37e581149de86676added6f1f7ec62d39e74c8654c5f6784d8b44fd43e7bb6769b0a7827315842f7d8cf53bc459ebbe6a89860124c7d803646085fbe2358af54
data/Gemfile.lock CHANGED
@@ -23,6 +23,7 @@ GEM
23
23
  bacon (1.2.0)
24
24
  codeclimate-test-reporter (0.4.0)
25
25
  simplecov (>= 0.7.1, < 1.0.0)
26
+ coderay (1.1.1)
26
27
  colored (1.2)
27
28
  cork (0.1.0)
28
29
  colored (~> 1.2)
@@ -30,6 +31,7 @@ GEM
30
31
  safe_yaml (~> 1.0.0)
31
32
  docile (1.1.5)
32
33
  metaclass (0.0.4)
34
+ method_source (0.8.2)
33
35
  mocha (1.1.0)
34
36
  metaclass (~> 0.0.1)
35
37
  mocha-on-bacon (0.2.2)
@@ -42,6 +44,10 @@ GEM
42
44
  powerpack (0.1.0)
43
45
  prettybacon (0.0.2)
44
46
  bacon (~> 1.2)
47
+ pry (0.10.4)
48
+ coderay (~> 1.1.0)
49
+ method_source (~> 0.8.1)
50
+ slop (~> 3.4)
45
51
  rainbow (2.0.0)
46
52
  rake (10.3.2)
47
53
  rubocop (0.29.1)
@@ -57,6 +63,7 @@ GEM
57
63
  multi_json
58
64
  simplecov-html (~> 0.8.0)
59
65
  simplecov-html (0.8.0)
66
+ slop (3.6.0)
60
67
  vcr (2.9.3)
61
68
  webmock (1.20.4)
62
69
  addressable (>= 2.3.6)
@@ -73,6 +80,7 @@ DEPENDENCIES
73
80
  codeclimate-test-reporter
74
81
  mocha-on-bacon
75
82
  prettybacon
83
+ pry
76
84
  rake
77
85
  rubocop
78
86
  vcr
data/Rakefile CHANGED
@@ -29,6 +29,7 @@ begin
29
29
  duration = Time.now - start_time
30
30
  puts "Tests completed in #{duration}s"
31
31
  Rake::Task['rubocop'].invoke
32
+ Rake::Task['validate_json'].invoke
32
33
  end
33
34
 
34
35
  def specs(dir)
@@ -46,6 +47,38 @@ begin
46
47
  abort('RuboCop failed!') unless result == 0
47
48
  end
48
49
 
50
+ # plugins.json
51
+ #----------------------------------------------------------------------------#
52
+
53
+ desc 'Validates plugins.json'
54
+ task :validate_json do
55
+ require 'json'
56
+ require 'pathname'
57
+
58
+ puts 'Validating plugins.json'
59
+
60
+ json_file = Pathname(__FILE__).parent + 'plugins.json'
61
+ json = json_file.read
62
+ plugins = JSON.load(json)
63
+ abort('Invalid JSON in plugins.json') unless plugins
64
+ keys = %w(gem name author social_media_url url description)
65
+ optional_keys = %w(social_media_url)
66
+ errors = plugins['plugins'].reduce([]) do |errors, plugin|
67
+ extra_keys = plugin.keys - keys
68
+ unless extra_keys.empty?
69
+ errors << "plugin `#{plugin['name']}` has extra keys #{extra_keys}"
70
+ end
71
+ (keys - optional_keys).each do |key|
72
+ unless plugin[key]
73
+ errors << "plugin `#{plugin['name']}` is missing key `#{key}`"
74
+ end
75
+ end
76
+ errors
77
+ end
78
+ unless errors.empty?
79
+ abort("Invalid plugins.json:\n\n#{errors.join("\n")}")
80
+ end
81
+ end
49
82
 
50
83
  rescue LoadError
51
84
  $stderr.puts "\033[0;31m" \
@@ -21,12 +21,13 @@ Gem::Specification.new do |spec|
21
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.add_runtime_dependency 'nap', '~> 1.0'
25
- spec.add_runtime_dependency 'cork', '~> 0'
24
+ spec.add_runtime_dependency 'nap'
25
+ spec.add_runtime_dependency 'cork'
26
26
  spec.add_runtime_dependency 'open4', '~> 1.3'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '~> 1.3'
29
29
  spec.add_development_dependency 'rake'
30
+ spec.add_development_dependency 'pry'
30
31
 
31
32
  spec.required_ruby_version = '>= 2.0.0'
32
33
  end
@@ -9,17 +9,17 @@ module CLAide
9
9
  # template
10
10
  #
11
11
  class Create < Plugins
12
- NAME_PREFIX = 'claide-'
13
-
14
12
  self.summary = 'Creates a new plugin'
15
- self.description = <<-DESC
13
+ def self.description
14
+ <<-DESC
16
15
  Creates a scaffold for the development of a new plugin
17
- named `NAME` according to the CocoaPods best practices.
16
+ named `NAME` according to the best practices.
18
17
 
19
18
  If a `TEMPLATE_URL`, pointing to a git repo containing a
20
19
  compatible template, is specified, it will be used
21
20
  in place of the default one.
22
- DESC
21
+ DESC
22
+ end
23
23
 
24
24
  self.arguments = [
25
25
  CLAide::Argument.new('NAME', true),
@@ -28,8 +28,9 @@ module CLAide
28
28
 
29
29
  def initialize(argv)
30
30
  @name = argv.shift_argument
31
- unless @name.nil? || @name.empty? || @name.start_with?(NAME_PREFIX)
32
- @name = NAME_PREFIX + @name.dup
31
+ prefix = CLAide::Plugins.config.plugin_prefix + '-'
32
+ unless @name.nil? || @name.empty? || @name.start_with?(prefix)
33
+ @name = prefix + @name.dup
33
34
  end
34
35
  @template_url = argv.shift_argument
35
36
  super
@@ -59,10 +60,6 @@ module CLAide
59
60
  extend CLAide::Executable
60
61
  executable :git
61
62
 
62
- TEMPLATE_BASE_URL = 'https://github.com/CocoaPods/'
63
- TEMPLATE_REPO = TEMPLATE_BASE_URL + 'cocoapods-plugin-template.git'
64
- TEMPLATE_INFO_URL = TEMPLATE_BASE_URL + 'cocoapods-plugin-template'
65
-
66
63
  # Clones the template from the remote in the working directory using
67
64
  # the name of the plugin.
68
65
  #
@@ -72,14 +69,7 @@ module CLAide
72
69
  UI.section("-> Creating `#{@name}` plugin") do
73
70
  UI.notice "using template '#{template_repo_url}'"
74
71
  command = ['clone', template_repo_url, @name]
75
- if method(:git!).arity == -1
76
- git! command
77
- else
78
- # TODO: delete this conditional and use the other branch when
79
- # 0.5.0 is released
80
- require 'shellwords'
81
- git! command.map(&:to_s).map(&:shellescape).join(' ')
82
- end
72
+ git! command
83
73
  end
84
74
  end
85
75
 
@@ -99,12 +89,12 @@ module CLAide
99
89
  end
100
90
  end
101
91
 
102
- # Checks if a template URL is given else returns the TEMPLATE_REPO URL
92
+ # Checks if a template URL is given else returns the Plugins.config URL
103
93
  #
104
94
  # @return String
105
95
  #
106
96
  def template_repo_url
107
- @template_url || TEMPLATE_REPO
97
+ @template_url || CLAide::Plugins.config.plugin_template_url
108
98
  end
109
99
 
110
100
  # Shows a reminder to the plugin author to make a Pull Request
@@ -8,10 +8,10 @@ module CLAide
8
8
  #
9
9
  class List < Plugins
10
10
  self.summary = 'List all known plugins'
11
- self.description = <<-DESC
12
- List all known plugins (according to the list
13
- hosted on github.com/CocoaPods/cocoapods-plugins)
14
- DESC
11
+ def self.description
12
+ "List all known plugins (according to the list
13
+ hosted on #{ CLAide::Plugins.config.plugin_list_url })"
14
+ end
15
15
 
16
16
  def self.options
17
17
  super.reject { |option, _| option == '--silent' }
@@ -11,6 +11,10 @@ module CLAide
11
11
  CLAide::Plugins.config.plugin_list_url
12
12
  end
13
13
 
14
+ def self.plugin_prefix
15
+ CLAide::Plugins.config.plugin_prefix
16
+ end
17
+
14
18
  # Force-download the JSON
15
19
  #
16
20
  # @return [Hash] The hash representing the JSON with all known plugins
@@ -22,7 +26,7 @@ module CLAide
22
26
  parse_json(response.body)
23
27
  else
24
28
  raise Informative, 'Could not download plugins list ' \
25
- "from cocoapods-plugins: #{response.inspect}"
29
+ "from #{plugin_prefix}-plugins: #{response.inspect}"
26
30
  end
27
31
  end
28
32
 
@@ -109,7 +113,8 @@ module CLAide
109
113
  def self.parse_json(json_str)
110
114
  JSON.parse(json_str)
111
115
  rescue JSON::ParserError => e
112
- raise Informative, "Invalid plugins list from cocoapods-plugins: #{e}"
116
+ raise Informative,
117
+ "Invalid plugins list from #{plugin_prefix}-plugins: #{e}"
113
118
  end
114
119
 
115
120
  # Format the title line to print the plugin info with print_plugin
@@ -1,3 +1,3 @@
1
1
  module CLAidePlugins
2
- VERSION = '0.9.0'.freeze
2
+ VERSION = '0.9.1'.freeze
3
3
  end
@@ -7,8 +7,20 @@ module CLAide
7
7
  describe Command::Plugins::Create do
8
8
  extend SpecHelper::PluginsCreateCommand
9
9
 
10
+ # We need to have a working repo for the template inside this test
11
+ # suite so we're using the real Danger config file, then setting
12
+ # it back to the default.
10
13
  before do
11
14
  UI_OUT.reopen
15
+ config = CLAide::Plugins::Configuration.new('Danger',
16
+ 'danger',
17
+ 'https://raw.githubusercontent.com/danger/danger.systems/master/plugins-search-generated.json',
18
+ 'https://github.com/danger/danger-plugin-template')
19
+ CLAide::Plugins.config = config
20
+ end
21
+
22
+ after do
23
+ CLAide::Plugins.config = default_testing_config
12
24
  end
13
25
 
14
26
  it 'registers itself' do
@@ -41,6 +53,9 @@ module CLAide
41
53
 
42
54
  #--- Naming
43
55
 
56
+ # These have to be `danger` as the configure script runs from the danger
57
+ # plugin template repo.
58
+
44
59
  it 'should prefix the given name if not already' do
45
60
  @command = create_command('unprefixed')
46
61
  Dir.mktmpdir do |tmpdir|
@@ -48,42 +63,42 @@ module CLAide
48
63
  @command.run
49
64
  end
50
65
  end
51
- UI_OUT.string.should.include('Creating `claide-unprefixed` plugin')
66
+ UI_OUT.string.should.include('Creating `danger-unprefixed` plugin')
52
67
  end
53
68
 
54
69
  it 'should not prefix the name if already prefixed' do
55
- @command = create_command('claide-prefixed')
70
+ @command = create_command('danger-prefixed')
56
71
  Dir.mktmpdir do |tmpdir|
57
72
  Dir.chdir(tmpdir) do
58
73
  @command.run
59
74
  end
60
75
  end
61
- UI_OUT.string.should.include('Creating `claide-prefixed` plugin')
76
+ UI_OUT.string.should.include('Creating `danger-prefixed` plugin')
62
77
  end
63
78
 
64
79
  #--- Template download
65
80
 
66
81
  it 'should download the default template repository' do
67
- @command = create_command('claide-banana')
82
+ @command = create_command('danger-banana')
68
83
 
69
- template_repo = 'https://github.com/CocoaPods/' \
70
- 'cocoapods-plugin-template.git'
71
- git_command = ['clone', template_repo, 'claide-banana']
84
+ template_repo = 'https://github.com/danger/' \
85
+ 'danger-plugin-template'
86
+ git_command = ['clone', template_repo, 'danger-banana']
72
87
  @command.expects(:git!).with(git_command)
73
88
  @command.expects(:configure_template)
74
89
  @command.run
75
- UI_OUT.string.should.include('Creating `claide-banana` plugin')
90
+ UI_OUT.string.should.include('Creating `danger-banana` plugin')
76
91
  end
77
92
 
78
93
  it 'should download the passed in template repository' do
79
- alt_repo = 'https://github.com/CocoaPods/' \
80
- 'claide-banana-plugin-template.git'
81
- @command = create_command('claide-banana', alt_repo)
94
+ alt_repo = 'https://github.com/danger/' \
95
+ 'danger-banana-plugin-template'
96
+ @command = create_command('danger-banana', alt_repo)
82
97
 
83
- @command.expects(:git!).with(['clone', alt_repo, 'claide-banana'])
98
+ @command.expects(:git!).with(['clone', alt_repo, 'danger-banana'])
84
99
  @command.expects(:configure_template)
85
100
  @command.run
86
- UI_OUT.string.should.include('Creating `claide-banana` plugin')
101
+ UI_OUT.string.should.include('Creating `danger-banana` plugin')
87
102
  end
88
103
  end
89
104
  end
@@ -16,7 +16,7 @@ module CLAide
16
16
 
17
17
  it 'handles empty/bad JSON' do
18
18
  stub_plugins_json_request 'This is not JSON'
19
- expected_error = /Invalid plugins list from cocoapods-plugins/
19
+ expected_error = /Invalid plugins list from claidetest-plugins/
20
20
  should.raise(CLAide::Informative) do
21
21
  Command::PluginsHelper.download_json
22
22
  end.message.should.match(expected_error)
@@ -24,7 +24,7 @@ module CLAide
24
24
 
25
25
  it 'notifies the user if the download fails' do
26
26
  stub_plugins_json_request '', [404, 'Not Found']
27
- expected_error = /Could not download plugins list from cocoapods-plugins/
27
+ expected_error = /Could not download plugins list from claidetest-plugins/
28
28
  should.raise(CLAide::Informative) do
29
29
  Command::PluginsHelper.download_json
30
30
  end.message.should.match(expected_error)
@@ -25,7 +25,7 @@ module CLAide
25
25
  end
26
26
 
27
27
  it 'should default to a CLAide plugin config' do
28
- config = CLAide::Plugins.config
28
+ config = CLAide::Plugins::Configuration.new
29
29
  config.name.should.equal('default name')
30
30
  config.plugin_prefix.should.equal('claide')
31
31
  config.plugin_list_url.should.equal('https://github.com/cocoapods/claide-plugins/something.json')
data/spec/spec_helper.rb CHANGED
@@ -62,6 +62,19 @@ end
62
62
 
63
63
  #-----------------------------------------------------------------------------#
64
64
 
65
+ # Use test specific settings inside all of the tests
66
+ #
67
+
68
+ def default_testing_config
69
+ CLAide::Plugins::Configuration.new('CLAideTesting',
70
+ 'claidetest',
71
+ 'https://github.com/cocoapods/claide-plugins/something.json',
72
+ 'https://github.com/danger/danger-plugin-template')
73
+ end
74
+
75
+ CLAide::Plugins.config = default_testing_config
76
+ #-----------------------------------------------------------------------------#
77
+
65
78
  # SpecHelper namespace
66
79
  #
67
80
  module SpecHelper
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claide-plugins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Grandinetti
@@ -9,34 +9,34 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-07-09 00:00:00.000000000 Z
12
+ date: 2016-07-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nap
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.0'
20
+ version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.0'
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: cork
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
@@ -81,6 +81,20 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: pry
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
84
98
  description: |2
85
99
  This CLAide plugin shows information about all available CLAide plugins
86
100
  (yes, this is very meta!).