puppetfile_editor 0.4.0 → 0.5.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: 3012dc52c8fc9e31fd2e05bf696482b5d5151e7e
4
- data.tar.gz: db59418ca560a30d01901a5dd6fdbd5b63764935
3
+ metadata.gz: bc263a5f1856d71645fb70d268488605c16c3525
4
+ data.tar.gz: 19486c4caa8397f34aa7691917954cc88b35dcd0
5
5
  SHA512:
6
- metadata.gz: 1d960ef7240383124c2f8dc8cfc569f2b77bc6be49111b776000add14a9f1054c00af65746ccac26065c433ea8c89433e5a7dbfa1c7b0fa2bd57bea1e3a46ebc
7
- data.tar.gz: f45048722ddecabc3119a920ce15f60d9db714aa0f832011ccec7c509562eef5ff5fbbb0b618df2ebbed70a37ca7053cea646b5209ec7406d2b9622eb83d9dd9
6
+ metadata.gz: aad9c5681bc66503bc7521d13313f0ee3be222da26382deeaf24b28736f25305897be3edec8c2d1d175fcac480111c3457f983b8d55454888c535476954848ae
7
+ data.tar.gz: b3779e4a40716475e33f439281c359d4c8197c846356c0b866265574bbb44a29db210285d79856f3d2789b9fa467812edb199b2e9c2cb1a601ab899852ee23f0
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## [0.5.0] - 2017-10-23
8
+ ### Added
9
+ - `delete` command for deleting modules from Puppetfile.
10
+
7
11
  ## [0.4.0] - 2017-10-07
8
12
  ### Added
9
13
  - Support for setting `changeset` for git/hg modules.
data/bin/pfile CHANGED
@@ -11,7 +11,7 @@ ARGV.push('-h') if ARGV.empty?
11
11
  options = { puppetfile: './Puppetfile' }
12
12
 
