github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/agent/tools/diskmanager.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package tools
     5  
     6  import (
     7  	"io"
     8  
     9  	"github.com/juju/version"
    10  
    11  	"github.com/juju/juju/tools"
    12  )
    13  
    14  // DiskManager keeps track of a collections of Juju agent tools in a directory
    15  // structure on disk.
    16  type DiskManager struct {
    17  	dataDir string
    18  }
    19  
    20  // NewDiskManager returns a DiskManager handling a given directory.
    21  // *DiskManager conforms to the ToolsManager interface
    22  func NewDiskManager(dataDir string) *DiskManager {
    23  	return &DiskManager{dataDir: dataDir}
    24  }
    25  
    26  func (d *DiskManager) ReadTools(vers version.Binary) (*tools.Tools, error) {
    27  	return ReadTools(d.dataDir, vers)
    28  }
    29  
    30  func (d *DiskManager) UnpackTools(tools *tools.Tools, r io.Reader) error {
    31  	return UnpackTools(d.dataDir, tools, r)
    32  }
    33  
    34  func (d *DiskManager) SharedToolsDir(vers version.Binary) string {
    35  	return SharedToolsDir(d.dataDir, vers)
    36  }