A simple util to automate the creation of projects in different languages
First Stone is a utility that automates the creation of project's directories and files for certain programming languages.
Current supported languages are: Python, Go.
Why
Creating a project in a language typically requires certain infrastructure. This infrastructure is light (files and folders), but:
it should be consistent across projects (all python projects should contain the same base directories and files, like setup.py, init.py for packages, test directory...)
it is tedious to create it manually (mkdir, touch)
if this task is left to copy-pasting from other existing projects, there are certain things that will need to be changed in anycase, like the project name. This leads to
manually editting files to change strings here and there
The aim of first stone is just that, laying the first stone of a project quickly, automatically and without forgetting to edit files here and there.
Installation
Go get to install the latest version of the package
go get -v github.com/carlosghabrous/firststone
Make sure GOPATH is included in your PATH. Run the tool:
firststone <command> [-flags] [arguments]
For instance, to create a python project:
mkdir my-new-project
cd my-new-project
firststone init my-new-project python
To get some help
firststone --help
You can also get help by command:
firststone init --help
TODO
Add tests per module, if possible
Add check: parent directory's name should be = to project's name
Add content to golang project
Check whether variables and functions/methods are more public than needed
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.