From 0ebaac35941b22c715602bdab65da89282472657 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Tue, 3 Mar 2015 02:43:24 -0800 Subject: [PATCH] Janitor duty v2 --- pkg/utils/helpers/execpipe.go | 64 ------------------------------ pkg/utils/helpers/execpipe_test.go | 52 ------------------------ 2 files changed, 116 deletions(-) delete mode 100644 pkg/utils/helpers/execpipe.go delete mode 100644 pkg/utils/helpers/execpipe_test.go diff --git a/pkg/utils/helpers/execpipe.go b/pkg/utils/helpers/execpipe.go deleted file mode 100644 index 00d4da89c..000000000 --- a/pkg/utils/helpers/execpipe.go +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Mini Object Storage, (C) 2014 Minio, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package helpers - -import ( - "bytes" - "errors" - "io" - "os/exec" -) - -// A simple ExecPipe() pipes exec.Cmd together - somewhat similar to how bash pipes "|" behave. -// Each command's standard output is connected to the standard input of the next command -// and the output of the final command is returned -// -// TODO: handle errors properly -func ExecPipe(cmds ...*exec.Cmd) (pipeLineOutput io.Reader, pipeLineError error) { - // Require at least one command - if len(cmds) < 1 { - return nil, errors.New("Invalid argument") - } - - // Collect the output from the command(s) - var output bytes.Buffer - - lastIndex := len(cmds) - 1 - for i, cmd := range cmds[:lastIndex] { - cmds[i+1].Stdin, _ = cmd.StdoutPipe() - } - - // Final ---> output buffer - cmds[lastIndex].Stdout = &output - - // Start each command - for _, cmd := range cmds { - if err := cmd.Start(); err != nil { - return &output, err - } - } - - // We should Wait() for each command to complete - for _, cmd := range cmds { - if err := cmd.Wait(); err != nil { - return &output, err - } - } - - // Return the output - return &output, nil -} diff --git a/pkg/utils/helpers/execpipe_test.go b/pkg/utils/helpers/execpipe_test.go deleted file mode 100644 index 2e1bbf90b..000000000 --- a/pkg/utils/helpers/execpipe_test.go +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Mini Object Storage, (C) 2014 Minio, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package helpers - -import ( - "io/ioutil" - "os/exec" - "testing" - - . "gopkg.in/check.v1" -) - -type MySuite struct{} - -var _ = Suite(&MySuite{}) - -func Test(t *testing.T) { TestingT(t) } - -func (s *MySuite) TestPiping(c *C) { - // Collect directories from the command-line - dirs := []string{"."} - - // Run the command on each directory - for _, dir := range dirs { - // find $DIR -type f # Find all files - ls := exec.Command("ls", "-l", dir) - - // | sort -t. -k2 # Sort by file extension - sort := exec.Command("sort", "-t.", "-k2") - - // Run - output, err := ExecPipe(ls, sort) - c.Assert(err, IsNil) - outputBytes, err := ioutil.ReadAll(output) - c.Assert(err, IsNil) - c.Assert(len(outputBytes), Not(Equals), 0) - } -}