<commit_before>Cloud Foundry CLI [![Build Status](https://travis-ci.org/cloudfoundry/cli.png?branch=master)](https://travis-ci.org/cloudfoundry/cli)
=================

This is the official command line client for Cloud Foundry. [cf v6.0.0](https://github.com/cloudfoundry/cli/releases/tag/v6.0.0) is the current supported release. 

Download edge
=============
Edge binaries are published to our Amazon S3 bucket with each new commit. These binaries are not intended for wider use, but for developers to test new features and fixes as they are completed. Download edge:
- http://go-cli.s3.amazonaws.com/cf-darwin-amd64.tgz
- http://go-cli.s3.amazonaws.com/cf-linux-amd64.tgz
- http://go-cli.s3.amazonaws.com/cf-linux-386.tgz
- http://go-cli.s3.amazonaws.com/cf-windows-amd64.zip
- http://go-cli.s3.amazonaws.com/cf-windows-386.zip

You can follow our development progress on [Pivotal Tracker](https://www.pivotaltracker.com/s/projects/892938).

Cloning the repository
======================

1. Install [Go](http://golang.org)
1. Clone (Forking beforehand for development).
1. Run ```git submodule update --init --recursive```

Building
========

1. Run ```./bin/build```
1. The binary will be built into the `./out` directory.

Development
===========

1. Write a test.
1. Run ```bin/test``` and watch the test fail.
1. Make the test pass.
1. Submit a pull request.

If you want to run the benchmark tests

    ./bin/go test -bench . -benchmem cf/...

Contributing
============

Rough overview of the architecture
----------------------------------

The app (in ```src/cf/app/app.go```) declares the list of available commands. Help and flags are defined there.
It will instantiate a command, and run it using the runner (in ```src/cf/commands/runner.go```).

A command has requirements, and a run function. Requirements are used as filters before running the command.
If any of them fails, the command will not run (see ```src/cf/requirements``` for examples of requirements).

When the command is run, it communicates with api using repositories (they are in ```src/cf/api```).

Repositories are injected into the command, so tests can inject a fake.

Repositories communicate with the api endpoints through a Gateway (see ```src/cf/net```).

Repositories return a Domain Object and an ApiResponse object.

Domain objects are data structures related to Cloud Foundry (see ```src/cf/domain```).

ApiResponse objects convey a variety of important error conditions (see ```src/cf/net/api_status```).


Managing dependencies
---------------------<commit_msg>updated cf v6 text, standardizing headers<commit_after>Cloud Foundry CLI [![Build Status](https://travis-ci.org/cloudfoundry/cli.png?branch=master)](https://travis-ci.org/cloudfoundry/cli)
=================

This is the official command line client for Cloud Foundry. [cf v6.0.0](https://github.com/cloudfoundry/cli/releases/tag/v6.0.0) is the current supported release. 

Downloading edge
================
Edge binaries are published to our Amazon S3 bucket with each new commit. These binaries are *not intended for wider use*, but for developers to test new features and fixes as they are completed:
- http://go-cli.s3.amazonaws.com/cf-darwin-amd64.tgz
- http://go-cli.s3.amazonaws.com/cf-linux-amd64.tgz
- http://go-cli.s3.amazonaws.com/cf-linux-386.tgz
- http://go-cli.s3.amazonaws.com/cf-windows-amd64.zip
- http://go-cli.s3.amazonaws.com/cf-windows-386.zip

You can follow our development progress on [Pivotal Tracker](https://www.pivotaltracker.com/s/projects/892938).

Cloning the repository
======================

1. Install [Go](http://golang.org)
1. Clone (Forking beforehand for development).
1. Run ```git submodule update --init --recursive```

Building
=======

1. Run ```./bin/build```
1. The binary will be built into the `./out` directory.

Developing
==========

1. Write a test.
1. Run ```bin/test``` and watch the test fail.
1. Make the test pass.
1. Submit a pull request.

If you want to run the benchmark tests

    ./bin/go test -bench . -benchmem cf/...

Contributing
============

Architecture overview
---------------------

The app (in ```src/cf/app/app.go```) declares the list of available commands. Help and flags are defined there.
It will instantiate a command, and run it using the runner (in ```src/cf/commands/runner.go```).

A command has requirements, and a run function. Requirements are used as filters before running the command.
If any of them fails, the command will not run (see ```src/cf/requirements``` for examples of requirements).

When the command is run, it communicates with api using repositories (they are in ```src/cf/api```).

Repositories are injected into the command, so tests can inject a fake.

Repositories communicate with the api endpoints through a Gateway (see ```src/cf/net```).

Repositories return a Domain Object and an ApiResponse object.

Domain objects are data structures related to Cloud Foundry (see ```src/cf/domain```).

ApiResponse objects convey a variety of important error conditions (see ```src/cf/net/api_status```).


Managing dependencies
---------------------
{'fraction_non_alphanumeric': 0.16255385820603213, 'fraction_numerical': 0.015471993732863298, 'mean_word_length': 3.795305164319249, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 8, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 5, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5639112', 'n_tokens_mistral': 1561, 'n_tokens_neox': 1487, 'n_words': 564}