w3c_api 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +1 -1
  3. data/README.adoc +845 -436
  4. data/lib/w3c_api/cli.rb +20 -20
  5. data/lib/w3c_api/client.rb +66 -195
  6. data/lib/w3c_api/commands/affiliation.rb +33 -33
  7. data/lib/w3c_api/commands/ecosystem.rb +47 -47
  8. data/lib/w3c_api/commands/group.rb +68 -68
  9. data/lib/w3c_api/commands/output_formatter.rb +11 -11
  10. data/lib/w3c_api/commands/participation.rb +20 -22
  11. data/lib/w3c_api/commands/series.rb +26 -26
  12. data/lib/w3c_api/commands/specification.rb +77 -52
  13. data/lib/w3c_api/commands/translation.rb +18 -18
  14. data/lib/w3c_api/commands/user.rb +60 -60
  15. data/lib/w3c_api/hal.rb +164 -0
  16. data/lib/w3c_api/models/account.rb +44 -0
  17. data/lib/w3c_api/models/affiliation.rb +54 -65
  18. data/lib/w3c_api/models/affiliation_index.rb +11 -0
  19. data/lib/w3c_api/models/call_for_translation.rb +15 -39
  20. data/lib/w3c_api/models/chair_index.rb +11 -0
  21. data/lib/w3c_api/models/charter.rb +48 -89
  22. data/lib/w3c_api/models/charter_index.rb +11 -0
  23. data/lib/w3c_api/models/connected_account.rb +21 -30
  24. data/lib/w3c_api/models/ecosystem.rb +20 -42
  25. data/lib/w3c_api/models/{ecosystems.rb → ecosystem_index.rb} +4 -10
  26. data/lib/w3c_api/models/evangelist_index.rb +11 -0
  27. data/lib/w3c_api/models/extension.rb +5 -7
  28. data/lib/w3c_api/models/group.rb +63 -142
  29. data/lib/w3c_api/models/group_index.rb +12 -0
  30. data/lib/w3c_api/models/join_emails.rb +5 -7
  31. data/lib/w3c_api/models/participant_index.rb +11 -0
  32. data/lib/w3c_api/models/participation.rb +31 -90
  33. data/lib/w3c_api/models/participation_index.rb +11 -0
  34. data/lib/w3c_api/models/photo.rb +26 -0
  35. data/lib/w3c_api/models/serie.rb +21 -51
  36. data/lib/w3c_api/models/{series.rb → serie_index.rb} +22 -13
  37. data/lib/w3c_api/models/spec_version.rb +69 -83
  38. data/lib/w3c_api/models/spec_version_index.rb +13 -0
  39. data/lib/w3c_api/models/spec_version_ref.rb +11 -13
  40. data/lib/w3c_api/models/specification.rb +54 -66
  41. data/lib/w3c_api/models/specification_index.rb +10 -0
  42. data/lib/w3c_api/models/team_contact_index.rb +11 -0
  43. data/lib/w3c_api/models/testimonial.rb +17 -0
  44. data/lib/w3c_api/models/translation.rb +33 -72
  45. data/lib/w3c_api/models/{translations.rb → translation_index.rb} +4 -12
  46. data/lib/w3c_api/models/user.rb +95 -165
  47. data/lib/w3c_api/models/user_index.rb +11 -0
  48. data/lib/w3c_api/models.rb +35 -12
  49. data/lib/w3c_api/version.rb +1 -1
  50. data/lib/w3c_api.rb +3 -2
  51. metadata +35 -19
  52. data/lib/w3c_api/models/affiliations.rb +0 -33
  53. data/lib/w3c_api/models/base.rb +0 -39
  54. data/lib/w3c_api/models/call_for_translation_ref.rb +0 -15
  55. data/lib/w3c_api/models/charters.rb +0 -17
  56. data/lib/w3c_api/models/collection_base.rb +0 -79
  57. data/lib/w3c_api/models/delegate_enumerable.rb +0 -54
  58. data/lib/w3c_api/models/groups.rb +0 -38
  59. data/lib/w3c_api/models/link.rb +0 -17
  60. data/lib/w3c_api/models/participations.rb +0 -17
  61. data/lib/w3c_api/models/series_collection.rb +0 -17
  62. data/lib/w3c_api/models/spec_versions.rb +0 -17
  63. data/lib/w3c_api/models/specifications.rb +0 -17
  64. data/lib/w3c_api/models/users.rb +0 -44
