git-upgrade
2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/bin/sh
set -e
export RAILS_ENV=production
say(){
  echo -e "\033[33;01m$0: $1\033[m"
}
get_value(){
  ruby -ryaml -e "puts YAML.load_file('config/database.yml')['$RAILS_ENV']['$1']"
}
usage(){
  echo "usage: $0 [OPTIONS]"
  echo
  echo "Options:"
  echo
  echo "  -s, --shell     Opens a shell just after upgrading code and"
  echo "                  database to make manual steps if needed"
  echo
  echo "  -h, --help      Displays the help (this screen)"
  echo
  echo "  -v, --version   Displays Noosfero current version"
  echo
  exit $1
}
version(){
  version=$(ruby -Ilib -rnoosfero -e 'puts Noosfero::VERSION')
  echo "Noosfero version $version"
  exit 0
}
stop_service(){
  say "Stopping service"
  ./script/production stop || say "Stop failed, trying to continue anyway"
  sudo /etc/init.d/memcached restart
}
start_service(){
  say "Starting service"
  ./script/production start
}
upgrade_code(){
  say "Upgrading code"
  # db:migrate always changes this
  git checkout db/schema.rb
  git pull --quiet
  say "Compiling translations"
  rake noosfero:translations:compile 2>/dev/null || (echo "Translations compilation failed; run manually to check"; false)
  # remove cached files
  rm -f public/javascripts/cache*.js
  rm -f public/stylesheets/cache*.css
}
upgrade_database(){
  say "Upgrading database"
  rake db:migrate
  if test "$shell" = "yes"; then
    echo "################################################"
    echo "# Noosfero upgrade shell                       #"
    echo "################################################"
    echo "#                                              #"
    echo "# If you need to do any manual steps during    #"
    echo "# this upgrade, now is the time.               #"
    echo "#                                              #"
    echo "# After you finish, just exit this shell and   #"
    echo "# the upgrade will proceed                     #"
    echo "################################################"
    export PS1="[Noosfero upgrade] $PS1"
    bash --rcfile config/bashrc
  fi
}
shell=no
while test $# -gt 0; do
  case "$1" in
    -s|--shell)
      shell=yes
      ;;
    -h|--help)
      usage 0
      ;;
    -v|--version)
      version
      ;;
    *)
      usage 1
      ;;
  esac
  shift
done
stop_service
upgrade_code
upgrade_database
start_service