File tree Expand file tree Collapse file tree 4 files changed +66
-17
lines changed
Expand file tree Collapse file tree 4 files changed +66
-17
lines changed Original file line number Diff line number Diff line change 1+ require_relative 'lib/slack_api/events_generator'
12require_relative 'lib/slack_api/spec_validator'
23
34namespace :api do
@@ -11,5 +12,11 @@ namespace :api do
1112 abort "Invalid file format: #{ file } " unless validator . valid? ( file )
1213 end
1314 end
15+
16+ desc 'Update events.'
17+ task :update do
18+ # Rake::Task['api:clean_files'].invoke('events')
19+ SlackApi ::EventsGenerator . new . generate!
20+ end
1421 end
1522end
Original file line number Diff line number Diff line change 1+ module SlackApi
2+ class EventsGenerator
3+ def downloader
4+ @downloader ||= SlackApi ::Docs ::Downloader . new
5+ end
6+
7+ def generate!
8+ events = JSON . load_file ( downloader . events_downloader . events_path )
9+
10+ events . each do |data |
11+ event_data = {
12+ 'name' => data [ 'name' ] ,
13+ 'desc' => "#{ data [ 'description' ] } ." ,
14+ 'required_scope' => massage_scope ( data [ 'APIs' ] . first )
15+ }
16+ process_event ( event_data )
17+ end
18+
19+ existing_events = Dir . glob ( 'events/**/*.json' ) . grep_v ( %r{/_patches\b } )
20+ updated_events = events . map { |event | "events/#{ event [ 'name' ] } .json" }
21+ ( existing_events - updated_events ) . each do |removed_event |
22+ puts "(delete) #{ removed_event } "
23+ File . delete ( removed_event )
24+ end
25+ end
26+
27+ private
28+
29+ def massage_scope ( scope )
30+ case scope
31+ when 'Events' then 'RTM'
32+ else scope
33+ end
34+ end
35+
36+ def process_event ( data )
37+ filename = "events/#{ data [ 'name' ] } .json"
38+ puts filename
39+ existing_event_data = File . exist? ( filename ) ? JSON . load_file ( filename ) : { }
40+ all_data = existing_event_data . merge ( data )
41+ File . write ( filename , JSON . pretty_generate ( all_data ) )
42+ end
43+ end
44+ end
Original file line number Diff line number Diff line change 1+ require_relative 'lib/slack_api/methods_generator'
12require_relative 'lib/slack_api/spec_validator'
23
34namespace :api do
@@ -12,4 +13,11 @@ namespace :api do
1213 end
1314 end
1415 end
16+
17+ desc 'Update methods and events.'
18+ task :update do
19+ Rake ::Task [ 'api:clean_files' ] . invoke ( 'methods' )
20+ Rake ::Task [ 'api:clean_files' ] . invoke ( 'groups' )
21+ SlackApi ::MethodsGenerator . new . generate!
22+ end
1523end
Original file line number Diff line number Diff line change 1- require_relative 'lib/slack_api/methods_generator'
2-
31namespace :api do
4- namespace :methods do
5- desc 'Update methods.'
6- task :update do
7- Rake ::Task [ 'api:methods:clean_files' ] . invoke ( 'methods' )
8- Rake ::Task [ 'api:methods:clean_files' ] . invoke ( 'groups' )
9- SlackApi ::MethodsGenerator . new . generate!
10- end
11-
12- desc 'Delete all generated files except undocumented ones.'
13- task :clean_files , :dirs do |_t , args |
14- raise 'Missing :dirs' unless args [ :dirs ]
2+ desc 'Delete all generated files except undocumented ones.'
3+ task :clean_files , :dirs do |_t , args |
4+ raise 'Missing :dirs' unless args [ :dirs ]
155
16- # keep _undocumented and _patches
17- files = Dir [ "./{#{ Array ( args [ :dirs ] ) . join ( ',' ) } }/*" ] . grep_v ( %r{/_\w *\b } )
18- FileUtils . rm_rf files
19- end
6+ # keep _undocumented and _patches
7+ files = Dir [ "./{#{ Array ( args [ :dirs ] ) . join ( ',' ) } }/*" ] . grep_v ( %r{/_\w *\b } )
8+ FileUtils . rm_rf files
209 end
2110
2211 task :update do
2312 Rake ::Task [ 'api:methods:update' ] . invoke
13+ Rake ::Task [ 'api:events:update' ] . invoke
2414 end
2515end
You can’t perform that action at this time.
0 commit comments