@@ -5,83 +5,83 @@ require_relative 'output_formatter'
5
5
  require_relative '../client'
6
6
 
7
7
  module W3cApi
8
- module Commands
9
- # Thor CLI command for group operations
10
- class Group < Thor
11
- include OutputFormatter
8
+ module Commands
9
+ # Thor CLI command for group operations
10
+ class Group < Thor
11
+ include OutputFormatter
12
12
 
13
- desc 'fetch [OPTIONS]', 'Fetch groups'
14
- option :id, type: :string, desc: 'Group ID'
15
- option :type, type: :string, desc: 'Group type'
16
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
17
- def fetch
18
- client = W3cApi::Client.new
13
+ desc 'fetch [OPTIONS]', 'Fetch groups'
14
+ option :id, type: :string, desc: 'Group ID'
15
+ option :type, type: :string, desc: 'Group type'
16
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
17
+ def fetch
18
+ client = W3cApi::Client.new
19
19
 
20
- groups = if options[:id]
21
- # Single group
22
- client.group(options[:id])
23
- elsif options[:type]
24
- client.groups(type: options[:type])
25
- else
26
- client.groups
27
- end
20
+ groups = if options[:id]
21
+ # Single group
22
+ client.group(options[:id])
23
+ elsif options[:type]
24
+ client.groups(type: options[:type])
25
+ else
26
+ client.groups
27
+ end
28
28
 
29
- output_results(groups, options[:format])
30
- end
29
+ output_results(groups, options[:format])
30
+ end
31
31
 
32
- desc 'users', 'Fetch users in a group'
33
- option :id, type: :numeric, required: true, desc: 'Group ID'
34
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
35
- def users
36
- client = W3cApi::Client.new
37
- users = client.group_users(options[:id])
38
- output_results(users, options[:format])
39
- end
32
+ desc 'users', 'Fetch users in a group'
33
+ option :id, type: :numeric, required: true, desc: 'Group ID'
34
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
35
+ def users
36
+ client = W3cApi::Client.new
37
+ users = client.group_users(options[:id])
38
+ output_results(users, options[:format])
39
+ end
40
40
 
41
- desc 'specifications', 'Fetch specifications produced by a group'
42
- option :id, type: :numeric, required: true, desc: 'Group ID'
43
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
44
- def specifications
45
- client = W3cApi::Client.new
46
- specifications = client.group_specifications(options[:id])
47
- output_results(specifications, options[:format])
48
- end
41
+ desc 'specifications', 'Fetch specifications produced by a group'
42
+ option :id, type: :numeric, required: true, desc: 'Group ID'
43
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
44
+ def specifications
45
+ client = W3cApi::Client.new
46
+ specifications = client.group_specifications(options[:id])
47
+ output_results(specifications, options[:format])
48
+ end
49
49
 
50
- desc 'charters', 'Fetch charters of a group'
51
- option :id, type: :numeric, required: true, desc: 'Group ID'
52
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
53
- def charters
54
- client = W3cApi::Client.new
55
- charters = client.group_charters(options[:id])
56
- output_results(charters, options[:format])
57
- end
50
+ desc 'charters', 'Fetch charters of a group'
51
+ option :id, type: :numeric, required: true, desc: 'Group ID'
52
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
53
+ def charters
54
+ client = W3cApi::Client.new
55
+ charters = client.group_charters(options[:id])
56
+ output_results(charters, options[:format])
57
+ end
58
58
 
59
- desc 'chairs', 'Fetch chairs of a group'
60
- option :id, type: :numeric, required: true, desc: 'Group ID'
61
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
62
- def chairs
63
- client = W3cApi::Client.new
64
- chairs = client.group_chairs(options[:id])
65
- output_results(chairs, options[:format])
66
- end
59
+ desc 'chairs', 'Fetch chairs of a group'
60
+ option :id, type: :numeric, required: true, desc: 'Group ID'
61
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
62
+ def chairs
63
+ client = W3cApi::Client.new
64
+ chairs = client.group_chairs(options[:id])
65
+ output_results(chairs, options[:format])
66
+ end
67
67
 
