PageRenderTime 32ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/repo/tasks/setup.rb

https://bitbucket.org/yb66/repo
Ruby | 195 lines | 155 code | 40 blank | 0 comment | 40 complexity | fe8b9d02cb04ecdc2be1fee66ba57065 MD5 | raw file
  1. require 'erb'
  2. require_relative '../environment.rb'
  3. Repo::Environment.config_dir = Pathname(".").join("config")
  4. desc "Set up files and stuff."
  5. task :setup => :"setup:config"
  6. namespace :setup do
  7. require 'repo/environment'
  8. namespace :environment do
  9. desc "Set up the database environment"
  10. task :setup do
  11. Pathname("config/initializers").mkpath
  12. Pathname("db/migrations").mkpath
  13. Pathname("db/backups").mkpath
  14. end
  15. desc "Initialize the environment"
  16. task :init do
  17. Repo::Environment.basic_environment(:site_settings)
  18. end
  19. end
  20. Template_dir = Pathname(__dir__).join("../templates")
  21. desc "Set up some config files"
  22. task :config => :"setup:environment:setup" do
  23. Rake::Task['setup:site_settings'].invoke
  24. Rake::Task['setup:secret_settings'].invoke
  25. Rake::Task['setup:puma'].invoke
  26. Rake::Task['setup:launchd'].invoke
  27. Rake::Task['setup:sequel:settings'].invoke
  28. Rake::Task['setup:sequel:convenience'].invoke
  29. Rake::Task['setup:sequel:migration'].invoke
  30. end
  31. desc "Set up site_settings file in config dir"
  32. task :site_settings do
  33. file_name = "site_settings.yml"
  34. file_path = Repo::Environment.config_dir.join(file_name)
  35. if !file_path.exist? || ENV["FORCE_REDO"]
  36. commented = {}
  37. run_local_port = (rand(1000) + 4000).to_s
  38. static_local_port = 4567.to_s
  39. project_dir = Pathname(".").realpath
  40. project_name = Pathname(".").realpath.basename
  41. short_path = %Q!/Users/iainb/.gem/ruby/#{ENV["RUBY_VERSION"]}/bin:/Users/iainb/Library/Frameworks/Ruby.framework/Versions/ruby-#{ENV["RUBY_VERSION"]}/Programs:/usr/local/git/bin:/usr/local/bin!
  42. gem_path = (ENV["GEM_PATH"].nil? || ENV["GEM_PATH"].empty?) ?
  43. %Q!/Users/iainb/.gem/ruby/#{ENV["RUBY_VERSION"]}:/Users/iainb/Library/Frameworks/Ruby.framework/Versions/ruby-#{ENV["RUBY_VERSION"]}/lib/ruby/gems/#{ENV["RUBY_VERSION"].sub /\d$/, "0"}! :
  44. ENV["GEM_PATH"]
  45. site_url = ENV["SITE_URL"]
  46. commented["site_url"] = site_url.nil? || site_url.empty?
  47. site_name = ENV["SITE_NAME"]
  48. commented["site_name"] = site_name.nil? || site_name.empty?
  49. site_name_short = ENV["SITE_NAME_SHORT"]
  50. commented["site_name_short"] = site_name_short.nil? || site_name_short.empty?
  51. puma_config = ENV["PUMA_CONFIG"] || "config/puma.dev.rb"
  52. reverse_domain = site_url ? site_url.split(".").reverse.join(".") : "uk.me.iainbarnett"
  53. staging_site_url = ENV["STAGING_SITE_URL"]
  54. commented["staging_site_url"] = staging_site_url.nil? || staging_site_url.empty?
  55. site_description = ENV["SITE_DESCRIPTION"]
  56. commented["site_description"] = site_description.nil? || site_description.empty?
  57. tracking_code = ENV["TRACKING_CODE"]
  58. commented["tracking_code"] = tracking_code.nil? || tracking_code.empty?
  59. erb = ERB.new Template_dir.join("#{file_name}.erb").read
  60. file_path.write erb.result(binding)
  61. end
  62. end
  63. desc "Set up launchd plist in launchagents"
  64. task :launchd => :"setup:environment:init" do
  65. label = %Q!#{ENV["REVERSE_DOMAIN"].downcase}.#{ENV["PROJECT_NAME"].downcase}!
  66. file_name = %Q!#{label}.plist!
  67. file_path = Pathname(ENV["HOME"]).join("Library/LaunchAgents").join(file_name)
  68. if !file_path.exist? || ENV["FORCE_REDO"]
  69. commented = {}
  70. site_name = ENV["SITE_NAME"]
  71. commented["site_name"] = site_name.nil? || site_name.empty?
  72. db_app = ENV["DB_APP"]
  73. commented["db_app"] = db_app.nil? || db_app.empty?
  74. database_url = ENV["DATABASE_URL"]
  75. commented["database_url"] = database_url.nil? || database_url.empty?
  76. erb = ERB.new Template_dir.join("launchagent.plist.erb").read
  77. file_path.write erb.result(binding)
  78. end
  79. end
  80. desc "Set up puma config file in config dir"
  81. task :puma => :"setup:environment:init" do
  82. file_name = "puma.dev.rb"
  83. file_path = Repo::Environment.config_dir.join(file_name)
  84. if !file_path.exist? || ENV["FORCE_REDO"]
  85. erb = ERB.new Template_dir.join("#{file_name}.erb").read
  86. file_path.write erb.result(binding)
  87. end
  88. end
  89. namespace :sequel do
  90. desc "Set up convenience/console settings file in db dir"
  91. task :convenience => :"setup:environment:init" do
  92. file_name = "convenience.rb"
  93. file_path = Pathname("db").join(file_name)
  94. if !file_path.exist? || ENV["FORCE_REDO"]
  95. erb = ERB.new Template_dir.join("sequel_#{file_name}.erb").read
  96. file_path.write erb.result(binding)
  97. end
  98. end
  99. desc "Set up sequel settings file in config initializer dir"
  100. task :settings => :"setup:environment:init" do
  101. file_name = "sequel.yml"
  102. file_path = Repo::Environment.config_dir.join("initializers").join(file_name)
  103. if !file_path.exist? || ENV["FORCE_REDO"]
  104. commented = {}
  105. db_app = ENV["DB_APP"] || ENV["PROJECT_NAME"].downcase
  106. commented["db_app"] = db_app.nil? || db_app.empty?
  107. database_url = ENV["DATABASE_URL"]
  108. commented["database_url"] = database_url.nil? || database_url.empty?
  109. erb = ERB.new Template_dir.join("#{file_name}.erb").read
  110. file_path.write erb.result(binding)
  111. end
  112. end
  113. desc "Set up a first migration file in db migrations dir"
  114. task :migration => :"setup:environment:init" do
  115. file_name = "001_project_name.rb"
  116. file_path = Pathname("db/migrations").join(file_name.sub "project_name", ENV["PROJECT_NAME"])
  117. if !file_path.exist? || ENV["FORCE_REDO"]
  118. erb = ERB.new Template_dir.join("#{file_name}.erb").read
  119. file_path.write erb.result(binding)
  120. end
  121. end
  122. end
  123. desc "Set up secret_settings file in config dir"
  124. task :secret_settings => :"setup:environment:init" do
  125. file_name = "secret_settings.yml"
  126. file_path = Repo::Environment.config_dir.join(file_name)
  127. if !file_path.exist? || ENV["FORCE_REDO"]
  128. commented = {}
  129. redistogo_url_port = ENV["REDISTOGO_URL_PORT"] || "6379"
  130. commented["redistogo_url_port"] = redistogo_url_port.nil? || redistogo_url_port.empty?
  131. database_user = ENV["DATABASE_USER"]
  132. commented["database_user"] = database_user.nil? || database_user.empty?
  133. database_name = ENV["DATABASE_NAME"]
  134. commented["database_name"] = database_name.nil? || database_name.empty?
  135. github_token = ENV["github_token"]
  136. commented["github_token"] = github_token.nil? || github_token.empty?
  137. bitbucket_token = ENV["BITBUCKET_TOKEN"]
  138. commented["bitbucket_token"] = bitbucket_token.nil? || bitbucket_token.empty?
  139. heroku_user = ENV["HEROKU_USER"]
  140. commented["heroku_user"] = heroku_user.nil? || heroku_user.empty?
  141. amazon_access_key = ENV["AMAZON_ACCESS_KEY"]
  142. commented["amazon_access_key"] = amazon_access_key.nil? || amazon_access_key.empty?
  143. iam_user = ENV["IAM_USER"]
  144. commented["iam_user"] = iam_user.nil? || iam_user.empty?
  145. amazon_access_key = ENV["AMAZON_ACCESS_KEY"]
  146. commented["amazon_access_key"] = amazon_access_key.nil? || amazon_access_key.empty?
  147. amazon_access_key_id = ENV["AMAZON_ACCESS_KEY_ID"]
  148. commented["amazon_access_key_id"] = amazon_access_key_id.nil? || amazon_access_key_id.empty?
  149. amazon_secret_access_key = ENV["AMAZON_SECRET_ACCESS_KEY"]
  150. commented["amazon_secret_access_key"] = amazon_secret_access_key.nil? || amazon_secret_access_key.empty?
  151. erb = ERB.new Template_dir.join("#{file_name}.erb").read
  152. file_path.write erb.result(binding)
  153. end
  154. end
  155. end