createproj 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +18 -5
- data/lib/createproj/cli.rb +13 -0
- data/lib/createproj/creator/python.rb +92 -0
- data/lib/createproj/creator/ruby.rb +28 -15
- data/lib/createproj/version.rb +1 -1
- data/lib/createproj.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 945ead0d57ea958c1bf510d11ebe76ac277b4a4d
|
4
|
+
data.tar.gz: c51491e2687ce04a00183466822c4cfc49a494d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1784da067adbd2c9b48aa601d7cae5d5a7d6b267d6328126a4bc5064e2000008cf71b222daf653a985b167b9a0435cc4007f84750ef6c5ceb0f0c3cf735b9959
|
7
|
+
data.tar.gz: ef94d407e6900715ee8ec636883292bc5156ffe4d7d19af8dfc3bb97ae63e3e5e454da3169e1f0d62ca453f8d7add44a9639b56746ae814c2489e84aa81690fa
|
data/README.md
CHANGED
@@ -22,9 +22,13 @@ Once run, createproj will:
|
|
22
22
|
- Create the project directory
|
23
23
|
- Initialize a git repository with a language specified .gitignore and language specified git pre-commit hook (right now both are linters)
|
24
24
|
- Create a sandbox
|
25
|
-
- rvm gemset
|
25
|
+
- Ruby: rvm gemset
|
26
|
+
- Haskell: cabal sandbox
|
27
|
+
- Python: virtualenv environment
|
26
28
|
- Install default dependencies in the sandbox
|
27
|
-
- rubocop, yard, rspec
|
29
|
+
- Ruby: rubocop, yard, rspec
|
30
|
+
- Haskell: happy, hlint
|
31
|
+
- Python: pylint,
|
28
32
|
|
29
33
|
## Steps for building/publish gem
|
30
34
|
- From `createproj` directory, run:
|
@@ -35,8 +39,17 @@ Once run, createproj will:
|
|
35
39
|
- Code is linted using rubocop
|
36
40
|
- Code is documented using Yardoc
|
37
41
|
|
38
|
-
##
|
39
|
-
|
40
|
-
|
42
|
+
## Dependencies
|
43
|
+
For each language, I assume certain dependencies:
|
44
|
+
- Ruby
|
45
|
+
- [Rvm](https://rvm.io/)
|
46
|
+
- Haskell
|
47
|
+
- [Cabal](https://www.haskell.org/cabal/)
|
48
|
+
- Python
|
49
|
+
- [virtualenv](https://virtualenv.pypa.io/en/latest/), [virtualenvwrapper](http://virtualenvwrapper.readthedocs.org/en/latest/index.html)
|
50
|
+
- I also assume that [this](https://gist.github.com/mattjmcnaughton/4d599b62b60b59f9229f) virtualenv script is sourced. If not, instructions will be given to install.
|
51
|
+
|
52
|
+
## Contributing
|
53
|
+
Please do! Let me know if I can be of any help!
|
41
54
|
|
42
55
|
|
data/lib/createproj/cli.rb
CHANGED
@@ -18,6 +18,19 @@ module CreateProj
|
|
18
18
|
CreateProj::Creator::HaskellCreator.new(name, options).run
|
19
19
|
end
|
20
20
|
|
21
|
+
desc 'python NAME', 'create a python project called NAME'
|
22
|
+
# Command line input option for creating python project.
|
23
|
+
#
|
24
|
+
# @param [String] name the project
|
25
|
+
#
|
26
|
+
# @example Call from command line
|
27
|
+
# $ ./createproj python newproj #=> creates python proj called newproj
|
28
|
+
#
|
29
|
+
# @return Nothing
|
30
|
+
def python(name)
|
31
|
+
CreateProj::Creator::PythonCreator.new(name, options).run
|
32
|
+
end
|
33
|
+
|
21
34
|
desc 'rails NAME', 'create a rails project called NAME'
|
22
35
|
method_option :database, aliases: '-d', desc: 'database to use'
|
23
36
|
method_option :javascript, aliases: '-j', desc: 'javascript library'
|
@@ -0,0 +1,92 @@
|
|
1
|
+
module CreateProj
|
2
|
+
module Creator
|
3
|
+
# Class for creating Ruby project
|
4
|
+
class PythonCreator < Creator
|
5
|
+
def initialize(*args)
|
6
|
+
super(*args)
|
7
|
+
@precommit_template = 'lint-pre-commit'
|
8
|
+
@precommit_options = { linter: 'pylint', file_ext: '.py' }
|
9
|
+
@gitignore_files = %w(*.pyc)
|
10
|
+
@packages_to_install = {
|
11
|
+
'pylint' => '1.4.0'
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
# Creates a namespaced virtualenv name
|
16
|
+
#
|
17
|
+
# @example Get virtualenv name if project name is test
|
18
|
+
# virtualenv_name #=> 'test-createproj'
|
19
|
+
#
|
20
|
+
# @return [String] that has unique integer name
|
21
|
+
def virtualenv_name
|
22
|
+
"#{@name}-createproj"
|
23
|
+
end
|
24
|
+
|
25
|
+
# Write a .venv file with the name of the virtualenv
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# write_venv_file #=> `cat .venv` #=> NAME
|
29
|
+
#
|
30
|
+
# @return Nothing
|
31
|
+
def write_venv_file
|
32
|
+
# must have both .ruby-gemset and .ruby-version file
|
33
|
+
File.open('.venv', 'w+') do |f|
|
34
|
+
f.write(virtualenv_name)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Check that a bash script
|
39
|
+
def check_bash_script
|
40
|
+
command = <<-eos
|
41
|
+
If you want the virtual env to be automatically activated
|
42
|
+
upon entering the directory, follow the instructions in
|
43
|
+
this gist (https://gist.github.com/mattjmcnaughton/4d599b62b60b59f9229f).
|
44
|
+
eos
|
45
|
+
|
46
|
+
puts command unless File.exist?(File.join("#{Dir.home}",
|
47
|
+
'.virtualenv_sourcer'))
|
48
|
+
end
|
49
|
+
|
50
|
+
# Create an virtualenv with the project name and
|
51
|
+
# creates file dictating virtualenv
|
52
|
+
#
|
53
|
+
# @todo Automate creating the virtualenv
|
54
|
+
#
|
55
|
+
# Check that the user has installed a bash script
|
56
|
+
# that will automatically `workon ENV` when entering
|
57
|
+
# directory with a .venv file
|
58
|
+
#
|
59
|
+
# @example Create rvm sandbox for project named test
|
60
|
+
# install_sandbox #=> Executes `mkvirtualenv NAME`, write .env file,
|
61
|
+
# and check for bash script
|
62
|
+
#
|
63
|
+
# @return Nothing
|
64
|
+
def install_sandbox
|
65
|
+
# make system call to virtualenvwrapper to create the virtualenv
|
66
|
+
command = "Run mkvirtualenv #{virtualenv_name}"
|
67
|
+
|
68
|
+
puts command
|
69
|
+
write_venv_file
|
70
|
+
check_bash_script
|
71
|
+
end
|
72
|
+
|
73
|
+
# Installs dependencies in the new sandbox
|
74
|
+
#
|
75
|
+
# @example Write pylint to a requirements.txt and
|
76
|
+
# prompt `pip install -r requirements.txt`
|
77
|
+
# install_dependencies #=> pylint written in Gemfile
|
78
|
+
#
|
79
|
+
# @return Nothing
|
80
|
+
def install_dependencies
|
81
|
+
File.open('requirements.txt', 'w+') do |f|
|
82
|
+
@packages_to_install.each do |k, v|
|
83
|
+
f.write("#{k}==#{v}\n")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
command = 'Enter the directory and run pip install requirements.txt'
|
88
|
+
puts command
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -8,6 +8,11 @@ module CreateProj
|
|
8
8
|
@precommit_options = { linter: 'rubocop', file_ext: '.rb' }
|
9
9
|
@gitignore_files = %w(.ruby-gemset .ruby-version .bundle
|
10
10
|
Gemfile.lock doc .yardoc)
|
11
|
+
|
12
|
+
@gems_to_install = {
|
13
|
+
'rubocop' => '0.28', 'rspec' => '3.0', 'yard' => '0.8'
|
14
|
+
}
|
15
|
+
@default_ruby_version = '2.0.0'
|
11
16
|
end
|
12
17
|
|
13
18
|
# Creates a namespaced gemset name to avoid overwriting of gemsets
|
@@ -20,30 +25,41 @@ module CreateProj
|
|
20
25
|
"#{@name}-createproj"
|
21
26
|
end
|
22
27
|
|
23
|
-
#
|
24
|
-
# creates file dictating gemset
|
28
|
+
# Write the .ruby-gemset and .ruby-version rvm files
|
25
29
|
#
|
26
30
|
# @todo - make it so can specify ruby version
|
27
31
|
#
|
28
|
-
# @example
|
29
|
-
#
|
32
|
+
# @example
|
33
|
+
# write_rvm_files #=> # writes the two files
|
30
34
|
#
|
31
35
|
# @return Nothing
|
32
|
-
def
|
33
|
-
RVM.gemset_create(gemset_name)
|
34
|
-
|
36
|
+
def write_rvm_files
|
35
37
|
# must have both .ruby-gemset and .ruby-version file
|
36
38
|
File.open('.ruby-gemset', 'w+') do |f|
|
37
39
|
f.write(gemset_name)
|
38
40
|
end
|
39
41
|
|
40
42
|
# @todo - make this an option
|
41
|
-
|
43
|
+
|
42
44
|
File.open('.ruby-version', 'w+') do |f|
|
43
|
-
f.write(default_ruby_version)
|
45
|
+
f.write(@default_ruby_version)
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
49
|
+
# Create an rvm gemset with the project name and
|
50
|
+
# creates file dictating gemset
|
51
|
+
|
52
|
+
#
|
53
|
+
# @example Create rvm sandbox for project named test
|
54
|
+
# install_sandbox #=> Executes `rvm gemset create test`
|
55
|
+
#
|
56
|
+
# @return Nothing
|
57
|
+
def install_sandbox
|
58
|
+
RVM.gemset_create(gemset_name)
|
59
|
+
|
60
|
+
write_rvm_files
|
61
|
+
end
|
62
|
+
|
47
63
|
# Installs dependencies in the new sandbox
|
48
64
|
#
|
49
65
|
# @example Write rubocop to a gemfile and prompt `bundle install`
|
@@ -51,18 +67,15 @@ module CreateProj
|
|
51
67
|
#
|
52
68
|
# @return Nothing
|
53
69
|
def install_dependencies
|
54
|
-
gems_to_install = {
|
55
|
-
'rubocop' => '0.28', 'rspec' => '3.0', 'yard' => '0.8'
|
56
|
-
}
|
57
|
-
|
58
70
|
File.open('Gemfile', 'w+') do |f|
|
59
71
|
f.write("source 'https://rubygems.org'\n\n")
|
60
|
-
gems_to_install.each do |k, v|
|
72
|
+
@gems_to_install.each do |k, v|
|
61
73
|
f.write("gem '#{k}', '~> #{v}'\n")
|
62
74
|
end
|
63
75
|
end
|
64
76
|
|
65
|
-
|
77
|
+
command = 'Enter the directory and run bundle install.'
|
78
|
+
puts command
|
66
79
|
end
|
67
80
|
end
|
68
81
|
end
|
data/lib/createproj/version.rb
CHANGED
data/lib/createproj.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: createproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt McNaughton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- lib/createproj/cli.rb
|
165
165
|
- lib/createproj/creator/creator.rb
|
166
166
|
- lib/createproj/creator/haskell.rb
|
167
|
+
- lib/createproj/creator/python.rb
|
167
168
|
- lib/createproj/creator/rails.rb
|
168
169
|
- lib/createproj/creator/ruby.rb
|
169
170
|
- lib/createproj/version.rb
|