jgrouper 0.6.0 → 0.7.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.
data/HISTORY.md CHANGED
@@ -1,6 +1,17 @@
1
1
  JGrouper History
2
2
  ================
3
3
 
4
+ 2014-02-27 v0.7.0
5
+ -----------------
6
+ * Add `bin/jgrouper-add-group-type`
7
+ * Add `JGrouper::Group#add_type()`
8
+ * Add `JGrouper::Group#type?()`
9
+ * Add `JGrouper::GroupType#to_grouper()`
10
+ * Add `JGrouper::GroupType#to_s()`
11
+ * Fix `bin/jgrouper-grant` error messages
12
+ * Fix `bin/jgrouper-revoke` error messages
13
+
14
+
4
15
  2014-01-10 JGrouper v0.6.0
5
16
  -------------------------
6
17
  * Add `bin/jgrouper-diff`
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env jruby
2
+
3
+ require 'jgrouper'
4
+ require 'optparse'
5
+
6
+
7
+ class MyApp
8
+
9
+ attr_accessor :recurse, :verbose
10
+
11
+ def initialize
12
+ @recurse = false
13
+ @verbose = false
14
+ yield self if block_given?
15
+ self
16
+ end
17
+
18
+ def add_group_type(stem_or_group, group_type)
19
+ raise 'ERROR: stem-or-group is nil' if stem_or_group.nil?
20
+ raise 'ERROR: group type is nil' if group_type.nil?
21
+
22
+ type = JGrouper::GroupType.find group_type
23
+ raise "ERROR: could not find group type: #{group_type}" if type.nil?
24
+ puts "found group type: #{type.to_s}" if verbose?
25
+
26
+ stem = JGrouper::Stem.find stem_or_group
27
+ return add_group_type_to_stem(stem, type) unless stem.nil?
28
+
29
+ group = JGrouper::Group.find stem_or_group
30
+ return add_group_type_to_group(group, type) unless group.nil?
31
+
32
+ raise "ERROR: could not find stem-or-group: #{stem_or_group}"
33
+ end
34
+
35
+ def recurse? ; @recurse ; end
36
+ def verbose? ; @verbose ; end
37
+
38
+
39
+ private
40
+
41
+ def add_group_type_to_group(group, type)
42
+ return if group.type? type
43
+ puts "adding group type #{type.name} on group #{group.name}" if verbose?
44
+ group.add_type type
45
+ end
46
+
47
+ def add_group_type_to_stem(stem, type)
48
+ unless recurse?
49
+ warn 'WARNING: cannot add group type on stem without specifying -R'
50
+ return false
51
+ end
52
+
53
+ stem.groups do |group|
54
+ next if group.type? type
55
+ puts "adding group type #{type.name} on group #{group.name}" if verbose?
56
+ group.add_type type
57
+ end
58
+ stem.stems { |child| add_group_type_to_stem child, type }
59
+
60
+ true
61
+ end
62
+
63
+ end
64
+
65
+
66
+ MyApp.new do |app|
67
+
68
+ opts = OptionParser.new do |opts|
69
+ opts.banner = "USAGE: #{ File.basename(__FILE__) } [options] <stem-or-group> <group type>"
70
+ opts.on('-R', '--[no-]recurse', 'Recursively add group type [DEFAULT: no]') do |recurse|
71
+ app.recurse = recurse
72
+ end
73
+ opts.on_tail('-h', '--help', 'Show help') do
74
+ puts opts
75
+ exit
76
+ end
77
+ opts.on_tail('-v', '--[no-]verbose', 'Enable verbose mode [DEFAULT: no]') do |verbose|
78
+ app.verbose = verbose
79
+ end
80
+ end.parse!
81
+
82
+ # TODO DRY
83
+ if ENV['GROUPER_HOME']
84
+ JGrouper.home! ENV['GROUPER_HOME']
85
+ else
86
+ warn "ERROR: GROUPER_HOME not set"
87
+ exit 1
88
+ end
89
+
90
+ app.add_group_type( ARGV.shift, ARGV.shift ) or exit 1
91
+
92
+ end
93
+
94
+ # vim: syntax=ruby
95
+
@@ -17,8 +17,8 @@ class MyApp
17
17
 
