Commit b664d04

mo <mo@mokhan.ca>
2018-09-24 16:30:14
create package task to generate a tarball.
1 parent 4fa88f4
bin/package
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+export RAILS_ENV=production
+export SECRET_KEY_BASE='package'
+
+rm -fr pkg
+bundle package --all
+bin/rake package:tarball
lib/tasks/package.rake
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+namespace :package do
+  desc "create a tarball"
+  task tarball: ['assets:clobber', 'assets:precompile'] do
+    require 'package'
+    Package.execute
+  end
+end
lib/package.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+class Package
+  INCLUDED_FILES = [
+    ".ruby-version",
+    "BUILD",
+    "Gemfile*",
+    "Rakefile",
+    "app/**/*",
+    "bin/*",
+    "config.ru",
+    "config/**/*",
+    "db/**/*",
+    "lib/**/*",
+    "public/**/*",
+    "public/assets/.sprockets*",
+    "vendor/cache/**/*"
+  ].freeze
+
+  EXCLUDED_FILES = [
+    "config/database.yml",
+    "db/*.sqlite3",
+    /public\/packs-test/,
+  ].freeze
+
+  def self.execute
+    require 'rake/packagetask'
+
+    build = `git rev-parse --short HEAD`.strip
+    IO.write("./BUILD", build)
+    Rake::PackageTask.new("proof", build) do |package|
+      package.need_tar_gz = true
+      package.package_files.add INCLUDED_FILES
+      package.package_files.exclude EXCLUDED_FILES
+      #package.package_files.exclude { |path| path.start_with?(*EXCLUDED_FILES) }
+    end
+    Rake::Task['repackage'].invoke
+  end
+end
.gitignore
@@ -36,3 +36,6 @@
 yarn-debug.log*
 yarn-error.log*
 package-lock.json
+vendor/cache
+pkg
+BUILD