Class: LicenseFinder::Decisions

Inherits:
Object
  • Object
show all
Defined in:
lib/license_finder/decisions.rb

Defined Under Namespace

Classes: TXN

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDecisions

Returns a new instance of Decisions.



61
62
63
64
65
66
67
68
69
70
# File 'lib/license_finder/decisions.rb', line 61

def initialize
  @decisions = []
  @packages = Set.new
  @licenses = Hash.new { |h, k| h[k] = Set.new }
  @approvals = {}
  @whitelisted = Set.new
  @blacklisted = Set.new
  @ignored = Set.new
  @ignored_groups = Set.new
end

Instance Attribute Details

#blacklistedObject (readonly)

READ



9
10
11
# File 'lib/license_finder/decisions.rb', line 9

def blacklisted
  @blacklisted
end

#ignoredObject (readonly)

READ



9
10
11
# File 'lib/license_finder/decisions.rb', line 9

def ignored
  @ignored
end

#ignored_groupsObject (readonly)

READ



9
10
11
# File 'lib/license_finder/decisions.rb', line 9

def ignored_groups
  @ignored_groups
end

#packagesObject (readonly)

READ



9
10
11
# File 'lib/license_finder/decisions.rb', line 9

def packages
  @packages
end

#project_nameObject (readonly)

READ



9
10
11
# File 'lib/license_finder/decisions.rb', line 9

def project_name
  @project_name
end

#whitelistedObject (readonly)

READ



9
10
11
# File 'lib/license_finder/decisions.rb', line 9

def whitelisted
  @whitelisted
end

Class Method Details

.fetch_saved(file) ⇒ Object

PERSIST



176
177
178
# File 'lib/license_finder/decisions.rb', line 176

def self.fetch_saved(file)
  restore(read!(file))
end

.read!(file) ⇒ Object



199
200
201
# File 'lib/license_finder/decisions.rb', line 199

def self.read!(file)
  file.read if file.exist?
end

.restore(persisted) ⇒ Object



184
185
186
187
188
189
190
191
192
193
# File 'lib/license_finder/decisions.rb', line 184

def self.restore(persisted)
  result = new
  return result unless persisted

  actions = YAML.load(persisted)
  (actions || []).each do |action, *args|
    result.send(action, *args)
  end
  result
end

Instance Method Details

#add_package(name, version, txn = {}) ⇒ Object



72
73
74
75
76
# File 'lib/license_finder/decisions.rb', line 72

def add_package(name, version, txn = {})
  @decisions << [:add_package, name, version, txn]
  @packages << ManualPackage.new(name, version)
  self
end

#approval_of(name, version = nil) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/license_finder/decisions.rb', line 15

def approval_of(name, version = nil)
  if !@approvals.key?(name)
    nil
  elsif !version.nil?
    @approvals[name] if @approvals[name][:safe_versions].empty? || @approvals[name][:safe_versions].include?(version)
  elsif @approvals[name][:safe_versions].empty?
    @approvals[name]
  end
end

#approve(name, txn = {}) ⇒ Object



96
97
98
99
100
101
102
103
104
# File 'lib/license_finder/decisions.rb', line 96

def approve(name, txn = {})
  @decisions << [:approve, name, txn]

  versions = []
  versions = @approvals[name][:safe_versions] if @approvals.key?(name)
  @approvals[name] = TXN.from_hash(txn, versions)
  @approvals[name][:safe_versions].concat(txn[:versions]) unless txn[:versions].nil?
  self
end

#approved?(name, version = nil) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
28
29
30
31
32
33
# File 'lib/license_finder/decisions.rb', line 25

def approved?(name, version = nil)
  if !@approvals.key?(name)
    nil
  elsif !version.nil?
    @approvals.key?(name) && @approvals[name][:safe_versions].empty? || @approvals[name][:safe_versions].include?(version)
  else
    @approvals.key?(name)
  end
end

#blacklist(lic, txn = {}) ⇒ Object



124
125
126
127
128
# File 'lib/license_finder/decisions.rb', line 124

def blacklist(lic, txn = {})
  @decisions << [:blacklist, lic, txn]
  @blacklisted << License.find_by_name(lic)
  self
end

#blacklisted?(lic) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/license_finder/decisions.rb', line 39

def blacklisted?(lic)
  @blacklisted.include?(lic)
end

#heed(name, txn = {}) ⇒ Object



142
143
144
145
146
# File 'lib/license_finder/decisions.rb', line 142

def heed(name, txn = {})
  @decisions << [:heed, name, txn]
  @ignored.delete(name)
  self