18
18
  def grant(stem_or_group, privilege, subject)
19
19
  raise 'ERROR: stem-or-group is nil' if stem_or_group.nil?
20
- raise 'ERROR: privilege is nil' if stem_or_group.nil?
21
- raise 'ERROR: subject is nil' if stem_or_group.nil?
20
+ raise 'ERROR: privilege is nil' if privilege.nil?
21
+ raise 'ERROR: subject is nil' if subject.nil?
22
22
 
23
23
  priv = JGrouper::Privilege.find privilege
24
24
  raise "ERROR: could not find privilege: #{privilege}" if priv.nil?
@@ -17,8 +17,8 @@ class MyApp
17
17
 
18
18
  def revoke(stem_or_group, privilege, subject)
19
19
  raise 'ERROR: stem-or-group is nil' if stem_or_group.nil?
20
- raise 'ERROR: privilege is nil' if stem_or_group.nil?
21
- raise 'ERROR: subject is nil' if stem_or_group.nil?
20
+ raise 'ERROR: privilege is nil' if privilege.nil?
21
+ raise 'ERROR: subject is nil' if subject.nil?
22
22
 
23
23
  priv = JGrouper::Privilege.find privilege
24
24
  raise "ERROR: could not find privilege: #{privilege}" if priv.nil?
@@ -33,6 +33,13 @@ module JGrouper # :nodoc:
33
33
  group
34
34
  end
35
35
 
36
+ #
37
+ # Add +JGrouper::GroupType+ to group.
38
+ #
39
+ def add_type(type)
40
+ @obj.addType type.to_grouper, false
41
+ end
42
+
36
43
  def grant(subject, privilege)
37
44
  @obj.grantPriv subject.to_grouper, privilege.to_grouper, false
38
45
  end
@@ -98,6 +105,18 @@ module JGrouper # :nodoc:
98
105
  %w( name display_name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.to_csv.chomp
99
106
  end
100
107
 
108
+ #
109
+ # Does group have group type (where type is +String+ or +JGrouper::GroupType+)?
110
+ #
111
+ def type?(type)
112
+ case type.class
113
+ when String
114
+ return @obj.hasType JGrouper::GroupType.find(type).to_grouper
115
+ else
116
+ return @obj.hasType type.to_grouper
117
+ end
118
+ end
119
+
101
120
  end
102
121
  end
103
122
 
@@ -53,6 +53,11 @@ module JGrouper # :nodoc:
53
53
  end
54
54
  end
55
55
 
56
+ #
57
+ # Return Grouper object.
58
+ #
59
+ def to_grouper; @obj; end
60
+
56
61
  def to_hash
57
62
  {
58
63
  kind: 'group_type',
@@ -70,6 +75,11 @@ module JGrouper # :nodoc:
70
75
  to_hash.to_json
71
76
  end
72
77
 
78
+ def to_s
79
+ return nil if @obj.nil?
80
+ %w( name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.to_csv.chomp
81
+ end
82
+
73
83
  end
74
84
  end
75
85
 
@@ -1,4 +1,4 @@
1
1
  module JGrouper
2
- VERSION = '0.6.0'
2
+ VERSION = '0.7.0'
3
3
  end
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jgrouper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-10 00:00:00.000000000 Z
12
+ date: 2014-02-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashdiff
@@ -111,6 +111,7 @@ description: JRuby wrapper around the Internet2 Grouper API
111
111
  email:
112
112
  - blair.christensen@gmail.com
113
113
  executables:
114
+ - jgrouper-add-group-type
114
115
  - jgrouper-audit-archiver
115
116
  - jgrouper-diff
116
117
  - jgrouper-export
@@ -127,6 +128,7 @@ files:
127
128
  - README.rdoc
128
129
  - Rakefile
129
130
  - TODO.md
131
+ - bin/jgrouper-add-group-type
130
132
  - bin/jgrouper-audit-archiver
131
133
  - bin/jgrouper-diff
132
134
  - bin/jgrouper-export