terraorg 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60e495604f197ced6264c00cea8607d7c846fd65179e024eaeabcf4ea3e28fb7
4
- data.tar.gz: b24f650f9f48b5707b10f2cf4422e7cca438f257a57b0f5276abb90d34f5115c
3
+ metadata.gz: ce81d4e08d1d925fbf0cc419b5012725e33190563592d8ad491bf52a39df2920
4
+ data.tar.gz: 1854959244ef5576f9c39f3079ae73e7af243f591c972e3f79ecfb9729a87445
5
5
  SHA512:
6
- metadata.gz: 634029af22269e47401fa78d47f11aa34dbe0cff1343459db6d344a9c496a02ba9d2ed97c3d2bae5dc95a4a01e44cbdb794160459a7ffb23d33c9c360f96acd0
7
- data.tar.gz: 51d2f8ddebbe751e2e935ce30d68c111b090a500fa35edf61f4ed9011d63ccb388f2d4e04b719c2eb31b6012f871cafba4088bbab3eb9f97662d3751e62ccc39
6
+ metadata.gz: 498d390c6eb73ff5761ccc40e8a0918d8c0e1ec8ac21d2d5862a9d9b0c7da514e574849a853cb9fce4b8516625bcb72ef6bcc39b2de52e80cbf13fef6e62a5a8
7
+ data.tar.gz: 72575c047b7565108453002e809fa2c76346e6a8998f04ff52750c065ecb48eb1b9235f0d0a6cd2e967b81292e30a668d91339b9d1bc26e7fc520669a47a750f
data/bin/terraorg CHANGED
@@ -31,6 +31,7 @@ ACTIONS = [
31
31
  'validate'
32
32
  ].freeze
33
33
 
34
+ STRICT_VALIDATION = ENV.fetch('TERRAORG_STRICT_VALIDATION', 'true')
34
35
  SQUADS_FILE = ENV.fetch('TERRAORG_SQUADS', 'squads.json')
35
36
  PLATOONS_FILE = ENV.fetch('TERRAORG_PLATOONS', 'platoons.json')
36
37
  ORG_FILE = ENV.fetch('TERRAORG_ROOT', 'org.json')
@@ -95,7 +96,8 @@ platoons = Platoons.new(JSON.parse(platoons_data), squads, people, GSUITE_DOMAIN
95
96
  org_data = File.read(ORG_FILE)
96
97
  org = Org.new(JSON.parse(org_data), platoons, squads, people, GSUITE_DOMAIN)
97
98
 
98
- org.validate!
99
+ strict = (STRICT_VALIDATION == 'true')
100
+ org.validate!(strict: strict)
99
101
 
100
102
  case action
101
103
  when 'generate-squads-md'
@@ -49,23 +49,33 @@ class Org
49
49
  @squads = squads
50
50
  end
51
51
 
52
- def validate!
52
+ def validate!(strict: true)
53
+ failure = false
54
+
53
55
  # Do not allow the JSON files to contain any people who have left.
54
- raise "Users have left the company: #{@people.inactive.map(&:id).join(', ')}" unless @people.inactive.empty?
56
+ unless @people.inactive.empty?
57
+ $stderr.puts "ERROR: Users have left the company: #{@people.inactive.map(&:id).join(', ')}"
58
+ failure = true
59
+ end
55
60
 
56
61
  # Do not allow the org to be totally empty.
57
- raise 'Org has no platoons or exception squads' if @member_platoons.size + @member_exception_squads.size == 0
62
+ if @member_platoons.size + @member_exception_squads.size == 0
63
+ $stderr.puts 'ERROR: Org has no platoons or exception squads'
64
+ failure = true
65
+ end
58
66
 
59
67
  # Require all platoons to be part of the org.
60
68
  platoon_diff = Set.new(@platoons.all_names) - Set.new(@member_platoon_names)
61
69
  unless platoon_diff.empty?
62
- raise "Platoons are not used in the org: #{platoon_diff.to_a.sort}"
70
+ $stderr.puts "ERROR: Platoons are not used in the org: #{platoon_diff.to_a.sort}"
71
+ failure = true
63
72
  end
64
73
 
65
74
  # Require all squads to be used in the org.
66
75
  squad_diff = Set.new(@squads.all_names) - Set.new(@platoons.all_squad_names) - Set.new(@member_exception_squad_names)
67
76
  unless squad_diff.empty?
68
- raise "Squad(s) are not used in the org: #{squad_diff.to_a.sort}"
77
+ $stderr.puts "ERROR: Squad(s) are not used in the org: #{squad_diff.to_a.sort}"
78
+ failure = true
69
79
  end
70
80
 
71
81
  all_squads = (@member_platoons.map(&:member_squads) + @member_exception_squads).flatten
@@ -79,7 +89,8 @@ class Org
79
89
  count > 1
80
90
  end
81
91
  if !more_than_one_platoon.empty?
82
- raise "Squads are part of more than one platoon: #{more_than_one_platoon}"
92
+ $stderr.puts "ERROR: Squads are part of more than one platoon: #{more_than_one_platoon}"
93
+ failure = true
83
94
  end
84
95
 
85
96
  # Validate that a squad member belongs to some maximum number of squads
@@ -93,8 +104,8 @@ class Org
93
104
  count > MAX_MEMBER_SQUADS_PER_PERSON
94
105
  end
95
106
  if !more_than_max_squads.empty?
96
- # TODO(joshk): Enforce after April 17th
97
- $stderr.puts "WARNING: Members are part of more than #{MAX_MEMBER_SQUADS_PER_PERSON} squads: #{more_than_max_squads}"
107
+ $stderr.puts "ERROR: People are members of more than #{MAX_MEMBER_SQUADS_PER_PERSON} squads: #{more_than_max_squads}"
108
+ failure = true
98
109
  end
99
110
 
100
111
  associate_count = {}
@@ -105,8 +116,8 @@ class Org
105
116
  count > MAX_ASSOCIATE_SQUADS_PER_PERSON
106
117
  end
107
118
  if !more_than_max_squads.empty?
108
- # TODO(joshk): Enforce after April 17th
109
- $stderr.puts "WARNING: People associated with more than #{MAX_ASSOCIATE_SQUADS_PER_PERSON} squads: #{more_than_max_squads}"
119
+ $stderr.puts "ERROR: People are associates of more than #{MAX_ASSOCIATE_SQUADS_PER_PERSON} squads: #{more_than_max_squads}"
120
+ failure = true
110
121
  end
111
122
 
112
123
  # Validate that a squad member is not also an org exception
@@ -115,8 +126,11 @@ class Org
115
126
  exceptions.member? member
116
127
  end
117
128
  if !exception_and_squad_member.empty?
118
- raise "Exception members are also squad members: #{exception_and_squad_member}"
129
+ $stderr.puts "ERROR: Exception members are also squad members: #{exception_and_squad_member}"
130
+ failure = true
119
131
  end
132
+
133
+ raise "CRITICAL: Validation failed due to at least one error above" if failure && strict
120
134
  end
121
135
 
122
136
  def members
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module Terraorg
16
- VERSION = '0.2.3'
16
+ VERSION = '0.3.0'
17
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraorg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Kwan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-13 00:00:00.000000000 Z
11
+ date: 2020-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: countries