13
13
  subcommands = {
14
- 'edit' => OptionParser.new do |parser|
14
+ 'edit' => OptionParser.new do |parser|
15
15
  parser.banner = "Usage: #{filename} edit [options]"
16
16
  parser.on('-m', '--module-name NAME', 'Module name') do |setting|
17
17
  options[:name] = setting
@@ -23,7 +23,13 @@ subcommands = {
23
23
  'format' => OptionParser.new do |parser|
24
24
  parser.banner = "Usage: #{filename} format"
25
25
  end,
26
- 'add' => OptionParser.new do |parser|
26
+ 'delete' => OptionParser.new do |parser|
27
+ parser.banner = "Usage: #{filename} format -m MODULENAME"
28
+ parser.on('-m', '--module-name NAME', 'Module name') do |setting|
29
+ options[:name] = setting
30
+ end
31
+ end,
32
+ 'add' => OptionParser.new do |parser|
27
33
  parser.banner = "Usage: #{filename} add [options]"
28
34
  parser.on('-m', '--module-name NAME', 'Module name') do |setting|
29
35
  options[:name] = setting
@@ -36,7 +42,8 @@ subcommands = {
36
42
  end
37
43
  parser.on('-u', '--version [PARAM=VALUE]', 'Version of module to add in the form of PARAM=VALUE') do |setting|
38
44
  if (match = setting.match(/^(\w+)=([^=]+)$/))
39
- options[:param], options[:value] = match[1], match[2]
45
+ options[:param] = match[1]
46
+ options[:value] = match[2]
40
47
  elsif (match = setting.match(/^\d+(\.\d)*$/))
41
48
  options[:version] = match[0]
42
49
  else
@@ -45,7 +52,7 @@ subcommands = {
45
52
  end
46
53
  end
47
54
  end,
48
- 'merge' => OptionParser.new do |parser|
55
+ 'merge' => OptionParser.new do |parser|
49
56
  parser.banner = "Usage: #{filename} merge [options]"
50
57
  parser.separator ' Merge existing Puppetfile with another one from STDIN.'
51
58
  parser.separator ' Dump the result to STDOUT.'
@@ -37,22 +37,29 @@ module PuppetfileEditor
37
37
  @pfile.dump
38
38
  end
39
39
 
40
+ def delete(opts)
41
+ warn_and_exit "Module #{opts[:name]} does not exist in your Puppetfile." unless @pfile.modules.key? opts[:name]
42
+
43
+ @pfile.delete_module(opts[:name])
44
+ @pfile.dump
45
+ end
46
+
40
47
  def add(opts)
41
48
  warn_and_exit "Module #{opts[:name]} is already present in your Puppetfile." if @pfile.modules.key? opts[:name]
42
49
 
43
50
  case opts[:type]
44
- when :hg, :git
45
- warn_and_exit 'URL must be provided for Git and Hg modules' unless opts.key? :url
46
- warn_and_exit 'Version must be provided for Git and Hg modules' unless opts.key? :param
47
- opts[:value] = :latest if opts[:value] == 'latest'
48
- @pfile.add_module(opts[:name], opts[:type] => opts[:url], opts[:param] => opts[:value])
49
- when :local
50
- @pfile.add_module(opts[:name], :local)
51
- when :forge
52
- warn_and_exit 'Version must be provided for Forge modules' unless opts.key? :version
53
- @pfile.add_module(opts[:name], opts[:version])
54
- else
55
- warn_and_exit 'Only hg, git, local, and forge modules are supported at the moment.'
51
+ when :hg, :git
52
+ warn_and_exit 'URL must be provided for Git and Hg modules' unless opts.key? :url
53
+ warn_and_exit 'Version must be provided for Git and Hg modules' unless opts.key? :param
54
+ opts[:value] = :latest if opts[:value] == 'latest'
55
+ @pfile.add_module(opts[:name], opts[:type] => opts[:url], opts[:param] => opts[:value])
56
+ when :local
57
+ @pfile.add_module(opts[:name], :local)
58
+ when :forge
59
+ warn_and_exit 'Version must be provided for Forge modules' unless opts.key? :version
60
+ @pfile.add_module(opts[:name], opts[:version])
61
+ else
62
+ warn_and_exit 'Only hg, git, local, and forge modules are supported at the moment.'
56
63
  end
57
64
  @pfile.dump
58
65
  end
@@ -95,6 +102,9 @@ module PuppetfileEditor
95
102
  end
96
103
  end
97
104
 
105
+ # Abstraction of logging methods for PuppetfileEditor::CLI
106
+ #
107
+ # @api private
98
108
  class Logging
99
109
  def initialize
100
110
  @statuses = {
@@ -126,6 +136,5 @@ module PuppetfileEditor
126
136
  def mod_message(mod, indent)
127
137
  log("#{mod.name.ljust(indent)} => #{mod.message}", mod.status)
128
138
  end
129
-
130
139
  end
131
140
  end
@@ -1,4 +1,5 @@
1
1
  module PuppetfileEditor
2
+ # Module class represents a puppet module in Puppetfile
2
3
  class Module
3
4
  attr_reader :type
4
5
  attr_reader :params
@@ -30,29 +31,29 @@ module PuppetfileEditor
30
31
 
31
32
  def set(param, newvalue, force = false)
32
33
  case @type
33
- when :hg, :git
34
- if !force && !([:branch, :ref, :changeset] & @params.keys).empty?
35
- set_message("kept at (#{full_version})", :wont_upgrade)
36
- elsif !%w[branch tag ref changeset].include? param
37
- set_message("only 'branch', 'tag', 'ref', and 'changeset' are supported for '#{@type}' modules.", :unsupported)
38
- else
39
- set_message("updated (#{full_version} to #{param}: #{newvalue}", :updated)
40
- @params.delete :branch
41
- @params.delete :tag
42
- @params.delete :ref
43
- @params.delete :changeset
44
- @params[param.to_sym] = newvalue
45
- calculate_indent
46
- end
47
- when :forge
48
- if param == 'version'
49
- @params[:version] = newvalue
50
- set_message("successfully set #{param} to #{newvalue} for #{@name}.", :updated)
51
- else
52
- set_message("only 'version' is supported for forge modules.", :unsupported)
53
- end
34
+ when :hg, :git
35
+ if !force && !([:branch, :ref, :changeset] & @params.keys).empty?
36
+ set_message("kept at (#{full_version})", :wont_upgrade)
37
+ elsif !%w[branch tag ref changeset].include? param
38
+ set_message("only 'branch', 'tag', 'ref', and 'changeset' are supported for '#{@type}' modules.", :unsupported)
54
39
  else
55
- set_message("editing params for '#{@type}' modules is not supported.", :unsupported)
40
+ set_message("updated (#{full_version} to #{param}: #{newvalue}", :updated)
41
+ @params.delete :branch
42
+ @params.delete :tag
43
+ @params.delete :ref
44
+ @params.delete :changeset
45
+ @params[param.to_sym] = newvalue
46
+ calculate_indent
47
+ end
48
+ when :forge
49
+ if param == 'version'
50
+ @params[:version] = newvalue
51
+ set_message("successfully set #{param} to #{newvalue} for #{@name}.", :updated)
52
+ else
53
+ set_message("only 'version' is supported for forge modules.", :unsupported)
54
+ end
55
+ else
56
+ set_message("editing params for '#{@type}' modules is not supported.", :unsupported)
56
57
  end
57
58
  end
58
59
 
@@ -62,62 +63,62 @@ module PuppetfileEditor
62
63
  return
63
64
  end
64
65
  case @type
65
- when :hg, :git
66
- new = mod.params.reject { |param, _| param.eql? @type }
67
- if !force && new.keys == [:tag] && !([:branch, :ref, :changeset] & @params.keys).empty?
68
- set_message("kept at #{full_version}", :wont_upgrade)
69
- return
70
- end
71
- if full_version == mod.full_version
72
- set_message("versions match (#{full_version})", :matched)
73
- return
74
- else
75
- set_message("updated (#{full_version} to #{mod.full_version})", :updated)
76
- end
77
- @params.delete_if { |param, _| [:branch, :tag, :ref, :changeset].include? param }
78
- @params.merge!(new)
79
- calculate_indent
80
- when :forge
81
- unless force
82
- if mod.params.nil? || mod.params.is_a?(Symbol)
83
- set_message("won't upgrade to #{mod.full_version}", :wont_upgrade)
84
- return
85
- end
86
- end
87
- if full_version == mod.full_version
88
- set_message("versions match (#{full_version})", :matched)
66
+ when :hg, :git
67
+ new = mod.params.reject { |param, _| param.eql? @type }
68
+ if !force && new.keys == [:tag] && !([:branch, :ref, :changeset] & @params.keys).empty?
69
+ set_message("kept at #{full_version}", :wont_upgrade)
70
+ return
71
+ end
72
+ if full_version == mod.full_version
73
+ set_message("versions match (#{full_version})", :matched)
74
+ return
75
+ else
76
+ set_message("updated (#{full_version} to #{mod.full_version})", :updated)
77
+ end
78
+ @params.delete_if { |param, _| [:branch, :tag, :ref, :changeset].include? param }
79
+ @params.merge!(new)
80
+ calculate_indent
81
+ when :forge
82
+ unless force
83
+ if mod.params.nil? || mod.params.is_a?(Symbol)
84
+ set_message("won't upgrade to #{mod.full_version}", :wont_upgrade)
89
85
  return
90
- else
91
- set_message("updated (#{full_version} to #{mod.full_version})", :updated)
92
86
  end
93
- @params = mod.params
87
+ end
88
+ if full_version == mod.full_version
89
+ set_message("versions match (#{full_version})", :matched)
90
+ return
94
91
  else
95
- set_message('only git, forge, and hg modules are supported for merging', :skipped)
92
+ set_message("updated (#{full_version} to #{mod.full_version})", :updated)
93
+ end
94
+ @params = mod.params
95
+ else
96
+ set_message('only git, forge, and hg modules are supported for merging', :skipped)
96
97
  end
97
98
  end
98
99
 
99
100
  def dump
100
101
  output = []
101
102
  case @type
102
- when :hg, :git
103
- output.push "mod '#{full_title}'"
104
- @params.each do |param_name, param_value|
105
- value = if param_value == :latest
106
- ':latest'
107
- else
108
- "'#{param_value}'"
109
- end
110
- param = "#{param_name}:".ljust(@indent)
111
- output.push " #{param} #{value}"
112
- end
113
- when :local
114
- output.push("mod '#{full_title}', :local")
103
+ when :hg, :git
104
+ output.push "mod '#{full_title}'"
105
+ @params.each do |param_name, param_value|
106
+ value = if param_value == :latest
107
+ ':latest'
108
+ else
109
+ "'#{param_value}'"
110
+ end
111
+ param = "#{param_name}:".ljust(@indent)
112
+ output.push " #{param} #{value}"
113
+ end
114
+ when :local
115
+ output.push("mod '#{full_title}', :local")
116
+ else
117
+ if @params.nil?
118
+ output.push("mod '#{full_title}'")
115
119
  else
116
- if @params.nil?
117
- output.push("mod '#{full_title}'")
118
- else
119
- output.push("mod '#{full_title}', '#{@params[:version]}'")
120
- end
120
+ output.push("mod '#{full_title}', '#{@params[:version]}'")
121
+ end
121
122
  end
122
123
  output.join(",\n")
123
124
  end
@@ -129,11 +130,11 @@ module PuppetfileEditor
129
130
 
130
131
  def full_version
131
132
  case @type
132
- when :hg, :git
133
- @params.reject { |param, _| param.eql? @type }.map { |param, value| "#{param}: #{value}" }.sort.join(', ')
134
- when :forge
135
- return @params[:version] if @params.key? :version
136
- nil
133
+ when :hg, :git
134
+ @params.reject { |param, _| param.eql? @type }.map { |param, value| "#{param}: #{value}" }.sort.join(', ')
135
+ when :forge
136
+ return @params[:version] if @params.key? :version
137
+ nil
137
138
  end
138
139
  end
139
140
 
@@ -71,11 +71,9 @@ module PuppetfileEditor
71
71
  end
72
72
 
73
73
  def update_module(name, param, value)
74
- if @modules.key? name
75
- @modules[name].set(param, value, true)
76
- else
77
- raise StandardError, "Module #{name} does not exist in your Puppetfile"
78
- end
74
+ raise StandardError, "Module #{name} does not exist in your Puppetfile" unless @modules.key? name
75
+
76
+ @modules[name].set(param, value, true)
79
77
  end
80
78
 
81
79
  def compare_with(pf)
@@ -108,6 +106,10 @@ module PuppetfileEditor
108
106
  @modules[mod.name] = mod
109
107
  end
110
108
 
109
+ def delete_module(name)
110
+ @modules.delete(name)
111
+ end
112
+
111
113
  def update_forge_url(url)
112
114
  raise StandardError, "Forge URL must be a String, but it is a #{url.class}" unless url.is_a? String
113
115
  @forge = url
@@ -1,3 +1,3 @@
1
1
  module PuppetfileEditor
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetfile_editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Piven
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-07 00:00:00.000000000 Z
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler