Class: ChimeSdk::Generators::JsGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- ChimeSdk::Generators::JsGenerator
- Defined in:
- lib/generators/chime_sdk/js_generator.rb
Overview
Amazon Chime SDK single .js file generator. Bundle Amazon Chime SDK into single amazon-chime-sdk.min.js file and copy it to app/assets/javascripts directory.
Instance Method Summary collapse
-
#build_and_copy_chime_sdk_js ⇒ Object
Build amazon-chime-sdk.min.js and copy it to app/assets/javascripts directory.
Instance Method Details
#build_and_copy_chime_sdk_js ⇒ Object
Build amazon-chime-sdk.min.js and copy it to app/assets/javascripts directory
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/generators/chime_sdk/js_generator.rb', line 34 def build_and_copy_chime_sdk_js # :nocov: begin node_version = Gem::Version.new(`node -v`.delete("v")) puts "Found Node v#{node_version}" if node_version < Gem::Version.new("10") puts "Amazon Chime SDK single .js file generator requires Node 10+. Update Node before running." return end rescue StandardError => e puts "Amazon Chime SDK single .js file generator requires Node. Install Node before running." return end begin npm_version = Gem::Version.new(`npm -v`) puts "Found npm v#{npm_version}" if npm_version < Gem::Version.new("6.11") puts "Amazon Chime SDK single .js file generator requires npm 6.11+. Update npm before running." return end rescue StandardError => e puts "Amazon Chime SDK single .js file generator requires npm. Install npm before running." return end # :nocov: if version.present? begin sdk_version = Gem::Version.new(version) # https://www.npmjs.com/package/amazon-chime-sdk-js if sdk_version < Gem::Version.new("1.0.0") puts "[Abort] Specify 1.0.0 or later as amazon-chime-sdk-js version" exit else version_tag = "amazon-chime-sdk-js@#{sdk_version}" end rescue StandardError => e puts "[Abort] Wrong amazon-chime-sdk-js version was specified" exit end end system "mkdir -p tmp" puts "Cloning into 'amazon-chime-sdk-js' git repository in tmp directory ..." system "cd tmp; git clone https://github.com/aws-samples/amazon-chime-sdk.git > /dev/null 2>&1" repository_path = "tmp/amazon-chime-sdk" singlejs_path = "#{repository_path}/utils/singlejs" package_json_path = "#{singlejs_path}/package.json" puts "Finding amazon-chime-sdk-js version ..." chime_sdk_pattern = /\"amazon-chime-sdk-js\":[\s]*\"([\S]*)\"$/ buffer = File.open(package_json_path, "r") { |f| f.read() } if version_tag.present? puts " Specified \"#{sdk_version}\" as an argument" if `npm info #{version_tag} version`.present? puts " #{version_tag} was found as npm package" if buffer =~ chime_sdk_pattern buffer.gsub!(chime_sdk_pattern, "\"amazon-chime-sdk-js\": \"#{sdk_version}\"") File.open(package_json_path, "w") { |f| f.write(buffer) } puts " Replaced amazon-chime-sdk-js version into \"#{sdk_version}\" in package.json" puts " amazon-chime-sdk-js \"#{sdk_version}\" will be used" else # :nocov: puts "[Abort] amazon-chime-sdk-js was not found in package.json" exit # :nocov: end else puts "[Abort] No npm package of #{version_tag} was found. Specify different amazon-chime-sdk-js version." exit end else if buffer =~ /\"amazon-chime-sdk-js\":[\s]*\"([\S]*)\"$/ sdk_version = $1 puts " amazon-chime-sdk-js \"#{sdk_version}\" was found in package.json" puts " amazon-chime-sdk-js \"#{sdk_version}\" will be used" else # :nocov: puts " No amazon-chime-sdk-js was found in package.json" # :nocov: end end puts "Running 'npm install @rollup/plugin-commonjs' in the repository ..." system "cd #{singlejs_path}; npm install @rollup/plugin-commonjs > /dev/null 2>&1" puts "Running 'npm run bundle' in the repository ..." system "cd #{singlejs_path}; npm run bundle > /dev/null 2>&1" puts "Built Amazon Chime SDK as amazon-chime-sdk.min.js" copy_file "#{singlejs_path}/build/amazon-chime-sdk.min.js", "app/assets/javascripts/amazon-chime-sdk.min.js" copy_file "#{singlejs_path}/build/amazon-chime-sdk.min.js.map", "app/assets/javascripts/amazon-chime-sdk.min.js.map" system "rm -rf #{repository_path}" puts "Cleaned up the repository in tmp directory" puts "Completed" end |