radon 0.1.7 → 0.1.8
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 +5 -5
- data/README.md +12 -0
- data/bin/radon +20 -8
- data/lib/core/constants.rb +1 -1
- data/lib/core/environments.rb +16 -16
- data/lib/core/extract.rb +9 -9
- data/lib/core/text.rb +6 -6
- data/lib/core/util.rb +40 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ba90180b85e4799d91289a2f4bb3755e23ed6836c9e4ef6d16f0746c96648c99
|
4
|
+
data.tar.gz: e2939a9722fdb9e7517e634a5e34119c7230db168955deaa747199713644eece
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f06e0447ab89c23aeffeccc69e16c80cbd51b41a295be0c08a00d912ce6177bbdde235a7d992be8658f8d3c2f65a33a5b02108c1413860f1f70919696e9be025
|
7
|
+
data.tar.gz: 1db14960b18241053e68b15b997ea3685ea765897866a1e336d2fd12cca85830baad15a2d3bca18da2e20c8668a46eed0bd109d458fac9f60a2c364687fc4aab
|
data/README.md
CHANGED
@@ -53,6 +53,18 @@ Creating project under /mnt/c/Users/Carter/Desktop/projects/MyGradleProject
|
|
53
53
|
Done! Your project is set up in /mnt/c/Users/Carter/Desktop/projects/MyGradleProject.
|
54
54
|
```
|
55
55
|
|
56
|
+
## Supported Environments
|
57
|
+
As of v0.1.7, the current supported environments are:
|
58
|
+
* Gradle
|
59
|
+
* Java
|
60
|
+
* Maven
|
61
|
+
* Python
|
62
|
+
* C
|
63
|
+
* Ruby
|
64
|
+
* Crystal
|
65
|
+
* Go (simple)
|
66
|
+
* Website
|
67
|
+
|
56
68
|
## Development
|
57
69
|
|
58
70
|
#### Adding an environment
|
data/bin/radon
CHANGED
@@ -3,33 +3,43 @@ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib
|
|
3
3
|
|
4
4
|
require 'core'
|
5
5
|
|
6
|
-
Signal.trap(
|
6
|
+
Signal.trap('INT'){}
|
7
7
|
|
8
8
|
ARGV << '-h' if ARGV.empty?
|
9
9
|
options = {}
|
10
10
|
|
11
11
|
OptionParser.new do |opts|
|
12
|
-
opts.banner = "Generate starter code for different coding environments.\n\nUsage: #{File.basename($PROGRAM_NAME)} [options] [
|
12
|
+
opts.banner = "Generate starter code for different coding environments.\n\nUsage: #{File.basename($PROGRAM_NAME)} [options] [env] NewProjectName\nRadon version: #{Paint[VERSION, '#2ecc71']}"
|
13
13
|
opts.separator Paint["\nGlobal Options: ", '#95a5a6']
|
14
14
|
|
15
15
|
|
16
16
|
opts.on('--list-env', 'List all supported environments') do
|
17
|
-
all = Radon::Environments.
|
18
|
-
puts
|
17
|
+
all = Radon::Environments.get_all_names
|
18
|
+
puts 'Supported environments are:'
|
19
19
|
all.each do |e|
|
20
20
|
puts " #{e}"
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
opts.on('-q', '--quiet', 'Run with
|
24
|
+
opts.on('-q', '--quiet', 'Run with suppressed console output.') do
|
25
25
|
$quiet = true
|
26
26
|
end
|
27
27
|
|
28
|
+
opts.on('-O', '--open-vscode', 'Open the project in Visual Studio Code (if installed).') do
|
29
|
+
options[:open_vscode] = true
|
30
|
+
fail_with('You cannot open your project in both VSCode and Atom.') if options[:open_atom]
|
31
|
+
end
|
32
|
+
|
33
|
+
opts.on('-a', '--open-atom', 'Open the project in Atom (if installed).') do
|
34
|
+
options[:open_atom] = true
|
35
|
+
fail_with('You cannot open your project in both VSCode and Atom.') if options[:open_vscode]
|
36
|
+
end
|
37
|
+
|
28
38
|
opts.on('--verbose', 'Run verbosely') do
|
29
39
|
$verbose = true
|
30
40
|
end
|
31
41
|
|
32
|
-
opts.on('-v', '--version', 'Show the
|
42
|
+
opts.on('-v', '--version', 'Show the radon version and exit') do
|
33
43
|
puts "Krypton version: #{Paint[VERSION, '#2ecc71']}"
|
34
44
|
exit 0
|
35
45
|
end
|
@@ -42,11 +52,13 @@ OptionParser.new do |opts|
|
|
42
52
|
|
43
53
|
end.parse!(ARGV)
|
44
54
|
|
45
|
-
while (opt = ARGV.shift)
|
55
|
+
while (opt = ARGV.shift)
|
46
56
|
Radon::Util.first_run
|
47
|
-
if Radon::Environments.
|
57
|
+
if Radon::Environments.get_all_names.include? opt
|
48
58
|
Radon::Environments.extract(opt, ARGV[0])
|
49
59
|
puts Paint["Done! Your project is set up in #{File.expand_path(ARGV[0])}.", :bold, :bright]
|
60
|
+
Radon::Util.open_in_editor(options, ARGV[0]) if options[:open_vscode] || options[:open_atom]
|
61
|
+
|
50
62
|
exit 0
|
51
63
|
else
|
52
64
|
error "#{opt} is not a supported environment!"
|
data/lib/core/constants.rb
CHANGED
data/lib/core/environments.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
|
-
require
|
1
|
+
require 'core/constants'
|
2
2
|
module Radon
|
3
3
|
class Environments
|
4
4
|
|
5
5
|
# The list of all supported environments and their associeted data paths
|
6
6
|
@@all = {
|
7
|
-
'gradle' => File.join(DATA_DIR,
|
8
|
-
'java' => File.join(DATA_DIR,
|
9
|
-
'maven' => File.join(DATA_DIR,
|
10
|
-
'python' => File.join(DATA_DIR,
|
11
|
-
'c' => File.join(DATA_DIR,
|
12
|
-
'ruby' => File.join(DATA_DIR,
|
13
|
-
'crystal'=> File.join(DATA_DIR,
|
14
|
-
'go_s' => File.join(DATA_DIR,
|
15
|
-
'website'=> File.join(DATA_DIR,
|
7
|
+
'gradle' => File.join(DATA_DIR, 'gradle.zip'),
|
8
|
+
'java' => File.join(DATA_DIR, 'java.zip'),
|
9
|
+
'maven' => File.join(DATA_DIR, 'maven.zip'),
|
10
|
+
'python' => File.join(DATA_DIR, 'python.zip'),
|
11
|
+
'c' => File.join(DATA_DIR, 'c.zip'),
|
12
|
+
'ruby' => File.join(DATA_DIR, 'ruby.zip'),
|
13
|
+
'crystal'=> File.join(DATA_DIR, 'crystal_app.zip'),
|
14
|
+
'go_s' => File.join(DATA_DIR, 'go_s.zip'),
|
15
|
+
'website'=> File.join(DATA_DIR, 'website.zip')
|
16
16
|
}
|
17
17
|
|
18
|
-
# Gets all environments as an array of strings
|
19
|
-
def self.
|
18
|
+
# Gets all environments as an array of strings
|
19
|
+
def self.get_all_names
|
20
20
|
@@all.keys
|
21
21
|
end
|
22
22
|
|
23
23
|
# Gets the value (corrosponding zip) of the key
|
24
|
-
def self.
|
24
|
+
def self.get_target_of(key)
|
25
25
|
@@all[key]
|
26
26
|
end
|
27
27
|
|
28
|
-
# Extract the zip
|
28
|
+
# Extract the zip
|
29
29
|
def self.extract(key, target)
|
30
|
-
envs =
|
30
|
+
envs = get_all_names
|
31
31
|
if envs.include? key
|
32
32
|
send "extract_#{key}", target
|
33
33
|
else
|
34
|
-
|
34
|
+
fail_with("#{key} is not a supported environment.\nYou can suggest it be added at https://github.com/cbrnrd/radon/issues")
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
data/lib/core/extract.rb
CHANGED
@@ -3,41 +3,41 @@ require "tempfile"
|
|
3
3
|
require "zip"
|
4
4
|
|
5
5
|
def extract_gradle(target)
|
6
|
-
extract_zip(Radon::Environments.
|
6
|
+
extract_zip(Radon::Environments.get_target_of('gradle'), target)
|
7
7
|
end
|
8
8
|
|
9
9
|
def extract_java(target)
|
10
|
-
extract_zip(Radon::Environments.
|
10
|
+
extract_zip(Radon::Environments.get_target_of('java'), target)
|
11
11
|
end
|
12
12
|
|
13
13
|
def extract_maven(target)
|
14
|
-
extract_zip(Radon::Environments.
|
14
|
+
extract_zip(Radon::Environments.get_target_of('maven'), target)
|
15
15
|
end
|
16
16
|
|
17
17
|
def extract_python(target)
|
18
|
-
extract_zip(Radon::Environments.
|
18
|
+
extract_zip(Radon::Environments.get_target_of('python'), target)
|
19
19
|
end
|
20
20
|
|
21
21
|
def extract_ruby(target)
|
22
|
-
extract_zip(Radon::Environments.
|
22
|
+
extract_zip(Radon::Environments.get_target_of('ruby'), target)
|
23
23
|
replace_all_tokens(target)
|
24
24
|
end
|
25
25
|
|
26
26
|
def extract_c(target)
|
27
|
-
extract_zip(Radon::Environments.
|
27
|
+
extract_zip(Radon::Environments.get_target_of('c'), target)
|
28
28
|
end
|
29
29
|
|
30
30
|
def extract_crystal(target)
|
31
|
-
extract_zip(Radon::Environments.
|
31
|
+
extract_zip(Radon::Environments.get_target_of('crystal'), target)
|
32
32
|
replace_all_tokens(target)
|
33
33
|
end
|
34
34
|
|
35
35
|
def extract_go_s(target)
|
36
|
-
extract_zip(Radon::Environments.
|
36
|
+
extract_zip(Radon::Environments.get_target_of('go_s'), target)
|
37
37
|
end
|
38
38
|
|
39
39
|
def extract_website(target)
|
40
|
-
extract_zip(Radon::Environments.
|
40
|
+
extract_zip(Radon::Environments.get_target_of('website'), target)
|
41
41
|
end
|
42
42
|
|
43
43
|
# Extracts some zip data to the passed destination
|
data/lib/core/text.rb
CHANGED
@@ -5,12 +5,12 @@ def vprint(*args)
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def error(*args)
|
8
|
-
puts Paint[
|
8
|
+
puts Paint['ERROR', '#e74c3c'] + " - #{args.join(' ')}"
|
9
9
|
end
|
10
10
|
|
11
11
|
def report_error_to_github(trace)
|
12
12
|
commit_string = File.directory?(File.join(PROJECT_ROOT, '.git')) ? "Commit `#{File.read(File.join(PROJECT_ROOT, '.git', 'refs', 'heads', 'master')).strip}`" : nil
|
13
|
-
puts %
|
13
|
+
puts %(
|
14
14
|
:::::::::::::::::: COPY BELOW ::::::::::::::::::
|
15
15
|
### Ruby version
|
16
16
|
|
@@ -36,22 +36,22 @@ def report_error_to_github(trace)
|
|
36
36
|
#{commit_string}
|
37
37
|
:::::::::::::::::: COPY ABOVE ::::::::::::::::::
|
38
38
|
#{Paint["Whoops! Looks like you've found a bug in radon. Please copy the text above and open a new issue at ", '#e74c3c'] + Paint['https://github.com/cbrnrd/radon/issues', :bold, :bright]}
|
39
|
-
|
39
|
+
)
|
40
40
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def create(fname)
|
44
|
-
puts Paint[
|
44
|
+
puts Paint[' create', '#2ecc71'] + " #{fname}" unless $quiet
|
45
45
|
end
|
46
46
|
|
47
47
|
def skip(fname)
|
48
|
-
puts Paint[
|
48
|
+
puts Paint[' skip', '#f1c40f'] + " #{fname}" unless $quiet
|
49
49
|
end
|
50
50
|
|
51
51
|
# Gets the project name in capitalized format. Eg: MyProjectName
|
52
52
|
def projectify(name)
|
53
53
|
# Name becomes frozen for some reason
|
54
|
-
name = name.gsub(/(.)([A-Z])/,'\1-\2')
|
54
|
+
name = name.gsub(/(.)([A-Z])/, '\1-\2')
|
55
55
|
name.downcase!
|
56
56
|
name.gsub!('..', '')
|
57
57
|
name.gsub!('/', '')
|
data/lib/core/util.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'json'
|
3
|
+
|
3
4
|
module Radon
|
4
5
|
class Util
|
5
6
|
def self.first_run
|
@@ -10,7 +11,7 @@ class Util
|
|
10
11
|
FileUtils.mkdir_p(SETTINGS_DIR)
|
11
12
|
vprint("Creating #{SETTINGS_DIR}")
|
12
13
|
|
13
|
-
puts "Welcome to radon! It looks like it's your first time running
|
14
|
+
puts "Welcome to radon! It looks like it's your first time running."
|
14
15
|
email = ask " Email: "
|
15
16
|
gh_uname = ask " GitHub username: "
|
16
17
|
|
@@ -30,6 +31,43 @@ class Util
|
|
30
31
|
def self.get_github_username
|
31
32
|
JSON.parse(File.read(SETTINGS_FILE))['username']
|
32
33
|
end
|
33
|
-
|
34
|
+
|
35
|
+
# Cross-platform way of finding an executable in the $PATH.
|
36
|
+
#
|
37
|
+
# which('ruby') #=> /usr/bin/ruby
|
38
|
+
def self.which(cmd)
|
39
|
+
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
40
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
41
|
+
exts.each { |ext|
|
42
|
+
exe = File.join(path, "#{cmd}#{ext}")
|
43
|
+
return exe if File.executable?(exe) && !File.directory?(exe)
|
44
|
+
}
|
45
|
+
end
|
46
|
+
return nil
|
47
|
+
end
|
48
|
+
|
49
|
+
def open_in_vscode(path)
|
50
|
+
fail_with('`code` program is not in $PATH') if Radon::Util.which('code').nil?
|
51
|
+
`cd #{path} && code .`
|
52
|
+
end
|
53
|
+
|
54
|
+
def open_in_atom(path)
|
55
|
+
fail_with('`atom` program is not in $PATH') if Radon::Util.which('atom').nil?
|
56
|
+
`cd #{path} && atom .`
|
57
|
+
end
|
58
|
+
|
59
|
+
def open_in_editor(opts, path)
|
60
|
+
open_in_vscode(path) if opts[:open_vscode]
|
61
|
+
rescue StandardError => e
|
62
|
+
report_error_to_github(e)
|
63
|
+
end
|
64
|
+
|
34
65
|
end
|
35
66
|
end
|
67
|
+
|
68
|
+
def fail_with(reason)
|
69
|
+
error(reason)
|
70
|
+
exit 1
|
71
|
+
end
|
72
|
+
|
73
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: radon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cbrnrd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: paint
|
@@ -151,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
151
|
version: '0'
|
152
152
|
requirements: []
|
153
153
|
rubyforge_project:
|
154
|
-
rubygems_version: 2.6
|
154
|
+
rubygems_version: 2.7.6
|
155
155
|
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: Radon generates starter code for all kinds of environments.
|