68
- desc 'team-contacts', 'Fetch team contacts of a group'
69
- option :id, type: :numeric, required: true, desc: 'Group ID'
70
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
71
- def team_contacts
72
- client = W3cApi::Client.new
73
- team_contacts = client.group_team_contacts(options[:id])
74
- output_results(team_contacts, options[:format])
75
- end
68
+ desc 'team-contacts', 'Fetch team contacts of a group'
69
+ option :id, type: :numeric, required: true, desc: 'Group ID'
70
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
71
+ def team_contacts
72
+ client = W3cApi::Client.new
73
+ team_contacts = client.group_team_contacts(options[:id])
74
+ output_results(team_contacts, options[:format])
75
+ end
76
76
 
77
- desc 'participations', 'Fetch participations in a group'
78
- option :id, type: :numeric, required: true, desc: 'Group ID'
79
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
80
- def participations
81
- client = W3cApi::Client.new
82
- participations = client.group_participations(options[:id])
83
- output_results(participations, options[:format])
84
- end
77
+ desc 'participations', 'Fetch participations in a group'
78
+ option :id, type: :numeric, required: true, desc: 'Group ID'
79
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
80
+ def participations
81
+ client = W3cApi::Client.new
82
+ participations = client.group_participations(options[:id])
83
+ output_results(participations, options[:format])
85
84
  end
86
85
  end
86
+ end
87
87
  end
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module W3cApi
4
- module Commands
5
- module OutputFormatter
6
- # Format and output results based on the specified format
7
- def output_results(results, format)
8
- case format
9
- when 'yaml'
10
- puts results.to_yaml
11
- else
12
- # Default to JSON if format is not recognized
13
- puts results.to_json
14
- end
4
+ module Commands
5
+ module OutputFormatter
6
+ # Format and output results based on the specified format
7
+ def output_results(results, format)
8
+ case format
9
+ when 'yaml'
10
+ puts results.to_yaml
11
+ else
12
+ # Default to JSON if format is not recognized
13
+ puts results.to_json
15
14
  end
16
15
  end
17
16
  end
17
+ end
18
18
  end
@@ -5,30 +5,28 @@ require_relative 'output_formatter'
5
5
  require_relative '../client'
6
6
 
7
7
  module W3cApi
8
- module Commands
9
- # Thor CLI command for participation operations
10
- class Participation < Thor
11
- include OutputFormatter
8
+ module Commands
9
+ # Thor CLI command for participation operations
10
+ class Participation < Thor
11
+ include OutputFormatter
12
12
 
13
- desc 'fetch', 'Fetch a participation by ID'
14
- option :id, type: :numeric, required: true, desc: 'Participation ID'
15
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
- def fetch
17
- client = W3cApi::Client.new
18
- participation = client.participation(options[:id])
19
- # Wrap in a collection for consistent output
20
- participations = Models::Participations.new(participations: [participation])
21
- output_results(participations, options[:format])
22
- end
13
+ desc 'fetch', 'Fetch a participation by ID'
14
+ option :id, type: :numeric, required: true, desc: 'Participation ID'
15
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
+ def fetch
17
+ client = W3cApi::Client.new
18
+ participation = client.participation(options[:id])
19
+ output_results(participation, options[:format])
20
+ end
23
21
 
24
- desc 'participants', 'Fetch participants in a participation'
25
- option :id, type: :numeric, required: true, desc: 'Participation ID'
26
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
27
- def participants
28
- client = W3cApi::Client.new
29
- participants = client.participation_participants(options[:id])
30
- output_results(participants, options[:format])
31
- end
22
+ desc 'participants', 'Fetch participants in a participation'
23
+ option :id, type: :numeric, required: true, desc: 'Participation ID'
24
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
25
+ def participants
26
+ client = W3cApi::Client.new
27
+ participants = client.participation_participants(options[:id])
28
+ output_results(participants, options[:format])
32
29
  end
33
30
  end
31
+ end
34
32
  end
@@ -5,36 +5,36 @@ require_relative 'output_formatter'
5
5
  require_relative '../client'
6
6
 
7
7
  module W3cApi
8
- module Commands
9
- # Thor CLI command for series operations
10
- class Series < Thor
11
- include OutputFormatter
8
+ module Commands
9
+ # Thor CLI command for series operations
10
+ class Series < Thor
11
+ include OutputFormatter
12
12
 
13
- desc 'fetch [OPTIONS]', 'Fetch specification series'
14
- option :shortname, type: :string, desc: 'Series shortname'
15
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
- def fetch
17
- client = W3cApi::Client.new
13
+ desc 'fetch [OPTIONS]', 'Fetch specification series'
14
+ option :shortname, type: :string, desc: 'Series shortname'
15
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
+ def fetch
17
+ client = W3cApi::Client.new
18
18
 
