about_yml 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: a3434a081c8ba183825647058a87aa9670f1f446
4
- data.tar.gz: d48fc5b2f4d6b04272231be66f8306abbd66fa6c
3
+ metadata.gz: 5bed41d12e9955fe24050b2408d21b9eac408af4
4
+ data.tar.gz: fc02acb545c06d36a03f96d144506ae475779b78
5
5
  SHA512:
6
- metadata.gz: c6629fe23082244cae129a1700ee8faf886cf22ad6858c3f5fb0556577cf224ac99203cd03dc2b522f98b76c4afa776db209dd8a39d33d6a111f22c8912bb00c
7
- data.tar.gz: f1e1ca7bdca399056a1f07716e35726be7000994968544d2d9eea20bfa08384ef3facf1dd7c3ad2d65dba474f05d309e776eecfef97e13810a0ff56524559372
6
+ metadata.gz: 239b7860d4051f4c01bc46885f3f3a9621252d925c8b9be3044defc3655b9e0e68504f7731706a5f828c05de148d29fd12ca465aeee203a5a9b035dce5e46b19
7
+ data.tar.gz: 4db01b2225d983f7425ec7e6c8526b50affc6fc0d53257eeb4b1fc4649ce1fb40258634cfa491d39cc3c201d0833a222a8ade9095369d4d5da73d97a1d7c75ac
@@ -25,7 +25,7 @@ module AboutYml
25
25
  'public' => {},
26
26
  'private' => {},
27
27
  'missing' => [],
28
- 'errors' => [],
28
+ 'errors' => {},
29
29
  }
30
30
  repos.each { |repo| collect_repository_data repo, client, result }
31
31
  result
@@ -39,7 +39,7 @@ module AboutYml
39
39
  def self.write_error(err, repo, result)
40
40
  $stderr.puts('Error while parsing .about.yml for ' \
41
41
  "#{repo.full_name}:\n #{err}")
42
- result['errors'] << { repo.full_name => err.message }
42
+ result['errors'][repo.full_name] = err.message
43
43
  end
44
44
 
45
45
  def self.add_github_metadata(result, repo)
@@ -0,0 +1,77 @@
1
+ # @author Alison Rowland (alison.rowland@gsa.gov)
2
+
3
+ require_relative 'about'
4
+ require 'safe_yaml'
5
+ require 'random_data'
6
+
7
+ module AboutYml
8
+ class DataFaker
9
+ attr_reader :template_data
10
+
11
+ TYPE_MAP = {
12
+ 'string' => lambda { Random.alphanumeric },
13
+ 'boolean' => lambda { Random.boolean },
14
+ }
15
+
16
+ def initialize
17
+ @generator = AboutYml::TemplateGenerator.new
18
+ template = @generator.generate
19
+ @template_data = YAML.load template
20
+
21
+ # load up the JSON schema to fill in appropriate values
22
+ schema = AboutYml::AboutFile.schema
23
+
24
+ @template_data.collect do |k, _|
25
+ @template_data[k] = fill_data schema['properties'][k]
26
+ end
27
+ end
28
+
29
+ # populate the template with random values according to their type
30
+ # in the schema
31
+ def fill_data(props)
32
+ return unless props.key? 'type'
33
+ type = props['type']
34
+
35
+ return props['enum'].rand if props.key? 'enum'
36
+ return fill_array props if type == 'array'
37
+ return fill_object props if type == 'object'
38
+
39
+ TYPE_MAP[type].call if TYPE_MAP[type]
40
+ end
41
+
42
+ def fill_array(props)
43
+ subtype = props['items']['type']
44
+
45
+ 3.times.collect do
46
+ if TYPE_MAP[subtype]
47
+ TYPE_MAP[subtype].call
48
+ else
49
+ subprops = @generator.definition_properties props['items']['$ref']
50
+ fill_new_object subprops
51
+ end
52
+ end
53
+ end
54
+
55
+ def fill_object(props)
56
+ if props.key? 'items'
57
+ return fill_data @generator.definition_properties props['items']['$ref']
58
+ elsif props.key? 'patternProperties'
59
+ # this is hacky, but will work unless the "licenses" patternProperties
60
+ # are changed to include more than one pattern
61
+ _, v = props['patternProperties'].shift
62
+ subprops = @generator.definition_properties v['$ref']
63
+
64
+ # the patternProperties works by regex matching on the keys of the
65
+ # sub-object, # so we need to create another level of nesting with
66
+ # a random key
67
+ return { Random.alphanumeric => fill_new_object(subprops) }
68
+ end
69
+ end
70
+
71
+ def fill_new_object(props)
72
+ new_obj = {}
73
+ props.map { |k, _| new_obj[k] = fill_data props[k] }
74
+ new_obj
75
+ end
76
+ end
77
+ end
@@ -18,6 +18,10 @@ module AboutYml
18
18
  "---\n# #{schema['description']}\n#\n#{props.join "\n\n"}"
19
19
  end
20
20
 
21
+ def definition_properties(item_ref)
22
+ schema['definitions'][item_ref.split('/').last]['properties']
23
+ end
24
+
21
25
  private
22
26
 
23
27
  def generate_item(name, definition)
@@ -60,8 +64,5 @@ module AboutYml
60
64
  "\n# Items by property name pattern:#{property_descs}"
61
65
  end
62
66
 
63
- def definition_properties(item_ref)
64
- schema['definitions'][item_ref.split('/').last]['properties']
65
- end
66
67
  end
67
68
  end
@@ -1,5 +1,5 @@
1
1
  # @author Mike Bland (michael.bland@gsa.gov)
2
2
 
3
3
  module AboutYml
4
- VERSION = '0.0.5'
4
+ VERSION = '0.0.6'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: about_yml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Bland
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-06 00:00:00.000000000 Z
12
+ date: 2015-11-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: safe_yaml
@@ -161,6 +161,7 @@ files:
161
161
  - bin/github_org_descriptions
162
162
  - lib/about_yml.rb
163
163
  - lib/about_yml/about.rb
164
+ - lib/about_yml/data_faker.rb
164
165
  - lib/about_yml/schema.json
165
166
  - lib/about_yml/template_generator.rb
166
167
  - lib/about_yml/version.rb