radon 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +79 -78
- data/TODO.md +1 -2
- data/bin/radon +1 -0
- data/lib/core.rb +1 -0
- data/lib/core/constants.rb +16 -2
- data/lib/core/environments.rb +45 -45
- data/lib/core/extract.rb +53 -54
- data/lib/core/text.rb +99 -83
- data/lib/core/util.rb +35 -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: 50b872015bdbf4bcca0695ca47f5d23eb1d80a4e
|
4
|
+
data.tar.gz: 68565c66bbed27a8e3f32d30b60c22783bb3bff8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: effe2f350d3b5ee7521b72133ae81c25c4a9afa9fb4c0c5718224600dc812a11257e55d00d89283889e24c4126c8f2755d2a1d32f13a797e1636f0630b86cbd8
|
7
|
+
data.tar.gz: 6f33205c3000b0a7a6fff94070aa20dc9f9dab4d9c6b2b226bc1d1bd39304192e673c9ebdcc9e4326e1d753375b14c990998c6a2538bdbbd2bf4900711c31c9d
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,78 +1,79 @@
|
|
1
|
-
<p align="center"><img src="https://raw.githubusercontent.com/cbrnrd/radon/master/img/radon-readme-header.png"></p>
|
2
|
-
<p align="center"><img src="https://raw.githubusercontent.com/cbrnrd/radon/master/img/demo.gif"></p>
|
3
|
-
|
4
|
-
## Installation
|
5
|
-
|
6
|
-
`radon` is part of the [periodic](https://periodic.now.sh) collection of apps. If you install `periodic-cli`, radon should come with it:
|
7
|
-
|
8
|
-
$ gem install periodic-cli
|
9
|
-
|
10
|
-
Or install just the gem:
|
11
|
-
|
12
|
-
$ gem install radon
|
13
|
-
|
14
|
-
## Usage
|
15
|
-
|
16
|
-
The basic usage is as follows: `radon [environment] {ProjectName}`.
|
17
|
-
|
18
|
-
A full list of supported environments can be found by running `radon --list-env`
|
19
|
-
|
20
|
-
#### Example:
|
21
|
-
|
22
|
-
Here is radon generating a gradle project called MyGradleProject
|
23
|
-
```
|
24
|
-
$ radon gradle MyGradleProject
|
25
|
-
Creating project under /mnt/c/Users/Carter/Desktop/projects/MyGradleProject
|
26
|
-
create MyGradleProject
|
27
|
-
create MyGradleProject/.gradle/
|
28
|
-
create MyGradleProject/.gradle/4.5/
|
29
|
-
create MyGradleProject/.gradle/4.5/fileChanges/
|
30
|
-
create MyGradleProject/.gradle/4.5/fileChanges/last-build.bin
|
31
|
-
create MyGradleProject/.gradle/4.5/fileHashes/
|
32
|
-
create MyGradleProject/.gradle/4.5/fileHashes/fileHashes.bin
|
33
|
-
create MyGradleProject/.gradle/4.5/fileHashes/fileHashes.lock
|
34
|
-
create MyGradleProject/.gradle/4.5/taskHistory/
|
35
|
-
create MyGradleProject/.gradle/4.5/taskHistory/taskHistory.bin
|
36
|
-
create MyGradleProject/.gradle/4.5/taskHistory/taskHistory.lock
|
37
|
-
create MyGradleProject/.gradle/buildOutputCleanup/
|
38
|
-
create MyGradleProject/.gradle/buildOutputCleanup/buildOutputCleanup.lock
|
39
|
-
create MyGradleProject/.gradle/buildOutputCleanup/cache.properties
|
40
|
-
create MyGradleProject/.gradle/buildOutputCleanup/outputFiles.bin
|
41
|
-
create MyGradleProject/build.gradle
|
42
|
-
create MyGradleProject/gradle/
|
43
|
-
create MyGradleProject/gradle/wrapper/
|
44
|
-
create MyGradleProject/gradle/wrapper/gradle-wrapper.jar
|
45
|
-
create MyGradleProject/gradle/wrapper/gradle-wrapper.properties
|
46
|
-
create MyGradleProject/gradlew
|
47
|
-
create MyGradleProject/gradlew.bat
|
48
|
-
create MyGradleProject/settings.gradle
|
49
|
-
create MyGradleProject/src/
|
50
|
-
create MyGradleProject/src/main/
|
51
|
-
create MyGradleProject/src/main/java/
|
52
|
-
create MyGradleProject/src/main/test/
|
53
|
-
Done! Your project is set up in /mnt/c/Users/Carter/Desktop/projects/MyGradleProject.
|
54
|
-
```
|
55
|
-
|
56
|
-
## Development
|
57
|
-
|
58
|
-
#### Adding an environment
|
59
|
-
If you want to add an environment to radon, here are the steps:
|
60
|
-
1. Create the standard directory structure of that environment. This is usually found on the environment's website or just through convention.
|
61
|
-
2. Zip all the files into one file (`zip -r env.zip .`)
|
62
|
-
3. Save the zip data as base64 (`cat env.zip | base64 -w 0 > env.b64`)
|
63
|
-
4. Put both the base64 data and the zip file in radon's `/data` folder.
|
64
|
-
5. Add the function(s) in `extract.rb` to extract the _zip_ file to the target (See [here](https://github.com/cbrnrd/radon/blob/7cd141b5a61de6a8abaf0009a1a8cfd090f05e97/lib/core/extract.rb#L5))
|
65
|
-
6. Add the environments to `@@all` in `environments.rb`
|
66
|
-
7. Open a pull request
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
1
|
+
<p align="center"><img src="https://raw.githubusercontent.com/cbrnrd/radon/master/img/radon-readme-header.png"></p>
|
2
|
+
<p align="center"><img src="https://raw.githubusercontent.com/cbrnrd/radon/master/img/demo.gif"></p>
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
|
6
|
+
`radon` is part of the [periodic](https://periodic.now.sh) collection of apps. If you install `periodic-cli`, radon should come with it:
|
7
|
+
|
8
|
+
$ gem install periodic-cli
|
9
|
+
|
10
|
+
Or install just the gem:
|
11
|
+
|
12
|
+
$ gem install radon
|
13
|
+
|
14
|
+
## Usage
|
15
|
+
|
16
|
+
The basic usage is as follows: `radon [environment] {ProjectName}`.
|
17
|
+
|
18
|
+
A full list of supported environments can be found by running `radon --list-env`
|
19
|
+
|
20
|
+
#### Example:
|
21
|
+
|
22
|
+
Here is radon generating a gradle project called MyGradleProject
|
23
|
+
```
|
24
|
+
$ radon gradle MyGradleProject
|
25
|
+
Creating project under /mnt/c/Users/Carter/Desktop/projects/MyGradleProject
|
26
|
+
create MyGradleProject
|
27
|
+
create MyGradleProject/.gradle/
|
28
|
+
create MyGradleProject/.gradle/4.5/
|
29
|
+
create MyGradleProject/.gradle/4.5/fileChanges/
|
30
|
+
create MyGradleProject/.gradle/4.5/fileChanges/last-build.bin
|
31
|
+
create MyGradleProject/.gradle/4.5/fileHashes/
|
32
|
+
create MyGradleProject/.gradle/4.5/fileHashes/fileHashes.bin
|
33
|
+
create MyGradleProject/.gradle/4.5/fileHashes/fileHashes.lock
|
34
|
+
create MyGradleProject/.gradle/4.5/taskHistory/
|
35
|
+
create MyGradleProject/.gradle/4.5/taskHistory/taskHistory.bin
|
36
|
+
create MyGradleProject/.gradle/4.5/taskHistory/taskHistory.lock
|
37
|
+
create MyGradleProject/.gradle/buildOutputCleanup/
|
38
|
+
create MyGradleProject/.gradle/buildOutputCleanup/buildOutputCleanup.lock
|
39
|
+
create MyGradleProject/.gradle/buildOutputCleanup/cache.properties
|
40
|
+
create MyGradleProject/.gradle/buildOutputCleanup/outputFiles.bin
|
41
|
+
create MyGradleProject/build.gradle
|
42
|
+
create MyGradleProject/gradle/
|
43
|
+
create MyGradleProject/gradle/wrapper/
|
44
|
+
create MyGradleProject/gradle/wrapper/gradle-wrapper.jar
|
45
|
+
create MyGradleProject/gradle/wrapper/gradle-wrapper.properties
|
46
|
+
create MyGradleProject/gradlew
|
47
|
+
create MyGradleProject/gradlew.bat
|
48
|
+
create MyGradleProject/settings.gradle
|
49
|
+
create MyGradleProject/src/
|
50
|
+
create MyGradleProject/src/main/
|
51
|
+
create MyGradleProject/src/main/java/
|
52
|
+
create MyGradleProject/src/main/test/
|
53
|
+
Done! Your project is set up in /mnt/c/Users/Carter/Desktop/projects/MyGradleProject.
|
54
|
+
```
|
55
|
+
|
56
|
+
## Development
|
57
|
+
|
58
|
+
#### Adding an environment
|
59
|
+
If you want to add an environment to radon, here are the steps:
|
60
|
+
1. Create the standard directory structure of that environment. This is usually found on the environment's website or just through convention.
|
61
|
+
2. Zip all the files into one file (`zip -r env.zip .`)
|
62
|
+
3. Save the zip data as base64 (`cat env.zip | base64 -w 0 > env.b64`)
|
63
|
+
4. Put both the base64 data and the zip file in radon's `/data` folder.
|
64
|
+
5. Add the function(s) in `extract.rb` to extract the _zip_ file to the target (See [here](https://github.com/cbrnrd/radon/blob/7cd141b5a61de6a8abaf0009a1a8cfd090f05e97/lib/core/extract.rb#L5))
|
65
|
+
6. Add the environments to `@@all` in `environments.rb`
|
66
|
+
7. Open a pull request
|
67
|
+
|
68
|
+
|
69
|
+
## Contributing
|
70
|
+
|
71
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/cbrnrd/radon. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
72
|
+
|
73
|
+
## License
|
74
|
+
|
75
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
76
|
+
|
77
|
+
## Code of Conduct
|
78
|
+
|
79
|
+
Everyone interacting in the Radon project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/cbrnrd/radon/blob/master/CODE_OF_CONDUCT.md).
|
data/TODO.md
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
1. Add
|
2
|
-
2. Add license choices
|
1
|
+
1. Add license choices
|
data/bin/radon
CHANGED
@@ -43,6 +43,7 @@ OptionParser.new do |opts|
|
|
43
43
|
end.parse!(ARGV)
|
44
44
|
|
45
45
|
while (opt = ARGV.shift) do
|
46
|
+
Radon::Util.first_run
|
46
47
|
if Radon::Environments.getAllNames.include? opt
|
47
48
|
Radon::Environments.extract(opt, ARGV[0])
|
48
49
|
puts Paint["Done! Your project is set up in #{File.expand_path(ARGV[0])}.", :bold, :bright]
|
data/lib/core.rb
CHANGED
data/lib/core/constants.rb
CHANGED
@@ -1,7 +1,21 @@
|
|
1
|
-
|
1
|
+
# The version
|
2
|
+
VERSION = "0.1.4"
|
2
3
|
|
4
|
+
# The root of this project
|
3
5
|
PROJECT_ROOT = File.absolute_path(File.join(File.dirname(__FILE__), "..", ".."))
|
6
|
+
|
7
|
+
# Settings pertaining to radon
|
8
|
+
SETTINGS_DIR = File.join(Dir.home, '.periodic', 'radon')
|
9
|
+
|
10
|
+
# The settings json file
|
11
|
+
SETTINGS_FILE = File.join(SETTINGS_DIR, 'settings.json')
|
12
|
+
|
13
|
+
# The base periodic settings path
|
14
|
+
BASE_SETTINGS_DIR = File.join(Dir.home, '.periodic')
|
15
|
+
|
16
|
+
# The folder containing zips and b64 files
|
4
17
|
DATA_DIR = File.absolute_path(File.join(PROJECT_ROOT, "data"))
|
18
|
+
|
5
19
|
AUTHORS = {
|
6
20
|
'Carter Brainerd' => '0xCB[at]protonmail[dot]com'
|
7
|
-
}
|
21
|
+
}
|
data/lib/core/environments.rb
CHANGED
@@ -1,45 +1,45 @@
|
|
1
|
-
require "core/constants"
|
2
|
-
module Radon
|
3
|
-
class Environments
|
4
|
-
@@all = {
|
5
|
-
'gradle' => File.join(DATA_DIR, "gradle.zip"),
|
6
|
-
'java' => File.join(DATA_DIR, "java.zip"),
|
7
|
-
'maven' => File.join(DATA_DIR, "maven.zip"),
|
8
|
-
'python' => File.join(DATA_DIR, "python.zip"),
|
9
|
-
'c' => File.join(DATA_DIR, "c.zip"),
|
10
|
-
'ruby (beta)' => File.join(DATA_DIR, "ruby.zip"),
|
11
|
-
'crystal'=> File.join(DATA_DIR, "crystal_app.zip")
|
12
|
-
}
|
13
|
-
|
14
|
-
# Gets all environments as an array of strings
|
15
|
-
def self.getAllNames
|
16
|
-
@@all.keys
|
17
|
-
end
|
18
|
-
|
19
|
-
# Gets the value (corrosponding zip) of the key
|
20
|
-
def self.getTargetOf(key)
|
21
|
-
@@all[key]
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.extract(key, target)
|
25
|
-
case key
|
26
|
-
when 'gradle'
|
27
|
-
extract_gradle(target)
|
28
|
-
when 'java'
|
29
|
-
extract_java(target)
|
30
|
-
when 'python'
|
31
|
-
extract_python(target)
|
32
|
-
when 'ruby'
|
33
|
-
extract_ruby(target)
|
34
|
-
when 'maven'
|
35
|
-
extract_maven(target)
|
36
|
-
when 'c'
|
37
|
-
extract_c(target)
|
38
|
-
when 'crystal'
|
39
|
-
extract_crystal(target)
|
40
|
-
else
|
41
|
-
error("#{key} is not a supported environment.\nYou can suggest it be added at https://github.com/cbrnrd/radon/issues")
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
1
|
+
require "core/constants"
|
2
|
+
module Radon
|
3
|
+
class Environments
|
4
|
+
@@all = {
|
5
|
+
'gradle' => File.join(DATA_DIR, "gradle.zip"),
|
6
|
+
'java' => File.join(DATA_DIR, "java.zip"),
|
7
|
+
'maven' => File.join(DATA_DIR, "maven.zip"),
|
8
|
+
'python' => File.join(DATA_DIR, "python.zip"),
|
9
|
+
'c' => File.join(DATA_DIR, "c.zip"),
|
10
|
+
'ruby (beta)' => File.join(DATA_DIR, "ruby.zip"),
|
11
|
+
'crystal'=> File.join(DATA_DIR, "crystal_app.zip")
|
12
|
+
}
|
13
|
+
|
14
|
+
# Gets all environments as an array of strings
|
15
|
+
def self.getAllNames
|
16
|
+
@@all.keys
|
17
|
+
end
|
18
|
+
|
19
|
+
# Gets the value (corrosponding zip) of the key
|
20
|
+
def self.getTargetOf(key)
|
21
|
+
@@all[key]
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.extract(key, target)
|
25
|
+
case key
|
26
|
+
when 'gradle'
|
27
|
+
extract_gradle(target)
|
28
|
+
when 'java'
|
29
|
+
extract_java(target)
|
30
|
+
when 'python'
|
31
|
+
extract_python(target)
|
32
|
+
when 'ruby'
|
33
|
+
extract_ruby(target)
|
34
|
+
when 'maven'
|
35
|
+
extract_maven(target)
|
36
|
+
when 'c'
|
37
|
+
extract_c(target)
|
38
|
+
when 'crystal'
|
39
|
+
extract_crystal(target)
|
40
|
+
else
|
41
|
+
error("#{key} is not a supported environment.\nYou can suggest it be added at https://github.com/cbrnrd/radon/issues")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/core/extract.rb
CHANGED
@@ -1,54 +1,53 @@
|
|
1
|
-
require "base64"
|
2
|
-
require "tempfile"
|
3
|
-
require "zip"
|
4
|
-
|
5
|
-
def extract_gradle(target)
|
6
|
-
extract_zip(Radon::Environments.getTargetOf('gradle'), target)
|
7
|
-
end
|
8
|
-
|
9
|
-
def extract_java(target)
|
10
|
-
extract_zip(Radon::Environments.getTargetOf('java'), target)
|
11
|
-
end
|
12
|
-
|
13
|
-
def extract_maven(target)
|
14
|
-
extract_zip(Radon::Environments.getTargetOf('maven'), target)
|
15
|
-
end
|
16
|
-
|
17
|
-
def extract_python(target)
|
18
|
-
extract_zip(Radon::Environments.getTargetOf('python'), target)
|
19
|
-
end
|
20
|
-
|
21
|
-
def extract_ruby(target)
|
22
|
-
extract_zip(Radon::Environments.getTargetOf('ruby (beta)'), target)
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def extract_c(target)
|
27
|
-
extract_zip(Radon::Environments.getTargetOf('c'), target)
|
28
|
-
end
|
29
|
-
|
30
|
-
def extract_crystal(target)
|
31
|
-
extract_zip(Radon::Environments.getTargetOf('crystal'), target)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
1
|
+
require "base64"
|
2
|
+
require "tempfile"
|
3
|
+
require "zip"
|
4
|
+
|
5
|
+
def extract_gradle(target)
|
6
|
+
extract_zip(Radon::Environments.getTargetOf('gradle'), target)
|
7
|
+
end
|
8
|
+
|
9
|
+
def extract_java(target)
|
10
|
+
extract_zip(Radon::Environments.getTargetOf('java'), target)
|
11
|
+
end
|
12
|
+
|
13
|
+
def extract_maven(target)
|
14
|
+
extract_zip(Radon::Environments.getTargetOf('maven'), target)
|
15
|
+
end
|
16
|
+
|
17
|
+
def extract_python(target)
|
18
|
+
extract_zip(Radon::Environments.getTargetOf('python'), target)
|
19
|
+
end
|
20
|
+
|
21
|
+
def extract_ruby(target)
|
22
|
+
extract_zip(Radon::Environments.getTargetOf('ruby (beta)'), target)
|
23
|
+
replace_all_tokens(target)
|
24
|
+
end
|
25
|
+
|
26
|
+
def extract_c(target)
|
27
|
+
extract_zip(Radon::Environments.getTargetOf('c'), target)
|
28
|
+
end
|
29
|
+
|
30
|
+
def extract_crystal(target)
|
31
|
+
extract_zip(Radon::Environments.getTargetOf('crystal'), target)
|
32
|
+
replace_all_tokens(target)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Extracts some zip data to the passed destination
|
36
|
+
def extract_zip(file, destination)
|
37
|
+
puts "Creating project under #{File.expand_path(destination)}" unless $quiet
|
38
|
+
create(destination)
|
39
|
+
FileUtils.mkdir_p(destination)
|
40
|
+
|
41
|
+
Zip::File.open(file) do |zip_file|
|
42
|
+
zip_file.each do |f|
|
43
|
+
fname = f.name.gsub('{{NAME}}', projectify(destination))
|
44
|
+
fpath = File.join(destination, fname)
|
45
|
+
if File.exists?(fpath)
|
46
|
+
skip(fpath)
|
47
|
+
else
|
48
|
+
create(fpath)
|
49
|
+
end
|
50
|
+
zip_file.extract(f, fpath) unless File.exist?(fpath)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/core/text.rb
CHANGED
@@ -1,84 +1,100 @@
|
|
1
|
-
require 'paint'
|
2
|
-
|
3
|
-
def vprint(*args)
|
4
|
-
puts args if $verbose && !$quiet
|
5
|
-
end
|
6
|
-
|
7
|
-
def error(*args)
|
8
|
-
puts Paint["ERROR", '#e74c3c'] + " - #{args}"
|
9
|
-
end
|
10
|
-
|
11
|
-
def report_error_to_github(trace)
|
12
|
-
puts %Q{
|
13
|
-
:::::::::::::::::: COPY BELOW ::::::::::::::::::
|
14
|
-
### Ruby version
|
15
|
-
|
16
|
-
`#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}`
|
17
|
-
|
18
|
-
### OS
|
19
|
-
|
20
|
-
#{Gem::Platform.local.os}
|
21
|
-
|
22
|
-
### Radon Version
|
23
|
-
|
24
|
-
`VERSION`
|
25
|
-
|
26
|
-
### Date Found
|
27
|
-
|
28
|
-
#{Time.now.strftime("%d/%m/%Y %H:%M")}
|
29
|
-
|
30
|
-
### Backtrace
|
31
|
-
```
|
32
|
-
#{trace}
|
33
|
-
```
|
34
|
-
:::::::::::::::::: COPY ABOVE ::::::::::::::::::
|
35
|
-
#{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]}
|
36
|
-
}
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
def create(fname)
|
41
|
-
puts Paint[" create", '#2ecc71'] + " #{fname}" unless $quiet
|
42
|
-
end
|
43
|
-
|
44
|
-
def skip(fname)
|
45
|
-
puts Paint[" skip", '#f1c40f'] + " #{fname}" unless $quiet
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
name.
|
52
|
-
name.
|
53
|
-
name.gsub!('
|
54
|
-
name.gsub!('
|
55
|
-
name
|
56
|
-
name
|
57
|
-
name.gsub!('
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
1
|
+
require 'paint'
|
2
|
+
|
3
|
+
def vprint(*args)
|
4
|
+
puts args if $verbose && !$quiet
|
5
|
+
end
|
6
|
+
|
7
|
+
def error(*args)
|
8
|
+
puts Paint["ERROR", '#e74c3c'] + " - #{args}"
|
9
|
+
end
|
10
|
+
|
11
|
+
def report_error_to_github(trace)
|
12
|
+
puts %Q{
|
13
|
+
:::::::::::::::::: COPY BELOW ::::::::::::::::::
|
14
|
+
### Ruby version
|
15
|
+
|
16
|
+
`#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}`
|
17
|
+
|
18
|
+
### OS
|
19
|
+
|
20
|
+
#{Gem::Platform.local.os}
|
21
|
+
|
22
|
+
### Radon Version
|
23
|
+
|
24
|
+
`VERSION`
|
25
|
+
|
26
|
+
### Date Found
|
27
|
+
|
28
|
+
#{Time.now.strftime("%d/%m/%Y %H:%M")}
|
29
|
+
|
30
|
+
### Backtrace
|
31
|
+
```
|
32
|
+
#{trace}
|
33
|
+
```
|
34
|
+
:::::::::::::::::: COPY ABOVE ::::::::::::::::::
|
35
|
+
#{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]}
|
36
|
+
}
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def create(fname)
|
41
|
+
puts Paint[" create", '#2ecc71'] + " #{fname}" unless $quiet
|
42
|
+
end
|
43
|
+
|
44
|
+
def skip(fname)
|
45
|
+
puts Paint[" skip", '#f1c40f'] + " #{fname}" unless $quiet
|
46
|
+
end
|
47
|
+
|
48
|
+
# Gets the project name in capitalized format. Eg: MyProjectName
|
49
|
+
def projectify(name)
|
50
|
+
# Name becomes frozen for some reason
|
51
|
+
name = name.gsub(/(.)([A-Z])/,'\1-\2')
|
52
|
+
name.downcase!
|
53
|
+
name.gsub!('..', '')
|
54
|
+
name.gsub!('/', '')
|
55
|
+
name.gsub!('\\', '')
|
56
|
+
name[0] = '' if name[0] == '-'
|
57
|
+
name.gsub!('--', '-')
|
58
|
+
name.gsub!('_-', '-')
|
59
|
+
return name
|
60
|
+
end
|
61
|
+
|
62
|
+
# Prompts the user for input
|
63
|
+
def ask(*args)
|
64
|
+
print(*args)
|
65
|
+
$stdin.gets.chomp
|
66
|
+
end
|
67
|
+
|
68
|
+
# Gets the project name in dash-seperated format. Eg: my-project-name
|
69
|
+
def classify(name)
|
70
|
+
name = name.gsub(/-[a-z]/) {|s| s.upcase }
|
71
|
+
name.delete!('-')
|
72
|
+
return name.slice(0,1).capitalize + name.slice(1..-1)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Replaces `find` with `repl` in every file and directory
|
76
|
+
def find_and_replace_all(target_dir, find, repl)
|
77
|
+
files = Dir[File.join(target_dir,'**','*')]
|
78
|
+
files.each do |file_name|
|
79
|
+
next if File.directory?(file_name)
|
80
|
+
begin
|
81
|
+
text = File.read(file_name)
|
82
|
+
# Do the find and replace
|
83
|
+
new_contents = text.gsub(find, repl)
|
84
|
+
File.open(file_name, 'w') {|f| f.puts new_contents}
|
85
|
+
rescue Errno::ENOENT => e
|
86
|
+
# Something weird happened (this shouldn't come up)
|
87
|
+
error "ERROR GSUBING FILE #{file_name}"
|
88
|
+
report_error_to_github(e.backtrace)
|
89
|
+
next
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Replaces all tokens in all files in the target directory
|
95
|
+
def replace_all_tokens(target)
|
96
|
+
find_and_replace_all(target, '{{NAME}}', projectify(target))
|
97
|
+
find_and_replace_all(target, '{{CAPSNAME}}', classify(target))
|
98
|
+
find_and_replace_all(target, '{{EMAIL}}', Radon::Util.get_email)
|
99
|
+
find_and_replace_all(target, '{{GHNAME}}', Radon::Util.get_github_username)
|
84
100
|
end
|
data/lib/core/util.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'json'
|
3
|
+
module Radon
|
4
|
+
class Util
|
5
|
+
def self.first_run
|
6
|
+
return if (File.directory?(SETTINGS_DIR) && File.exist?(SETTINGS_FILE))
|
7
|
+
puts "Performing first time setup..."
|
8
|
+
|
9
|
+
# Make settings dir
|
10
|
+
FileUtils.mkdir_p(SETTINGS_DIR)
|
11
|
+
vprint("Creating #{SETTINGS_DIR}")
|
12
|
+
|
13
|
+
puts "Welcome to radon! It looks like it's your first time running radon."
|
14
|
+
email = ask " Email: "
|
15
|
+
gh_uname = ask " GitHub username: "
|
16
|
+
|
17
|
+
data = {
|
18
|
+
:email => email,
|
19
|
+
:username => gh_uname
|
20
|
+
}
|
21
|
+
|
22
|
+
File.write(File.join(SETTINGS_DIR, 'settings.json'), JSON.pretty_generate(data))
|
23
|
+
vprint "Writing settings to #{File.join(SETTINGS_DIR, 'settings.json')}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.get_email
|
27
|
+
JSON.parse(File.read(SETTINGS_FILE))['email']
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.get_github_username
|
31
|
+
JSON.parse(File.read(SETTINGS_FILE))['username']
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cbrnrd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: paint
|
@@ -122,6 +122,7 @@ files:
|
|
122
122
|
- lib/core/environments.rb
|
123
123
|
- lib/core/extract.rb
|
124
124
|
- lib/core/text.rb
|
125
|
+
- lib/core/util.rb
|
125
126
|
- pkg/radon-0.1.1.gem
|
126
127
|
- radon.gemspec
|
127
128
|
- scripts/build_install_local.sh
|