Module: Kobold::Manager::Lifecycle
- Included in:
- Kobold::Manager
- Defined in:
- lib/Kobold/manager/lifecycle.rb
Overview
Dependency lifecycle: add, remove, update.
Instance Method Summary collapse
-
#add(config_path:, repo:, source:, name: nil, **options) ⇒ Object
Add a dependency to an existing .kobold config file.
-
#remove(config_path:, dependency_name:, cleanup: false) ⇒ Object
Remove a dependency from a .kobold config file.
-
#update(config_path:, dependency_name:) ⇒ Object
Update a dependency's commit SHA to the latest on its branch.
-
#update_all(config_path: Dir.pwd) ⇒ Object
Update all dependencies with a branch specified.
Instance Method Details
#add(config_path:, repo:, source:, name: nil, **options) ⇒ Object
Add a dependency to an existing .kobold config file.
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/Kobold/manager/lifecycle.rb', line 8 def add(config_path:, repo:, source:, name: nil, **) name ||= repo.split("/").last config = resolve_config(config_path) dep = build_dep_entry(repo, source, ) config.add_dependency(name, dep) Config.write(config.path, config) action = register_and_clone(repo, source) { config_path: config.path, name: name, slug: Database.slugify(repo), action: action } end |
#remove(config_path:, dependency_name:, cleanup: false) ⇒ Object
Remove a dependency from a .kobold config file.
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/Kobold/manager/lifecycle.rb', line 20 def remove(config_path:, dependency_name:, cleanup: false) config = resolve_config(config_path) dep = config.dependency(dependency_name) raise Errors::DependencyNotFound, dependency_name unless dep result = cleanup ? cleanup_dependency(dep, config) : { removed_worktree: nil, removed_symlink: false } config.remove_dependency(dependency_name) Config.write(config.path, config) result.merge(config_path: config.path, name: dependency_name) end |
#update(config_path:, dependency_name:) ⇒ Object
Update a dependency's commit SHA to the latest on its branch.
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/Kobold/manager/lifecycle.rb', line 32 def update(config_path:, dependency_name:) config = resolve_config(config_path) dep = config.dependency(dependency_name) raise Errors::DependencyNotFound, dependency_name unless dep raise Errors::ConfigError, "Dependency '#{dependency_name}' has no branch to update from" unless dep["branch"] result = perform_update(config, dependency_name, dep) Config.write(config.path, config) result.merge(config_path: config.path, name: dependency_name) end |
#update_all(config_path: Dir.pwd) ⇒ Object
Update all dependencies with a branch specified.
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/Kobold/manager/lifecycle.rb', line 44 def update_all(config_path: Dir.pwd) config = resolve_config(config_path) results = [] config.each_dependency do |name, dep| next unless dep["branch"] results << safe_update(config, name) end results end |