diff options
| author | mo khan <mo.khan@gmail.com> | 2020-09-14 16:59:36 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-09-14 16:59:36 -0600 |
| commit | 853ae09d4c6d0220a3f77492065961e65f96e860 (patch) | |
| tree | 6986ed03dfa7545d483c980a31b0ce83582a2811 /lib/e2e/project.rb | |
| parent | 0dc0c0cec97cbdea04e278143e4711cfa0d3bd03 (diff) | |
chore: move classes into lib dir
Diffstat (limited to 'lib/e2e/project.rb')
| -rw-r--r-- | lib/e2e/project.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/e2e/project.rb b/lib/e2e/project.rb new file mode 100644 index 0000000..a90dfd6 --- /dev/null +++ b/lib/e2e/project.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true +require 'securerandom' + +class Project + attr_reader :path + + def initialize(path = Pathname.pwd.join('tmp').join(SecureRandom.uuid)) + FileUtils.mkdir_p(path) + @path = Pathname(path) + end + + def mount(dir:) + FileUtils.cp_r("#{dir}/.", path) + end + + def chdir + Dir.chdir path do + yield + end + end + + def clone(repo, branch: 'master') + if branch.match?(/\b[0-9a-f]{5,40}\b/) + execute({}, 'git', 'clone', '--quiet', repo, path.to_s) + chdir do + execute({}, 'git', 'checkout', branch) + end + else + execute({}, 'git', 'clone', '--quiet', '--depth=1', '--single-branch', '--branch', branch, repo, path.to_s) + end + end + + def execute(env = {}, *args) + Bundler.with_unbundled_env do + system(env, *args, exception: true) + end + end + + def cleanup + FileUtils.rm_rf(path) if path.exist? + end +end |
