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.



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/license_finder/decisions.rb', line 65

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

Instance Attribute Details

#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

#permittedObject (readonly)

READ



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

def permitted
  @permitted
end

#project_nameObject (readonly)

READ



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

def project_name
  @project_name
end

#restrictedObject (readonly)

READ



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

def restricted
  @restricted
end

Class Method Details

.fetch_saved(file) ⇒ Object

PERSIST



187
188
189
# File 'lib/license_finder/decisions.rb', line 187

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

.read!(file) ⇒ Object



210
211
212
# File 'lib/license_finder/decisions.rb', line 210

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

.restore(persisted) ⇒ Object



195
196
197
198
199
200
201
202
203
204
# File 'lib/license_finder/decisions.rb', line 195

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



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

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



19
20
21
22
23
24
25
26
27
# File 'lib/license_finder/decisions.rb', line 19

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



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

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)


29
30
31
32
33
34
35
36
37
# File 'lib/license_finder/decisions.rb', line 29

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

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



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

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

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



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

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

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



101
102
103
104
105
# File 'lib/license_finder/decisions.rb', line 101

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

#homepage_of(name) ⇒ Object



15
16
17
# File 'lib/license_finder/decisions.rb', line 15

def homepage_of(name)
  @homepages[name]
end

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



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

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

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



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

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

#ignored?(name) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#ignored_group?(name) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/license_finder/decisions.rb', line 51

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

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



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

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



171
172
173
174
175
# File 'lib/license_finder/decisions.rb', line 171

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

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



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

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

#permitted?(lic) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#persistObject



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

def persist
  YAML.dump(@decisions)
end

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



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

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

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



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

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

#restricted?(lic) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#save!(file) ⇒ Object



191
192
193
# File 'lib/license_finder/decisions.rb', line 191

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

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



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

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

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



95
96
97
98
99
# File 'lib/license_finder/decisions.rb', line 95

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

#unname_project(txn = {}) ⇒ Object



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

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

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



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

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

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



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

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

#write!(value, file) ⇒ Object



214
215
216
217
218
219
# File 'lib/license_finder/decisions.rb', line 214

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