108 lines
2.4 KiB
Go
108 lines
2.4 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/otiai10/copy"
|
|
)
|
|
|
|
var logger = log.New(os.Stderr, "", 0)
|
|
|
|
type chaincodeMetadata struct {
|
|
Type string `json:"type"`
|
|
}
|
|
|
|
// Connection structure is used to represent the
|
|
// connection.json file that is supplied in the
|
|
// chaincode package.
|
|
type connection struct {
|
|
Address string `json:"address"`
|
|
DialTimeout string `json:"dial_timeout"`
|
|
TLS bool `json:"tls_required"`
|
|
ClientAuth bool `json:"client_auth_required"`
|
|
RootCert string `json:"root_cert"`
|
|
ClientKey string `json:"client_key"`
|
|
ClientCert string `json:"client_cert"`
|
|
}
|
|
|
|
func main() {
|
|
logger.Println("::Release")
|
|
|
|
if err := run(); err != nil {
|
|
logger.Printf("::Error: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
logger.Printf("::Release phase completed")
|
|
|
|
}
|
|
|
|
func run() error {
|
|
if len(os.Args) < 3 {
|
|
return fmt.Errorf("incorrect number of arguments")
|
|
}
|
|
|
|
builderOutputDir, releaseDir := os.Args[1], os.Args[2]
|
|
connectionSrcFile := filepath.Join(builderOutputDir, "/connection.json")
|
|
|
|
connectionDir := filepath.Join(releaseDir, "chaincode/server/")
|
|
connectionDestFile := filepath.Join(releaseDir, "chaincode/server/connection.json")
|
|
|
|
metadataDir := filepath.Join(builderOutputDir, "META-INF/statedb")
|
|
metadataDestDir := filepath.Join(releaseDir, "statedb")
|
|
if _, err := os.Stat(metadataDir); !os.IsNotExist(err) {
|
|
if err := copy.Copy(metadataDir, metadataDestDir); err != nil {
|
|
return fmt.Errorf("failed to copy metadataDir directory folder: %s", err)
|
|
}
|
|
}
|
|
|
|
// Process and update the connections file
|
|
_, err := os.Stat(connectionSrcFile)
|
|
if err != nil {
|
|
return fmt.Errorf("connection.json not found in source folder: %s", err)
|
|
}
|
|
|
|
err = os.MkdirAll(connectionDir, 0750)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create target folder for connection.json: %s", err)
|
|
}
|
|
|
|
if err = Copy(connectionSrcFile, connectionDestFile); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
// Copy the src file to dst. Any existing file will be overwritten and will not
|
|
// copy file attributes.
|
|
func Copy(src, dst string) error {
|
|
in, err := os.Open(src)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer in.Close()
|
|
|
|
out, err := os.Create(dst)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer out.Close()
|
|
|
|
_, err = io.Copy(out, in)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return out.Close()
|
|
}
|