| // Copyright 2015 The Bazel Authors. All rights reserved. | 
 | // | 
 | // 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. | 
 |  | 
 | local workflow = import "examples/jsonnet/workflow.jsonnet"; | 
 |  | 
 | // Workflow that performs a wordcount using shell commands. | 
 | { | 
 |   wordcount: workflow.Workflow { | 
 |     retries: 12, | 
 |     schedule: workflow.Schedule { | 
 |       start_date: "2015-11-15", | 
 |       start_time: "17:30", | 
 |       repeat_frequency: 1, | 
 |       repeat_type: "week", | 
 |     }, | 
 |     jobs: { | 
 |       local input_file = "/tmp/passage_test", | 
 |       local tokens_file = "/tmp/tokens", | 
 |       local sorted_tokens_file = "/tmp/sorted_tokens", | 
 |       local counts_file = "/tmp/counts", | 
 |  | 
 |       // Reads the input file and produces an output file with one word per | 
 |       // line. | 
 |       tokenize: workflow.ShJob { | 
 |         command: "tr ' ' '\n' < %s > %s" % [input_file, tokens_file], | 
 |         inputs: [input_file], | 
 |         outputs: [tokens_file], | 
 |       }, | 
 |  | 
 |       // Takes the tokens file and produces a file with the tokens sorted. | 
 |       sort: workflow.ShJob { | 
 |         deps: [":tokenize"], | 
 |         command: "sort %s > %s" % [tokens_file, sorted_tokens_file], | 
 |         inputs: [tokens_file], | 
 |         outputs: [sorted_tokens_file], | 
 |       }, | 
 |  | 
 |       // Takes the file containing sorted tokens and produces a file containing | 
 |       // the counts for each word. | 
 |       count: workflow.ShJob { | 
 |         deps: [":sort"], | 
 |         command: "uniq -c %s > %s" % [sorted_tokens_file, counts_file], | 
 |         inputs: [sorted_tokens_file], | 
 |         outputs: [counts_file], | 
 |       }, | 
 |     } | 
 |   } | 
 | } |