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.



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

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



7
8
9
# File 'lib/license_finder/decisions.rb', line 7

def blacklisted
  @blacklisted
end

#ignoredObject (readonly)

READ



7
8
9
# File 'lib/license_finder/decisions.rb', line 7

def ignored
  @ignored
end

#ignored_groupsObject (readonly)

READ



7
8
9
# File 'lib/license_finder/decisions.rb', line 7

def ignored_groups
  @ignored_groups
end

#packagesObject (readonly)

READ



7
8
9
# File 'lib/license_finder/decisions.rb', line 7

def packages
  @packages
end

#project_nameObject (readonly)

READ



7
8
9
# File 'lib/license_finder/decisions.rb', line 7

def project_name
  @project_name
end

#whitelistedObject (readonly)

READ



7
8
9
# File 'lib/license_finder/decisions.rb', line 7

def whitelisted
  @whitelisted
end

Class Method Details

.fetch_saved(file) ⇒ Object

PERSIST



178
179
180
# File 'lib/license_finder/decisions.rb', line 178

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

.read!(file) ⇒ Object



201
202
203
# File 'lib/license_finder/decisions.rb', line 201

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

.restore(persisted) ⇒ Object



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

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



70
71
72
73
74
# File 'lib/license_finder/decisions.rb', line 70

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



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

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

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



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

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

  versions = []
  if @approvals.has_key?(name)
    versions = @approvals[name][:safe_versions]
  end

  @approvals[name] = TXN.from_hash(txn)

  @approvals[name][:safe_versions].concat(versions)
  self
end

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

Returns:

  • (Boolean)


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

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

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



126
127
128
129
130
# File 'lib/license_finder/decisions.rb', line 126

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

#blacklisted?(lic) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/license_finder/decisions.rb', line 37

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

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



144
145
146
147
148
# File 'lib/license_finder/decisions.rb', line 144

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

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



156
157
158
159
160
# File 'lib/license_finder/decisions.rb', line 156

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

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



138
139
140
141
142
# File 'lib/license_finder/decisions.rb', line 138

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

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



150
151
152
153
154
# File 'lib/license_finder/decisions.rb', line 150

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

#ignored?(name) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/license_finder/decisions.rb', line 41

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

#ignored_group?(name) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/license_finder/decisions.rb', line 45

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

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



82
83
84
85
86
# File 'lib/license_finder/decisions.rb', line 82

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

#licenses_of(name) ⇒ Object



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

def licenses_of(name)
  @licenses[name]
end

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



162
163
164
165
166
# File 'lib/license_finder/decisions.rb', line 162

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

#persistObject



197
198
199
# File 'lib/license_finder/decisions.rb', line 197

def persist
  YAML.dump(@decisions)
end

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



76
77
78
79
80
# File 'lib/license_finder/decisions.rb', line 76

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

#save!(file) ⇒ Object



182
183
184
# File 'lib/license_finder/decisions.rb', line 182

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

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



108
109
110
111
112
# File 'lib/license_finder/decisions.rb', line 108

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

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



132
133
134
135
136
# File 'lib/license_finder/decisions.rb', line 132

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

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



88
89
90
91
92
# File 'lib/license_finder/decisions.rb', line 88

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

#unname_project(txn = {}) ⇒ Object



168
169
170
171
172
# File 'lib/license_finder/decisions.rb', line 168

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

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



120
121
122
123
124
# File 'lib/license_finder/decisions.rb', line 120

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

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



114
115
116
117
118
# File 'lib/license_finder/decisions.rb', line 114

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

#whitelisted?(lic) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/license_finder/decisions.rb', line 33

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

#write!(value, file) ⇒ Object



205
206
207
208
209
210
# File 'lib/license_finder/decisions.rb', line 205

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