From d6625435c1fcf226df528f36079b58790775ca95 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 16:25:11 +0900 Subject: [PATCH 01/11] require 'bundler/setup'. * Fix LoadError of `json-schema` --- lib/generators/tasks/generate.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index e094b70..d9da1cc 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -1,3 +1,4 @@ +require 'bundler/setup' require 'json-schema' require 'erubis' From a22db7de689c72e554caaa04eb89968e17bbc2eb Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 16:01:27 +0900 Subject: [PATCH 02/11] Receive arguments on `api:update`. --- lib/generators/tasks/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index d9da1cc..428c30a 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -4,7 +4,7 @@ namespace :api do desc "update" - task :update do + task :update, [:api_name] do |task, args| Dir.chdir root sh "git submodule update --init --recursive" sh "git submodule foreach git pull origin master" From a79d550629ed6be39ad737c7fed4cab9fe93fe29 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 16:07:07 +0900 Subject: [PATCH 03/11] Receive argument `api:generate` from `api:update`. --- lib/generators/tasks/generate.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index 428c30a..090ca82 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -8,7 +8,7 @@ Dir.chdir root sh "git submodule update --init --recursive" sh "git submodule foreach git pull origin master" - Rake::Task["api:generate"].execute + Rake::Task["api:generate"].execute(args) sh "git add lib/slack/endpoint.rb" sh "git add lib/slack/endpoint/" sh "git add slack-api-docs" @@ -16,7 +16,7 @@ end desc "Generate" - task :generate do + task :generate, [:api_name] do |task, args| jsons = File.expand_path 'slack-api-docs/methods/*.json', root schema_path = File.expand_path "lib/generators/schema.json", root schema = JSON.parse(File.read(schema_path)) From 7d200ca0a4cbd3e96dba4a08edd5095032c548f8 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 17:11:48 +0900 Subject: [PATCH 04/11] Receive argument `generate_methods` from `api:generate` --- lib/generators/tasks/generate.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index 090ca82..d473abb 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -34,7 +34,7 @@ end - generate_methods(data) + generate_methods(data, args) generate_endpoint(data) end @@ -56,7 +56,7 @@ def generate_endpoint(data) File.write outpath, templete.result(files: data.keys) end - def generate_methods(data) + def generate_methods(data, opts) templete_path = File.expand_path 'lib/generators/templates/method.rb.erb', root templete = Erubis::Eruby.new(File.read(templete_path)) From c7d6ce0e6ff6a3d5e5a71d9ea91d2011ac26a928 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 17:23:21 +0900 Subject: [PATCH 05/11] Delete endpoints file just before updates. * In order to update api of minimum required. --- lib/generators/tasks/generate.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index d473abb..0b89b1d 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -61,12 +61,11 @@ def generate_methods(data, opts) templete = Erubis::Eruby.new(File.read(templete_path)) outdir = File.expand_path "lib/slack/endpoint", root - FileUtils.rm_rf outdir - FileUtils.mkdir outdir data.each_with_index do |(group, names), index| printf "%2d/%2d %10s %s\n", index, data.size, group, names.keys outpath = File.expand_path "#{group}.rb", outdir + File.delete(outpath) if File.exist?(outpath) File.write outpath, templete.result(group: group, names: names) end end From 0def78677442627c5fd28542e79de6e0d12cd2ca Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 17:41:14 +0900 Subject: [PATCH 06/11] If specifies api_name, only updates the api. --- lib/generators/tasks/generate.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index 0b89b1d..86d8de9 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -62,6 +62,8 @@ def generate_methods(data, opts) outdir = File.expand_path "lib/slack/endpoint", root data.each_with_index do |(group, names), index| + next if opts[:api_name] && opts[:api_name] != group + printf "%2d/%2d %10s %s\n", index, data.size, group, names.keys outpath = File.expand_path "#{group}.rb", outdir From ec4dc9bdab7b89e32b6720d69cbad26a539f1629 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 17:49:40 +0900 Subject: [PATCH 07/11] Receive arguments `generate_endoint` from `api:generate`. --- lib/generators/tasks/generate.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index 86d8de9..b96a965 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -35,7 +35,7 @@ end generate_methods(data, args) - generate_endpoint(data) + generate_endpoint(data, args) end desc "Cleanup" @@ -47,7 +47,7 @@ FileUtils.rm_rf outpath end - def generate_endpoint(data) + def generate_endpoint(data, opts) templete_path = File.expand_path 'lib/generators/templates/endpoint.rb.erb', root templete = Erubis::Eruby.new(File.read(templete_path)) From bbe94284a22240266649448906cff2aefa1ec07e Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 17:59:18 +0900 Subject: [PATCH 08/11] If api_name specifies, only updates endoint.rb the api. --- lib/generators/tasks/generate.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index b96a965..4ddbfbf 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -52,8 +52,18 @@ def generate_endpoint(data, opts) templete = Erubis::Eruby.new(File.read(templete_path)) outpath = File.expand_path "lib/slack/endpoint.rb", root - FileUtils.rm_rf outpath - File.write outpath, templete.result(files: data.keys) + included_modules = File.read(outpath).scan(/include (.+)/).flatten.map(&:downcase) + + if opts[:api_name] + if ! included_modules.include?(opts[:api_name]) + included_modules << opts[:api_name] + FileUtils.rm_rf outpath + File.write outpath, templete.result(files: included_modules.sort) + end + else + FileUtils.rm_rf outpath + File.write outpath, templete.result(files: data.keys) + end end def generate_methods(data, opts) From 5d4993ad4e2d051e49688730b56d563e3d8bbaf8 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 18:10:01 +0900 Subject: [PATCH 09/11] Specifies invalid api name, create no diffs. --- lib/generators/tasks/generate.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index 4ddbfbf..cb48659 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -55,7 +55,8 @@ def generate_endpoint(data, opts) included_modules = File.read(outpath).scan(/include (.+)/).flatten.map(&:downcase) if opts[:api_name] - if ! included_modules.include?(opts[:api_name]) + if data.keys.include?(opts[:api_name]) && \ + !included_modules.include?(opts[:api_name]) included_modules << opts[:api_name] FileUtils.rm_rf outpath File.write outpath, templete.result(files: included_modules.sort) From 6386764c490c63ec55b8cab11385860bf27a88f4 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 18:23:46 +0900 Subject: [PATCH 10/11] Remove dirty whitespace. --- lib/generators/tasks/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index cb48659..feae5eb 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -29,7 +29,7 @@ parsed = JSON.parse(File.read(path)) JSON::Validator.validate(schema, parsed, :insert_defaults => true) - + result[prefix][name] = parsed end From 3c23f6655c955768f56f0fb2f55b7c0e978afa30 Mon Sep 17 00:00:00 2001 From: mgi166 Date: Sun, 8 Nov 2015 18:29:07 +0900 Subject: [PATCH 11/11] I like method calls. --- lib/generators/tasks/generate.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/generators/tasks/generate.rb b/lib/generators/tasks/generate.rb index feae5eb..b71e307 100644 --- a/lib/generators/tasks/generate.rb +++ b/lib/generators/tasks/generate.rb @@ -54,10 +54,10 @@ def generate_endpoint(data, opts) outpath = File.expand_path "lib/slack/endpoint.rb", root included_modules = File.read(outpath).scan(/include (.+)/).flatten.map(&:downcase) - if opts[:api_name] - if data.keys.include?(opts[:api_name]) && \ - !included_modules.include?(opts[:api_name]) - included_modules << opts[:api_name] + if opts.api_name + if data.keys.include?(opts.api_name) && \ + !included_modules.include?(opts.api_name) + included_modules << opts.api_name FileUtils.rm_rf outpath File.write outpath, templete.result(files: included_modules.sort) end @@ -73,7 +73,7 @@ def generate_methods(data, opts) outdir = File.expand_path "lib/slack/endpoint", root data.each_with_index do |(group, names), index| - next if opts[:api_name] && opts[:api_name] != group + next if opts.api_name && opts.api_name != group printf "%2d/%2d %10s %s\n", index, data.size, group, names.keys