end

#heed_group(name, txn = {}) ⇒ Object



154
155
156
157
158
# File 'lib/license_finder/decisions.rb', line 154

def heed_group(name, txn = {})
  @decisions << [:heed_group, name, txn]
  @ignored_groups.delete(name)
  self
end

#ignore(name, txn = {}) ⇒ Object



136
137
138
139
140
# File 'lib/license_finder/decisions.rb', line 136

def ignore(name, txn = {})
  @decisions << [:ignore, name, txn]
  @ignored << name
  self
end

#ignore_group(name, txn = {}) ⇒ Object



148
149
150
151
152
# File 'lib/license_finder/decisions.rb', line 148

def ignore_group(name, txn = {})
  @decisions << [:ignore_group, name, txn]
  @ignored_groups << name
  self
end

#ignored?(name) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/license_finder/decisions.rb', line 43

def ignored?(name)
  @ignored.include?(name)
end

#ignored_group?(name) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/license_finder/decisions.rb', line 47

def ignored_group?(name)
  @ignored_groups.include?(name)
end

#license(name, lic, txn = {}) ⇒ Object



84
85
86
87
88
# File 'lib/license_finder/decisions.rb', line 84

def license(name, lic, txn = {})
  @decisions << [:license, name, lic, txn]
  @licenses[name] << License.find_by_name(lic)
  self
end

#licenses_of(name) ⇒ Object



11
12
13
# File 'lib/license_finder/decisions.rb', line 11

def licenses_of(name)
  @licenses[name]
end

#name_project(name, txn = {}) ⇒ Object



160
161
162
163
164
# File 'lib/license_finder/decisions.rb', line 160

def name_project(name, txn = {})
  @decisions << [:name_project, name, txn]
  @project_name = name
  self
end

#persistObject



195
196
197
# File 'lib/license_finder/decisions.rb', line 195

def persist
  YAML.dump(@decisions)
end

#remove_package(name, txn = {}) ⇒ Object



78
79
80
81
82
# File 'lib/license_finder/decisions.rb', line 78

def remove_package(name, txn = {})
  @decisions << [:remove_package, name, txn]
  @packages.delete(ManualPackage.new(name))
  self
end

#save!(file) ⇒ Object



180
181
182
# File 'lib/license_finder/decisions.rb', line 180

def save!(file)
  write!(persist, file)
end

#unapprove(name, txn = {}) ⇒ Object



106
107
108
109
110
# File 'lib/license_finder/decisions.rb', line 106

def unapprove(name, txn = {})
  @decisions << [:unapprove, name, txn]
  @approvals.delete(name)
  self
end

#unblacklist(lic, txn = {}) ⇒ Object



130
131
132
133
134
# File 'lib/license_finder/decisions.rb', line 130

def unblacklist(lic, txn = {})
  @decisions << [:unblacklist, lic, txn]
  @blacklisted.delete(License.find_by_name(lic))
  self
end

#unlicense(name, lic, txn = {}) ⇒ Object



90
91
92
93
94
# File 'lib/license_finder/decisions.rb', line 90

def unlicense(name, lic, txn = {})
  @decisions << [:unlicense, name, lic, txn]
  @licenses[name].delete(License.find_by_name(lic))
  self
end

#unname_project(txn = {}) ⇒ Object



166
167
168
169
170
# File 'lib/license_finder/decisions.rb', line 166

def unname_project(txn = {})
  @decisions << [:unname_project, txn]
  @project_name = nil
  self
end

#unwhitelist(lic, txn = {}) ⇒ Object



118
119
120
121
122
# File 'lib/license_finder/decisions.rb', line 118

def unwhitelist(lic, txn = {})
  @decisions << [:unwhitelist, lic, txn]
  @whitelisted.delete(License.find_by_name(lic))
  self
end

#whitelist(lic, txn = {}) ⇒ Object



112
113
114
115
116
# File 'lib/license_finder/decisions.rb', line 112

def whitelist(lic, txn = {})
  @decisions << [:whitelist, lic, txn]
  @whitelisted << License.find_by_name(lic)
  self
end

#whitelisted?(lic) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/license_finder/decisions.rb', line 35

def whitelisted?(lic)
  @whitelisted.include?(lic)
end

#write!(value, file) ⇒ Object



203
204
205
206
207
208
# File 'lib/license_finder/decisions.rb', line 203

def write!(value, file)
  file.dirname.mkpath
  file.open('w+') do |f|
    f.print value
  end
end