Skip to content
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.

class ShopifyCli::Git

Konstantin Tennhard edited this page Mar 5, 2021 · 7 revisions

ShopifyCli::Git wraps git functionality to make it easier to integrate will git.

Class Methods

sha

sha(dir: Dir.pwd, ctx: Context.new) will return the current sha of the cli repo

Parameters

  • dir - the directory of the git repo. This defaults to the cli repo
  • ctx - the current running context of your command

Returns

  • sha_string - string of the sha of the most recent commit to the repo

Example

ShopifyCli::Git.sha
see source

# File lib/shopify-cli/git.rb, line 23
def sha(dir: Dir.pwd, ctx: Context.new)
  rev_parse("HEAD", dir: dir, ctx: ctx)
end

clone

clone(repository, dest, ctx: Context.new) will make calls to git to clone a new repo into a supplied destination, it will also output progress of the cloning process.

Parameters

  • repository - a git url for git to clone the repo from
  • dest - a filepath to where the repo should be cloned to
  • ctx - the current running context of your command, defaults to a new context.

Returns

  • sha_string - string of the sha of the most recent commit to the repo

Example

ShopifyCli::Git.clone('git@github.com:shopify/test.git', 'test-app')
see source

# File lib/shopify-cli/git.rb, line 45
def clone(repository, dest, ctx: Context.new)
  if Dir.exist?(dest)
    ctx.abort(ctx.message("core.git.error.directory_exists"))
  else
    success_message = ctx.message("core.git.cloned", dest)
    CLI::UI::Frame.open(ctx.message("core.git.cloning", repository, dest), success_text: success_message) do
      clone_progress("clone", "--single-branch", repository, dest, ctx: ctx)
    end
  end
end

branches

branches(ctx) will fetch the repos list of branches.

Parameters

  • ctx - the current running context of your command, defaults to a new context.

Returns

  • branches - [String] an array of strings that are branch names

Example

branches = ShopifyCli::Git.branches(@ctx)
see source

# File lib/shopify-cli/git.rb, line 71
def branches(ctx)
  output, status = ctx.capture2e("git", "branch", "--list", "--format=%(refname:short)")
  ctx.abort(ctx.message("core.git.error.no_branches_found")) unless status.success?

  branches = if output == ""
    ["master"]
  else
    output.split("\n")
  end

  branches
end

init

init(ctx) will initialize a new repo in the current directory. This will output if it was successful or not.

Parameters

  • ctx - the current running context of your command, defaults to a new context.

Example

ShopifyCli::Git.init(@ctx)
see source

# File lib/shopify-cli/git.rb, line 96
def init(ctx)
  output, status = ctx.capture2e("git", "status")

  unless status.success?
    ctx.abort(ctx.message("core.git.error.repo_not_initiated"))
  end

  if output.include?("No commits yet")
    ctx.abort(ctx.message("core.git.error.no_commits_made"))
  end
end

Clone this wiki locally