stastic 0.1.0 → 0.2.0

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.
@@ -0,0 +1,79 @@
1
+ require 'yaml'
2
+
3
+ module Stastic
4
+ module Config
5
+ extend self
6
+
7
+ VALID_SETTINGS = %w(user token name site_id site_root)
8
+ def exists?
9
+ File.exists?(config_path) || File.exists?(global_path)
10
+ end
11
+
12
+ def credentials?
13
+ exists? && user && token
14
+ end
15
+
16
+ def site_defined?
17
+ credentials? && site_id
18
+ end
19
+
20
+ def update(attrs, scope = nil)
21
+ if scope == :global
22
+ @global_config = update_config(attrs, global_config, global_path)
23
+ else
24
+ @config = update_config(attrs, config, config_path)
25
+ end
26
+ end
27
+
28
+ alias_method :add, :update
29
+
30
+ def reset
31
+ @config = nil
32
+ @global_config = nil
33
+ end
34
+
35
+ VALID_SETTINGS.each do |key|
36
+ define_method key do
37
+ get(key.to_sym)
38
+ end
39
+ end
40
+
41
+ private
42
+ def update_config(attrs, config_obj, persist_path)
43
+ updated_config = config_obj.merge(attrs)
44
+ File.open(persist_path, "w") do |f|
45
+ f.write(updated_config.to_yaml)
46
+ end
47
+ updated_config
48
+ end
49
+
50
+ def stored_config(path)
51
+ if File.exists?(path)
52
+ YAML.load(File.read(path))
53
+ else
54
+ {}
55
+ end
56
+ end
57
+
58
+ def get(key)
59
+ config[key] || global_config[key]
60
+ end
61
+
62
+ def config
63
+ @config ||= stored_config(config_path)
64
+ end
65
+
66
+ def global_config
67
+ @global_config ||= stored_config(global_path)
68
+ end
69
+
70
+ def config_path
71
+ File.expand_path(".stastic")
72
+ end
73
+
74
+ def global_path
75
+ File.expand_path("~/.stastic")
76
+ end
77
+ end
78
+ end
79
+
@@ -0,0 +1,50 @@
1
+ require 'tempfile'
2
+
3
+ Dir["#{File.dirname(__FILE__)}/generators/*.rb"].each { |c| require c }
4
+
5
+ module Stastic
6
+ module Generator
7
+ extend self
8
+
9
+ GENERATOR_TYPES = %w(jekyll default)
10
+ EXCLUDE_LIST = [
11
+ ".stastic",
12
+ ".git",
13
+ ".svn",
14
+ ".DS_Store",
15
+ "*.php",
16
+ "*.rb",
17
+ "*.haml",
18
+ "*.sass",
19
+ "*.pl",
20
+ "*.py",
21
+ "*.asp"]
22
+
23
+
24
+ def detect
25
+ GENERATOR_TYPES.each do |type|
26
+ generator = eval("Stastic::Generator::#{type.capitalize}")
27
+ return generator if(generator.send(:detect))
28
+ end
29
+ end
30
+
31
+ def package(dir)
32
+ tmpfile = Tempfile.new('st-archive')
33
+ system "cd #{dir} && tar -cjf #{tmpfile.path} -X #{exclude_file(dir)} . "
34
+ tmpfile.path
35
+ end
36
+
37
+ private
38
+
39
+ def exclude_file(dir)
40
+ tmpfile = Tempfile.new('st-exclude')
41
+ EXCLUDE_LIST.each do |pattern|
42
+ tmpfile << "#{pattern}\n"
43
+ end
44
+ tmpfile.flush
45
+ tmpfile.close
46
+ tmpfile.path
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,31 @@
1
+ require 'server'
2
+
3
+ module Stastic::Generator
4
+ module Default
5
+ extend self
6
+
7
+ def desc
8
+ "Default Generator"
9
+ end
10
+
11
+ def detect
12
+ true
13
+ end
14
+
15
+ def site_root
16
+ Stastic::Config.site_root || Dir.pwd
17
+ end
18
+
19
+ def build; end
20
+
21
+ def package
22
+ Stastic::Generator.package(site_root)
23
+ end
24
+
25
+ def preview
26
+ FileUtils.mkdir_p(site_root)
27
+ server = ::Server.new(site_root, 3000)
28
+ server.start
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,72 @@
1
+ module Stastic::Generator
2
+ module Jekyll
3
+ extend self
4
+
5
+ def desc
6
+ "Jekyll Generator"
7
+ end
8
+
9
+ def detect
10
+ FileTest.exists?('_config.yml') ||
11
+ (FileTest.exists?('_site') && File.directory?('_site'))
12
+ end
13
+
14
+ def site_root
15
+ Stastic::Config.site_root || "_site"
16
+ end
17
+
18
+ def build
19
+ verify_gem
20
+ system("jekyll")
21
+ end
22
+
23
+ def package
24
+ Stastic::Generator.package(site_root)
25
+ end
26
+
27
+ def preview
28
+ verify_gem
29
+ system("jekyll --server")
30
+ end
31
+
32
+ private
33
+
34
+ def gem_installed?
35
+ begin
36
+ gem "jekyll"
37
+ true
38
+ rescue LoadError
39
+ false
40
+ end
41
+ end
42
+
43
+ def verify_gem
44
+ if !gem_installed?
45
+ puts install_instructions
46
+ exit
47
+ end
48
+ end
49
+
50
+ def install_instructions
51
+ <<-EOF
52
+ The Jekyll Gem can not be found on your GEM_PATH.
53
+ GEM_PATH=#{ENV['GEM_PATH']}
54
+
55
+ To Install Jekyll:
56
+ ------------------
57
+
58
+ sudo gem install jekyll
59
+
60
+ EOF
61
+ end
62
+
63
+ def jekyll_detection_instructions
64
+ <<-EOF
65
+ A Jekyll Project was not detected in #{Dir.pwd}
66
+
67
+ Stastic looks of _config.yml or _site to detect Jekyll.
68
+
69
+ EOF
70
+ end
71
+ end
72
+ end
data/lib/stastic.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Stastic
2
2
 
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
 
5
5
  end