19
- series = if options[:shortname]
20
- # Single series
21
- client.series_by_shortname(options[:shortname])
22
- else
23
- # All series
24
- client.series
25
- end
19
+ series = if options[:shortname]
20
+ # Single series
21
+ client.series_by_shortname(options[:shortname])
22
+ else
23
+ # All series
24
+ client.series
25
+ end
26
26
 
27
- output_results(series, options[:format])
28
- end
27
+ output_results(series, options[:format])
28
+ end
29
29
 
30
- desc 'specifications', 'Fetch specifications in a series'
31
- option :shortname, type: :string, required: true, desc: 'Series shortname'
32
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
33
- def specifications
34
- client = W3cApi::Client.new
35
- specifications = client.series_specifications(options[:shortname])
36
- output_results(specifications, options[:format])
37
- end
30
+ desc 'specifications', 'Fetch specifications in a series'
31
+ option :shortname, type: :string, required: true, desc: 'Series shortname'
32
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
33
+ def specifications
34
+ client = W3cApi::Client.new
35
+ specifications = client.series_specifications(options[:shortname])
36
+ output_results(specifications, options[:format])
38
37
  end
39
38
  end
39
+ end
40
40
  end
@@ -5,64 +5,89 @@ require_relative 'output_formatter'
5
5
  require_relative '../client'
6
6
 
7
7
  module W3cApi
8
- module Commands
9
- # Thor CLI command for specification operations
10
- class Specification < Thor
11
- include OutputFormatter
8
+ module Commands
9
+ # Thor CLI command for specification operations
10
+ class Specification < Thor
11
+ include OutputFormatter
12
12
 
13
- desc 'fetch [OPTIONS]', 'Fetch specifications'
14
- option :shortname, type: :string, desc: 'Filter by shortname'
15
- option :version, type: :string, desc: 'Specific version of the specification'
16
- option :status, type: :string, desc: 'Filter by status'
17
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
18
- def fetch
19
- client = W3cApi::Client.new
13
+ desc 'fetch [OPTIONS]', 'Fetch specifications'
14
+ option :shortname, type: :string, desc: 'Filter by shortname'
15
+ option :version, type: :string, desc: 'Specific version of the specification'
16
+ option :status, type: :string, desc: 'Filter by status'
17
+ option :resolve, type: :array, desc: 'Links to resolve (e.g. version-history, latest-version, series)'
18
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
19
+ def fetch
20
+ client = W3cApi::Client.new
20
21
 
21
- specifications = if options[:shortname] && options[:version]
22
- # Single specification version
23
- client.specification_version(options[:shortname], options[:version])
24
- elsif options[:shortname]
25
- # Single specification
26
- client.specification(options[:shortname])
27
- elsif options[:status]
28
- # Specifications by status
29
- client.specifications_by_status(options[:status])
30
- else
31
- # All specifications
32
- client.specifications
33
- end
22
+ specifications = if options[:shortname] && options[:version]
23
+ # Single specification version
24
+ client.specification_version(options[:shortname], options[:version])
25
+ elsif options[:shortname]
26
+ # Single specification
27
+ client.specification(options[:shortname])
28
+ elsif options[:status]
29
+ # Specifications by status
30
+ client.specifications_by_status(options[:status])
31
+ else
32
+ # All specifications
33
+ client.specifications
34
+ end
34
35
 
35
- output_results(specifications, options[:format])
36
- end
36
+ # # Resolve links if specified
37
+ # if options[:resolve] && specifications.respond_to?(:realize_links)
38
+ # specifications.realize_links(options[:resolve], client)
39
+ # end
37
40
 
