| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package local | 5 package local |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "crypto/sha1" | 8 "crypto/sha1" |
| 9 "encoding/base64" | 9 "encoding/base64" |
| 10 "fmt" | 10 "fmt" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 func (d errDeployer) DeployInstance(PackageInstance) (common.Pin, error) { ret
urn common.Pin{}, d.err } | 98 func (d errDeployer) DeployInstance(PackageInstance) (common.Pin, error) { ret
urn common.Pin{}, d.err } |
| 99 func (d errDeployer) CheckDeployed(packageName string) (common.Pin, error) { ret
urn common.Pin{}, d.err } | 99 func (d errDeployer) CheckDeployed(packageName string) (common.Pin, error) { ret
urn common.Pin{}, d.err } |
| 100 func (d errDeployer) FindDeployed() (out []common.Pin, err error) { ret
urn nil, d.err } | 100 func (d errDeployer) FindDeployed() (out []common.Pin, err error) { ret
urn nil, d.err } |
| 101 func (d errDeployer) RemoveDeployed(packageName string) error { ret
urn d.err } | 101 func (d errDeployer) RemoveDeployed(packageName string) error { ret
urn d.err } |
| 102 func (d errDeployer) TempFile(prefix string) (*os.File, error) { ret
urn nil, d.err } | 102 func (d errDeployer) TempFile(prefix string) (*os.File, error) { ret
urn nil, d.err } |
| 103 | 103 |
| 104 //////////////////////////////////////////////////////////////////////////////// | 104 //////////////////////////////////////////////////////////////////////////////// |
| 105 // Real deployer implementation. | 105 // Real deployer implementation. |
| 106 | 106 |
| 107 // packagesDir is a subdirectory of site root to extract packages to. | 107 // packagesDir is a subdirectory of site root to extract packages to. |
| 108 const packagesDir = siteServiceDir + "/pkgs" | 108 const packagesDir = SiteServiceDir + "/pkgs" |
| 109 | 109 |
| 110 // currentSymlink is a name of a symlink that points to latest deployed version. | 110 // currentSymlink is a name of a symlink that points to latest deployed version. |
| 111 // Used on Linux and Mac. | 111 // Used on Linux and Mac. |
| 112 const currentSymlink = "_current" | 112 const currentSymlink = "_current" |
| 113 | 113 |
| 114 // currentTxt is a name of a text file with instance ID of latest deployed | 114 // currentTxt is a name of a text file with instance ID of latest deployed |
| 115 // version. Used on Windows. | 115 // version. Used on Windows. |
| 116 const currentTxt = "_current.txt" | 116 const currentTxt = "_current.txt" |
| 117 | 117 |
| 118 // deployerImpl implements Deployer interface. | 118 // deployerImpl implements Deployer interface. |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 // will nuke everything (even if it's half broken). | 299 // will nuke everything (even if it's half broken). |
| 300 if err != nil { | 300 if err != nil { |
| 301 d.logger.Warningf("Package %s is in a broken state: %s", package
Name, err) | 301 d.logger.Warningf("Package %s is in a broken state: %s", package
Name, err) |
| 302 } else { | 302 } else { |
| 303 d.removeFromSiteRoot(manifest.Files) | 303 d.removeFromSiteRoot(manifest.Files) |
| 304 } | 304 } |
| 305 return d.fs.EnsureDirectoryGone(pkgPath) | 305 return d.fs.EnsureDirectoryGone(pkgPath) |
| 306 } | 306 } |
| 307 | 307 |
| 308 func (d *deployerImpl) TempFile(prefix string) (*os.File, error) { | 308 func (d *deployerImpl) TempFile(prefix string) (*os.File, error) { |
| 309 » dir, err := d.fs.EnsureDirectory(filepath.Join(d.fs.Root(), siteServiceD
ir, "tmp")) | 309 » dir, err := d.fs.EnsureDirectory(filepath.Join(d.fs.Root(), SiteServiceD
ir, "tmp")) |
| 310 if err != nil { | 310 if err != nil { |
| 311 return nil, err | 311 return nil, err |
| 312 } | 312 } |
| 313 return ioutil.TempFile(dir, prefix) | 313 return ioutil.TempFile(dir, prefix) |
| 314 } | 314 } |
| 315 | 315 |
| 316 //////////////////////////////////////////////////////////////////////////////// | 316 //////////////////////////////////////////////////////////////////////////////// |
| 317 // Utility methods. | 317 // Utility methods. |
| 318 | 318 |
| 319 // packagePath returns a path to a package directory in .cipd/pkgs/. | 319 // packagePath returns a path to a package directory in .cipd/pkgs/. |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 func scanPackageDir(dir string, l logging.Logger) ([]FileInfo, error) { | 511 func scanPackageDir(dir string, l logging.Logger) ([]FileInfo, error) { |
| 512 out := []FileInfo{} | 512 out := []FileInfo{} |
| 513 err := filepath.Walk(dir, func(path string, info os.FileInfo, err error)
error { | 513 err := filepath.Walk(dir, func(path string, info os.FileInfo, err error)
error { |
| 514 if err != nil { | 514 if err != nil { |
| 515 return err | 515 return err |
| 516 } | 516 } |
| 517 rel, err := filepath.Rel(dir, path) | 517 rel, err := filepath.Rel(dir, path) |
| 518 if err != nil { | 518 if err != nil { |
| 519 return err | 519 return err |
| 520 } | 520 } |
| 521 » » if rel == packageServiceDir || rel == siteServiceDir { | 521 » » if rel == packageServiceDir || rel == SiteServiceDir { |
| 522 return filepath.SkipDir | 522 return filepath.SkipDir |
| 523 } | 523 } |
| 524 if info.Mode().IsRegular() || info.Mode()&os.ModeSymlink != 0 { | 524 if info.Mode().IsRegular() || info.Mode()&os.ModeSymlink != 0 { |
| 525 symlink := "" | 525 symlink := "" |
| 526 ok := true | 526 ok := true |
| 527 if info.Mode()&os.ModeSymlink != 0 { | 527 if info.Mode()&os.ModeSymlink != 0 { |
| 528 symlink, err = os.Readlink(path) | 528 symlink, err = os.Readlink(path) |
| 529 if err != nil { | 529 if err != nil { |
| 530 l.Warningf("Can't readlink %q, skipping:
%s", path, err) | 530 l.Warningf("Can't readlink %q, skipping:
%s", path, err) |
| 531 ok = false | 531 ok = false |
| 532 } | 532 } |
| 533 } | 533 } |
| 534 if ok { | 534 if ok { |
| 535 out = append(out, FileInfo{ | 535 out = append(out, FileInfo{ |
| 536 Name: filepath.ToSlash(rel), | 536 Name: filepath.ToSlash(rel), |
| 537 Size: uint64(info.Size()), | 537 Size: uint64(info.Size()), |
| 538 Executable: (info.Mode().Perm() & 0111)
!= 0, | 538 Executable: (info.Mode().Perm() & 0111)
!= 0, |
| 539 Symlink: symlink, | 539 Symlink: symlink, |
| 540 }) | 540 }) |
| 541 } | 541 } |
| 542 } | 542 } |
| 543 return nil | 543 return nil |
| 544 }) | 544 }) |
| 545 return out, err | 545 return out, err |
| 546 } | 546 } |
| OLD | NEW |