This repository has been archived by the owner on Jun 1, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 202
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.
sha(dir: Dir.pwd, ctx: Context.new)
will return the current sha of the cli repo
-
dir
- the directory of the git repo. This defaults to the cli repo -
ctx
- the current running context of your command
-
sha_string
- string of the sha of the most recent commit to the repo
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(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.
-
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.
-
sha_string
- string of the sha of the most recent commit to the repo
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(ctx)
will fetch the repos list of branches.
-
ctx
- the current running context of your command, defaults to a new context.
-
branches
- [String] an array of strings that are branch names
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(ctx)
will initialize a new repo in the current directory. This will output if it
was successful or not.
-
ctx
- the current running context of your command, defaults to a new context.
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