38
- desc 'versions', 'Fetch versions of a specification'
39
- option :shortname, type: :string, required: true, desc: 'Specification shortname'
40
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
41
- def versions
42
- client = W3cApi::Client.new
43
- versions = client.specification_versions(options[:shortname])
44
- output_results(versions, options[:format])
45
- end
41
+ output_results(specifications, options[:format])
42
+ end
43
+
44
+ desc 'versions', 'Fetch versions of a specification'
45
+ option :shortname, type: :string, required: true, desc: 'Specification shortname'
46
+ option :resolve, type: :array, desc: 'Links to resolve on each version'
47
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
48
+ def versions
49
+ client = W3cApi::Client.new
50
+ versions = client.specification_versions(options[:shortname])
51
+ output_results(versions, options[:format])
52
+ end
53
+
54
+ desc 'supersedes', 'Fetch specifications that this specification supersedes'
55
+ option :shortname, type: :string, required: true, desc: 'Specification shortname'
56
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
57
+ def supersedes
58
+ # We need to add client.specification_supersedes method in the client
59
+ client = W3cApi::Client.new
60
+ specifications = client.specification_supersedes(options[:shortname])
61
+ output_results(specifications, options[:format])
62
+ end
63
+
64
+ desc 'superseded-by', 'Fetch specifications that supersede this specification'
65
+ option :shortname, type: :string, required: true, desc: 'Specification shortname'
66
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
67
+ def superseded_by
68
+ # We need to add client.specification_superseded_by method in the client
69
+ client = W3cApi::Client.new
70
+ specifications = client.specification_superseded_by(options[:shortname])
71
+ output_results(specifications, options[:format])
72
+ end
46
73
 
47
- desc 'supersedes', 'Fetch specifications that this specification supersedes'
48
- option :shortname, type: :string, required: true, desc: 'Specification shortname'
49
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
50
- def supersedes
51
- # We need to add client.specification_supersedes method in the client
52
- client = W3cApi::Client.new
53
- specifications = client.specification_supersedes(options[:shortname])
54
- output_results(specifications, options[:format])
55
- end
74
+ desc 'editors', 'Fetch editors of a specification'
75
+ option :shortname, type: :string, required: true, desc: 'Specification shortname'
76
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
77
+ def editors
78
+ client = W3cApi::Client.new
79
+ editors = client.specification_editors(options[:shortname])
80
+ output_results(editors, options[:format])
81
+ end
56
82
 
57
- desc 'superseded-by', 'Fetch specifications that supersede this specification'
58
- option :shortname, type: :string, required: true, desc: 'Specification shortname'
59
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
60
- def superseded_by
61
- # We need to add client.specification_superseded_by method in the client
62
- client = W3cApi::Client.new
63
- specifications = client.specification_superseded_by(options[:shortname])
64
- output_results(specifications, options[:format])
65
- end
83
+ desc 'deliverers', 'Fetch deliverers (working groups) of a specification'
84
+ option :shortname, type: :string, required: true, desc: 'Specification shortname'
85
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
86
+ def deliverers
87
+ client = W3cApi::Client.new
88
+ deliverers = client.specification_deliverers(options[:shortname])
89
+ output_results(deliverers, options[:format])
66
90
  end
67
91
  end
92
+ end
68
93
  end
@@ -5,27 +5,27 @@ require_relative 'output_formatter'
5
5
  require_relative '../client'
6
6
 
7
7
  module W3cApi
8
- module Commands
9
- # Thor CLI command for translation operations
10
- class Translation < Thor
11
- include OutputFormatter
8
+ module Commands
9
+ # Thor CLI command for translation operations
10
+ class Translation < Thor
11
+ include OutputFormatter
12
12
 
13
- desc 'fetch [OPTIONS]', 'Fetch a translation by ID'
14
- option :id, type: :string, desc: 'Translation ID'
15
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
- def fetch
17
- client = W3cApi::Client.new
13
+ desc 'fetch [OPTIONS]', 'Fetch a translation by ID'
14
+ option :id, type: :string, desc: 'Translation ID'
15
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
+ def fetch
17
+ client = W3cApi::Client.new
18
18
 
19
- translations = if options[:id]
20
- # Single specification version
21
- client.translation(options[:id])
22
- else
23
- # All translations
24
- client.translations
25
- end
19
+ translations = if options[:id]
20
+ # Single specification version
21
+ client.translation(options[:id])
22
+ else
23
+ # All translations
24
+ client.translations
25
+ end
26
26
 
27
- output_results(translations, options[:format])
28
- end
27
+ output_results(translations, options[:format])
29
28
  end
30
29
  end
30
+ end
31
31
  end
@@ -5,73 +5,73 @@ require_relative 'output_formatter'
5
5
  require_relative '../client'
6
6
 
7
7
  module W3cApi
8
- module Commands
9
- # Thor CLI command for user operations
10
- class User < Thor
11
- include OutputFormatter
8
+ module Commands
9
+ # Thor CLI command for user operations
10
+ class User < Thor
11
+ include OutputFormatter
12
12
 
