Class: Daytona::Git
- Inherits:
-
Object
- Object
- Daytona::Git
- Includes:
- Instrumentation
- Defined in:
- lib/daytona/git.rb
Instance Attribute Summary collapse
-
#sandbox_id ⇒ String
readonly
The Sandbox ID.
-
#toolbox_api ⇒ DaytonaToolboxApiClient::GitApi
readonly
API client for Sandbox operations.
Instance Method Summary collapse
-
#add(path, files) ⇒ void
Stages the specified files for the next commit, similar to running ‘git add’ on the command line.
-
#branches(path) ⇒ DaytonaApiClient::ListBranchResponse
Lists branches in the repository.
-
#checkout_branch(path, branch) ⇒ void
Checkout branch in the repository.
-
#clone(url:, path:, branch: nil, commit_id: nil, username: nil, password: nil) ⇒ void
Clones a Git repository into the specified path.
-
#commit(path:, message:, author:, email:, allow_empty: false) ⇒ GitCommitResponse
Creates a new commit with the staged changes.
-
#create_branch(path, name) ⇒ void
Create branch in the repository.
-
#delete_branch(path, name) ⇒ void
Delete branch in the repository.
-
#initialize(sandbox_id:, toolbox_api:, otel_state: nil) ⇒ Git
constructor
Initializes a new Git handler instance.
-
#pull(path:, username: nil, password: nil) ⇒ void
Pulls changes from the remote repository.
-
#push(path:, username: nil, password: nil) ⇒ void
Pushes all local commits on the current branch to the remote repository.
-
#status(path) ⇒ DaytonaToolboxApiClient::GitStatus
Gets the current Git repository status.
Methods included from Instrumentation
Constructor Details
#initialize(sandbox_id:, toolbox_api:, otel_state: nil) ⇒ Git
Initializes a new Git handler instance.
18 19 20 21 22 |
# File 'lib/daytona/git.rb', line 18 def initialize(sandbox_id:, toolbox_api:, otel_state: nil) @sandbox_id = sandbox_id @toolbox_api = toolbox_api @otel_state = otel_state end |
Instance Attribute Details
#sandbox_id ⇒ String (readonly)
Returns The Sandbox ID.
8 9 10 |
# File 'lib/daytona/git.rb', line 8 def sandbox_id @sandbox_id end |
#toolbox_api ⇒ DaytonaToolboxApiClient::GitApi (readonly)
Returns API client for Sandbox operations.
11 12 13 |
# File 'lib/daytona/git.rb', line 11 def toolbox_api @toolbox_api end |
Instance Method Details
#add(path, files) ⇒ void
This method returns an undefined value.
Stages the specified files for the next commit, similar to running ‘git add’ on the command line.
43 44 45 46 47 |
# File 'lib/daytona/git.rb', line 43 def add(path, files) toolbox_api.add_files(DaytonaToolboxApiClient::GitAddRequest.new(path:, files:)) rescue StandardError => e raise Sdk::Error, "Failed to add files: #{e.}" end |
#branches(path) ⇒ DaytonaApiClient::ListBranchResponse
Lists branches in the repository.
59 60 61 62 63 |
# File 'lib/daytona/git.rb', line 59 def branches(path) toolbox_api.list_branches(path) rescue StandardError => e raise Sdk::Error, "Failed to list branches: #{e.}" end |
#checkout_branch(path, branch) ⇒ void
This method returns an undefined value.
Checkout branch in the repository.
237 238 239 240 241 242 243 |
# File 'lib/daytona/git.rb', line 237 def checkout_branch(path, branch) toolbox_api.checkout_branch( DaytonaToolboxApiClient::GitCheckoutRequest.new(path:, branch:) ) rescue StandardError => e raise Sdk::Error, "Failed to checkout branch: #{e.}" end |
#clone(url:, path:, branch: nil, commit_id: nil, username: nil, password: nil) ⇒ void
This method returns an undefined value.
Clones a Git repository into the specified path. It supports cloning specific branches or commits, and can authenticate with the remote repository if credentials are provided.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/daytona/git.rb', line 103 def clone(url:, path:, branch: nil, commit_id: nil, username: nil, password: nil) # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists toolbox_api.clone_repository( DaytonaToolboxApiClient::GitCloneRequest.new( url: url, branch: branch, path: path, username: username, password: password, commit_id: commit_id ) ) rescue StandardError => e raise Sdk::Error, "Failed to clone repository: #{e.}" end |
#commit(path:, message:, author:, email:, allow_empty: false) ⇒ GitCommitResponse
Creates a new commit with the staged changes. Make sure to stage changes using the add() method before committing.
141 142 143 144 145 146 147 148 |
# File 'lib/daytona/git.rb', line 141 def commit(path:, message:, author:, email:, allow_empty: false) response = toolbox_api.commit_changes( DaytonaToolboxApiClient::GitCommitRequest.new(path:, message:, author:, email:, allow_empty:) ) GitCommitResponse.new(sha: response.hash) rescue StandardError => e raise Sdk::Error, "Failed to commit changes: #{e.}" end |
#create_branch(path, name) ⇒ void
This method returns an undefined value.
Create branch in the repository.
257 258 259 260 261 262 263 |
# File 'lib/daytona/git.rb', line 257 def create_branch(path, name) toolbox_api.create_branch( DaytonaToolboxApiClient::GitBranchRequest.new(path:, name:) ) rescue StandardError => e raise Sdk::Error, "Failed to create branch: #{e.}" end |
#delete_branch(path, name) ⇒ void
This method returns an undefined value.
Delete branch in the repository.
276 277 278 279 280 281 282 |
# File 'lib/daytona/git.rb', line 276 def delete_branch(path, name) toolbox_api.delete_branch( DaytonaToolboxApiClient::GitDeleteBranchRequest.new(path:, name:) ) rescue StandardError => e raise Sdk::Error, "Failed to delete branch: #{e.}" end |
#pull(path:, username: nil, password: nil) ⇒ void
This method returns an undefined value.
Pulls changes from the remote repository. If the remote repository requires authentication, provide username and password/token.
200 201 202 203 204 205 206 |
# File 'lib/daytona/git.rb', line 200 def pull(path:, username: nil, password: nil) toolbox_api.pull_changes( DaytonaToolboxApiClient::GitRepoRequest.new(path:, username:, password:) ) rescue StandardError => e raise Sdk::Error, "Failed to pull changes: #{e.}" end |
#push(path:, username: nil, password: nil) ⇒ void
This method returns an undefined value.
Pushes all local commits on the current branch to the remote repository. If the remote repository requires authentication, provide username and password/token.
171 172 173 174 175 176 177 |
# File 'lib/daytona/git.rb', line 171 def push(path:, username: nil, password: nil) toolbox_api.push_changes( DaytonaToolboxApiClient::GitRepoRequest.new(path:, username:, password:) ) rescue StandardError => e raise Sdk::Error, "Failed to push changes: #{e.}" end |