briefcase 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # Briefcase
2
+
3
+ [Briefcase](http://jim.github.com/briefcase/) is a tool to facilitate keeping dotfiles in git, including those with private information (such as .gitconfig).
4
+
5
+ By keeping your configuration files in a git public git repository, you can share your settings with others. Any secret information is kept in a single file outside the repository (it’s up to you to backup and transport this file).
6
+
7
+ [The project homepage](http://jim.github.com/briefcase/) includes
8
+ installation and usage documentation.
9
+
10
+ [![Build Status](https://secure.travis-ci.org/jim/briefcase.png)](http://travis-ci.org/jim/briefcase)
11
+
12
+ ## Changelog
13
+
14
+ * 0.4.1 Git command now properly passes options through to git, and also allows
15
+ git output to display in color.
16
+
17
+ Path environment variables inherit settings for parent directories.
18
+ * 0.4.0 Renamed project to Briefcase. First public release.
19
+ * 0.3.0 Added code documentation, internal renaming, general cleanup. First public release.
20
+ * 0.2.0 Added redact command, use .redacted for dynamic dotfiles
21
+ * 0.1.3 The sync command no longer creates symlinks for dynamic files
22
+ * 0.1.2 Added dynamic file generation
23
+
24
+ ## Note on Patches/Pull Requests
25
+ * Fork the project.
26
+ * Make your feature addition or bug fix on a topic branch.
27
+ * Add tests for it. This is important so I don't break it in a future version unintentionally.
28
+ * Commit, do not mess with rakefile, version, or history.
29
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
30
+ * Send me a pull request.
31
+
32
+ ## Copyright
33
+
34
+ Copyright (c) 2012 Jim Benton. See LICENSE for details.
data/briefcase.gemspec CHANGED
@@ -10,21 +10,18 @@ Gem::Specification.new do |s|
10
10
  s.default_executable = %q{briefcase}
11
11
  s.email = %q{jim@autonomousmachine.com}
12
12
  s.executables = ["briefcase"]
13
- s.extra_rdoc_files = %w{README.rdoc LICENSE}
14
13
  s.files = Dir['lib/**/*.rb'] + # library
15
14
  Dir['bin/*'] + # executable
16
15
  Dir['spec/**/*.rb'] + # spec files
17
16
  Dir['spec/bin/editor'] + # spec editor
18
- %w{README.rdoc LICENSE briefcase.gemspec Rakefile} # misc
17
+ %w{README.md LICENSE briefcase.gemspec Rakefile} # misc
19
18
 
20
19
  s.homepage = %q{http://github.com/jim/briefcase}
21
- s.rdoc_options = ["--charset=UTF-8"]
22
20
  s.require_paths = ["lib"]
23
21
  s.rubygems_version = %q{1.3.7}
24
22
  s.test_files = Dir['spec/*.rb']
25
23
 
26
24
  s.add_runtime_dependency('commander')
27
- s.add_runtime_dependency('activesupport')
28
25
  s.add_development_dependency('minitest')
29
26
  s.add_development_dependency('open4')
30
27
  s.add_development_dependency('rake', '0.9.2.2')
@@ -28,7 +28,8 @@ module Briefcase
28
28
  private
29
29
 
30
30
  def run_git_command(command)
31
- puts `cd #{dotfiles_path} && git #{command}`
31
+ $stdout.flush
32
+ exec "cd #{dotfiles_path} && git #{command}"
32
33
  end
33
34
 
34
35
  end
@@ -1,6 +1,17 @@
1
- require 'commander/import'
1
+ require 'highline/import'
2
2
  require File.expand_path('../briefcase', File.dirname(__FILE__))
3
3
 
4
+ # In the case of the git passthrough command, we want to pass the complete command
5
+ # off to git so the options aren't mangled by Commander.
6
+ #
7
+ # Initializing a Briefcase::Commands::Git object will eventually call out to
8
+ # git using exec, so this script will be aborted.
9
+ if ARGV[0] == 'git'
10
+ Briefcase::Commands::Git.new(ARGV[1..-1], {})
11
+ end
12
+
13
+ require 'commander/import'
14
+
4
15
  program :name, 'Briefcase'
5
16
  program :version, Briefcase::VERSION
6
17
  program :description, 'Makes it easier to keep dotfiles in git'
@@ -29,10 +40,11 @@ command :generate do |c|
29
40
  c.when_called Briefcase::Commands::Generate
30
41
  end
31
42
 
43
+ # This is a placeholder so that this command appears in the documentation. Any git
44
+ # passthrough commands are caught earlier in this file.
32
45
  command :git do |c|
33
46
  c.syntax = 'briefcase git [options]'
34
47
  c.description = 'Run a git command in the dotfiles directory'
35
- c.when_called Briefcase::Commands::Git
36
48
  end
37
49
 
38
50
  default_command :help
@@ -1,3 +1,3 @@
1
1
  module Briefcase
2
- VERSION = '0.4.0'
2
+ VERSION = '0.4.1'
3
3
  end
data/lib/briefcase.rb CHANGED
@@ -1,34 +1,38 @@
1
1
  require 'yaml'
2
2
 
3
- require 'active_support/core_ext/hash/deep_merge'
4
-
5
3
  require File.expand_path('briefcase/commands', File.dirname(__FILE__))
6
4
  require File.expand_path('briefcase/version', File.dirname(__FILE__))
7
5
 
8
6
  module Briefcase
9
7
 
10
- # The user's home path
11
- DEFAULT_HOME_PATH = '~'
8
+ class << self
9
+ attr_accessor :dotfiles_path, :home_path, :secrets_path, :testing
12
10
 
13
- # The default path wher dotfiles are stored
14
- DEFAULT_DOTFILES_PATH = File.join(DEFAULT_HOME_PATH, '.dotfiles')
11
+ # The user's home path
12
+ def default_home_path
13
+ '~'
14
+ end
15
15
 
16
- # The default path to where secret information is stored
17
- DEFAULT_SECRETS_PATH = File.join(DEFAULT_HOME_PATH, '.briefcase_secrets')
16
+ # The default path where dotfiles are stored
17
+ def default_dotfiles_path
18
+ File.join(home_path, '.dotfiles')
19
+ end
18
20
 
19
- class << self
20
- attr_accessor :dotfiles_path, :home_path, :secrets_path, :testing
21
+ # The default path to where secret information is stored
22
+ def default_secrets_path
23
+ File.join(home_path, '.briefcase_secrets')
24
+ end
21
25
 
22
26
  def dotfiles_path
23
- @dotfiles_path ||= File.expand_path(ENV['BRIEFCASE_DOTFILES_PATH'] || DEFAULT_DOTFILES_PATH)
27
+ @dotfiles_path ||= File.expand_path(ENV['BRIEFCASE_DOTFILES_PATH'] || default_dotfiles_path)
24
28
  end
25
29
 
26
30
  def home_path
27
- @home_path ||= File.expand_path(ENV['BRIEFCASE_HOME_PATH'] || DEFAULT_HOME_PATH)
31
+ @home_path ||= File.expand_path(ENV['BRIEFCASE_HOME_PATH'] || default_home_path)
28
32
  end
29
33
 
30
34
  def secrets_path
31
- @secrets_path ||= File.expand_path(ENV['BRIEFCASE_SECRETS_PATH'] || DEFAULT_SECRETS_PATH)
35
+ @secrets_path ||= File.expand_path(ENV['BRIEFCASE_SECRETS_PATH'] || default_secrets_path)
32
36
  end
33
37
 
34
38
  def testing?
data/spec/git_spec.rb CHANGED
@@ -11,7 +11,7 @@ describe Briefcase::Commands::Git do
11
11
  cleanup_dotfiles_directory
12
12
  end
13
13
 
14
- it "creates links to existing files" do
14
+ it "passes commands through to git" do
15
15
  create_file(dotfiles_path + '/test.txt', 'testing git integration')
16
16
  run_command("git status")
17
17
 
@@ -28,7 +28,7 @@ def cleanup_home_directory
28
28
  end
29
29
 
30
30
  def create_git_repo
31
- mkdir_p(File.join(dotfiles_path, '.git'))
31
+ `cd #{dotfiles_path} && git init`
32
32
  end
33
33
 
34
34
  def create_dotfiles_directory
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: briefcase
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 1
10
+ version: 0.4.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jim Benton
@@ -32,7 +32,7 @@ dependencies:
32
32
  type: :runtime
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency
35
- name: activesupport
35
+ name: minitest
36
36
  prerelease: false
37
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
38
  none: false
@@ -43,10 +43,10 @@ dependencies:
43
43
  segments:
44
44
  - 0
45
45
  version: "0"
46
- type: :runtime
46
+ type: :development
47
47
  version_requirements: *id002
48
48
  - !ruby/object:Gem::Dependency
49
- name: minitest
49
+ name: open4
50
50
  prerelease: false
51
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
52
  none: false
@@ -59,24 +59,10 @@ dependencies:
59
59
  version: "0"
60
60
  type: :development
61
61
  version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: open4
64
- prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
74
- type: :development
75
- version_requirements: *id004
76
62
  - !ruby/object:Gem::Dependency
77
63
  name: rake
78
64
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
65
+ requirement: &id004 !ruby/object:Gem::Requirement
80
66
  none: false
81
67
  requirements:
82
68
  - - "="
@@ -89,11 +75,11 @@ dependencies:
89
75
  - 2
90
76
  version: 0.9.2.2
91
77
  type: :development
92
- version_requirements: *id005
78
+ version_requirements: *id004
93
79
  - !ruby/object:Gem::Dependency
94
80
  name: turn
95
81
  prerelease: false
96
- requirement: &id006 !ruby/object:Gem::Requirement
82
+ requirement: &id005 !ruby/object:Gem::Requirement
97
83
  none: false
98
84
  requirements:
99
85
  - - ">="
@@ -103,16 +89,15 @@ dependencies:
103
89
  - 0
104
90
  version: "0"
105
91
  type: :development
106
- version_requirements: *id006
92
+ version_requirements: *id005
107
93
  description: Command line program to migrate dotfiles to a git repo at ~/.dotfiles and generate static dotfiles with secret values.
108
94
  email: jim@autonomousmachine.com
109
95
  executables:
110
96
  - briefcase
111
97
  extensions: []
112
98
 
113
- extra_rdoc_files:
114
- - README.rdoc
115
- - LICENSE
99
+ extra_rdoc_files: []
100
+
116
101
  files:
117
102
  - lib/briefcase/commands/base.rb
118
103
  - lib/briefcase/commands/core/files.rb
@@ -138,7 +123,7 @@ files:
138
123
  - spec/spec_helper.rb
139
124
  - spec/sync_spec.rb
140
125
  - spec/bin/editor
141
- - README.rdoc
126
+ - README.md
142
127
  - LICENSE
143
128
  - briefcase.gemspec
144
129
  - Rakefile
@@ -146,8 +131,8 @@ homepage: http://github.com/jim/briefcase
146
131
  licenses: []
147
132
 
148
133
  post_install_message:
149
- rdoc_options:
150
- - --charset=UTF-8
134
+ rdoc_options: []
135
+
151
136
  require_paths:
152
137
  - lib
153
138
  required_ruby_version: !ruby/object:Gem::Requirement
data/README.rdoc DELETED
@@ -1,104 +0,0 @@
1
- = briefcase
2
-
3
- briefcase is a tool to facilitate keeping dotfiles in git, including those with private information (such as .gitconfig).
4
-
5
-
6
- === This is alpha software! I haven't published a gem yet for a good reason. Use at your own risk.
7
-
8
-
9
- == Getting started
10
-
11
- gem install briefcase
12
- briefcase import ~/.bashrc
13
-
14
- At this point, a git repository will have been created at ~/.dotfiles. At some point more of the git workflow will be automated (such as creating a repository at Github), but for now most git tasks are manual:
15
-
16
- cd ~/.dotfiles
17
- git commit -m "Added bashrc"
18
-
19
- == Filesystem layout
20
-
21
- With briefcase, dotfiles are stored in a centralized location (by default ~/.dotfiles), and symlinks are created for these files in the user's home directory. Here is a basic setup for a .gitconfig file:
22
-
23
- +-~/ Home Directory
24
- | +-.briefcase_secrets Secrets file
25
- | +-.gitconfig Symlink to ~/.dotfiles/gitconfig
26
- | +-.dotfiles/ Dotfiles directory
27
- | | +-gitconfig Standard Dotfile
28
- | | +-gitconfig.dynamic Redacted dotfile
29
-
30
- === Home directory (~)
31
-
32
- Where the action happens. Dotfiles that normally exist here are replaced by symlinks to files in the dotfiles directory
33
-
34
- === Dotfiles directory (~/)
35
-
36
- Where dotfiles are stored. There are two types of dotfiles.
37
-
38
- ==== Standard dotfiles
39
-
40
- A basic config file that would normally live in a user's home directory.
41
-
42
- ==== Redacted dotfiles
43
- A config file that contains some secret information. The file is stored, sans secret info, with a '.redacted' extension in the repo. The dotfile that is symlinked to the user's home directory is then generated from this file.
44
-
45
- === Secrets file
46
-
47
- This file, be default located at ~/.briefcase_secrets, contains the information removed from dotfiles imported using the redact command.
48
-
49
- == Commands
50
-
51
- === import PATH_TO_FILE
52
-
53
- Imports a dotfile into thedotfiles directory, moving it to the dotfiles directory and replacing it with a symlink to its new location.
54
-
55
-
56
- === redact PATH_TO_FILE
57
-
58
- Imports a dotfile that contains sensitive information. The user is presented with an editor, where the sensitive information can be removed by replacing secret information with a commented out call to a briefcase function
59
-
60
- # before
61
- password: superSecretPassword
62
-
63
- # after
64
- password: # briefcase(password)
65
-
66
- This file is then saved with a '.redacted' extension, and the original file is added to ~/.dotfiles/.gitignore so it will not be added to the repository.
67
-
68
- 'superSecretPassword' will be stored using the key "password" in the secrets file.
69
-
70
-
71
- === sync
72
- Creates a symlink in the user's home directory for each dotfile in the dotfiles directory.
73
-
74
-
75
- === generate
76
- Creates local version of a redacted dotfile, using information found in the secrets file to fill in any that was removed.
77
-
78
-
79
- == Configuration
80
-
81
- The following environment variables can by used to customized the paths used by briefcase:
82
-
83
- SHHH_DOTFILES_PATH: dotfiles path, defaults to SHHH_HOME_PATH/.dotfiles
84
- SHHH_HOME_PATH: home path, defaults to ~
85
- SHHH_SECRETS_PATH: secrets path, defaults to SHHH_HOME_PATH/.briefcase_secrets
86
-
87
- == Note on Patches/Pull Requests
88
-
89
- * Fork the project.
90
- * Make your feature addition or bug fix on a topic branch.
91
- * Add tests for it. This is important so I don't break it in a future version unintentionally.
92
- * Commit, do not mess with rakefile, version, or history.
93
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
94
- * Send me a pull request.
95
-
96
- == Changelog
97
- * 0.3.0 Added code documentation, internal renaming, general cleanup. First public release.
98
- * 0.2.0 Added redact command, use .redacted for dynamic dotfiles
99
- * 0.1.3 The sync command no longer creates symlinks for dynamic files
100
- * 0.1.2 Added dynamic file generation
101
-
102
- == Copyright
103
-
104
- Copyright (c) 2010 Jim Benton. See LICENSE for details.