13
- desc 'fetch [OPTIONS]', 'Fetch a user by ID'
14
- option :id, type: :string, required: true, desc: 'User ID (required)'
15
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
- def fetch
17
- client = W3cApi::Client.new
18
- user = client.user(options[:id])
19
- output_results(user, options[:format])
20
- end
13
+ desc 'fetch [OPTIONS]', 'Fetch a user by ID'
14
+ option :id, type: :string, required: true, desc: 'User ID (required)'
15
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
16
+ def fetch
17
+ client = W3cApi::Client.new
18
+ user = client.user(options[:id])
19
+ output_results(user, options[:format])
20
+ end
21
21
 
22
- desc 'groups', 'Fetch groups a user is a member of'
23
- option :id, type: :string, required: true, desc: 'User ID'
24
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
25
- def groups
26
- client = W3cApi::Client.new
27
- groups = client.user_groups(options[:id])
28
- output_results(groups, options[:format])
29
- end
22
+ desc 'groups', 'Fetch groups a user is a member of'
23
+ option :id, type: :string, required: true, desc: 'User ID'
24
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
25
+ def groups
26
+ client = W3cApi::Client.new
27
+ groups = client.user_groups(options[:id])
28
+ output_results(groups, options[:format])
29
+ end
30
30
 
31
- desc 'specifications', 'Fetch specifications a user has contributed to'
32
- option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
33
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
34
- def specifications
35
- client = W3cApi::Client.new
36
- specifications = client.user_specifications(options[:id])
37
- output_results(specifications, options[:format])
38
- end
31
+ desc 'specifications', 'Fetch specifications a user has contributed to'
32
+ option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
33
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
34
+ def specifications
35
+ client = W3cApi::Client.new
36
+ specifications = client.user_specifications(options[:id])
37
+ output_results(specifications, options[:format])
38
+ end
39
39
 
40
- desc 'affiliations', 'Fetch affiliations of a user'
41
- option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
42
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
43
- def affiliations
44
- client = W3cApi::Client.new
45
- affiliations = client.user_affiliations(options[:id])
46
- output_results(affiliations, options[:format])
47
- end
40
+ desc 'affiliations', 'Fetch affiliations of a user'
41
+ option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
42
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
43
+ def affiliations
44
+ client = W3cApi::Client.new
45
+ affiliations = client.user_affiliations(options[:id])
46
+ output_results(affiliations, options[:format])
47
+ end
48
48
 
49
- desc 'participations', 'Fetch participations of a user'
50
- option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
51
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
52
- def participations
53
- client = W3cApi::Client.new
54
- participations = client.user_participations(options[:id])
55
- output_results(participations, options[:format])
56
- end
49
+ desc 'participations', 'Fetch participations of a user'
50
+ option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
51
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
52
+ def participations
53
+ client = W3cApi::Client.new
54
+ participations = client.user_participations(options[:id])
55
+ output_results(participations, options[:format])
56
+ end
57
57
 
58
- desc 'chair-of-groups', 'Fetch groups a user chairs'
59
- option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
60
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
61
- def chair_of_groups
62
- client = W3cApi::Client.new
63
- groups = client.user_chair_of_groups(options[:id])
64
- output_results(groups, options[:format])
65
- end
58
+ desc 'chair-of-groups', 'Fetch groups a user chairs'
59
+ option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
60
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
61
+ def chair_of_groups
62
+ client = W3cApi::Client.new
63
+ groups = client.user_chair_of_groups(options[:id])
64
+ output_results(groups, options[:format])
65
+ end
66
66
 
67
- desc 'team-contact-of-groups', 'Fetch groups a user is a team contact of'
68
- option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
69
- option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
70
- def team_contact_of_groups
71
- client = W3cApi::Client.new
72
- groups = client.user_team_contact_of_groups(options[:id])
73
- output_results(groups, options[:format])
74
- end
67
+ desc 'team-contact-of-groups', 'Fetch groups a user is a team contact of'
68
+ option :id, type: :string, required: true, desc: 'User ID (string or numeric)'
69
+ option :format, type: :string, default: 'yaml', enum: %w[json yaml], desc: 'Output format'
70
+ def team_contact_of_groups
71
+ client = W3cApi::Client.new
72
+ groups = client.user_team_contact_of_groups(options[:id])
73
+ output_results(groups, options[:format])
75
74
  end
76
75
  end
76
+ end
77
77
  end