@@ -2,55 +2,52 @@ package main
2
2
3
3
import (
4
4
"encoding/json"
5
+ "flag"
5
6
"fmt"
6
7
"net/url"
7
8
"os"
8
9
9
10
"github.com/otiai10/opengraph/v2"
10
- "github.com/urfave/cli"
11
11
)
12
12
13
13
func main () {
14
- app := cli .NewApp ()
15
- app .Version = "2.0.0"
16
- app .Usage = "Fetch URL and extract OpenGraph meta informations."
17
- app .UsageText = "ogp [-A] {URL}"
18
- app .Flags = []cli.Flag {
19
- cli.BoolFlag {
20
- Name : "absolute,A" ,
21
- Usage : "populate relative URLs to absolute URLs" ,
22
- },
23
- }
24
- app .Action = func (ctx * cli.Context ) error {
25
- rawurl := ctx .Args ().First ()
26
- if rawurl == "" {
27
- return fmt .Errorf ("URL must be specified" )
28
- }
29
- u , err := url .Parse (rawurl )
30
- if err != nil {
31
- return err
32
- }
33
- if u .Scheme == "" {
34
- u .Scheme = "https"
35
- }
36
- og := opengraph .New (u .String ())
37
- if err := og .Fetch (); err != nil {
38
- return err
39
- }
40
- if ctx .Bool ("absolute" ) {
41
- if err := og .ToAbs (); err != nil {
42
- return err
43
- }
44
- }
45
- b , err := json .MarshalIndent (og , "" , "\t " )
46
- if err != nil {
47
- return err
48
- }
49
- fmt .Printf ("%+v\n " , string (b ))
50
- return nil
14
+ flagset := flag .CommandLine
15
+ flagset .Usage = func () {
16
+ fmt .Println ("Fetch URL and extract OpenGraph meta informations." )
51
17
}
52
- if err := app .Run (os .Args ); err != nil {
18
+ abs := flagset .Bool ("A" , false , "populate relative URLs to absolute URLs" )
19
+ flagset .Parse (os .Args [1 :])
20
+ if err := run (flagset .Args (), * abs ); err != nil {
53
21
fmt .Println ("Error:" , err .Error ())
54
22
os .Exit (1 )
55
23
}
56
24
}
25
+
26
+ func run (args []string , absolute bool ) error {
27
+ if len (args ) == 0 {
28
+ return fmt .Errorf ("URL must be specified" )
29
+ }
30
+ rawurl := args [0 ]
31
+ u , err := url .Parse (rawurl )
32
+ if err != nil {
33
+ return err
34
+ }
35
+ if u .Scheme == "" {
36
+ u .Scheme = "https"
37
+ }
38
+ og := opengraph .New (u .String ())
39
+ if err := og .Fetch (); err != nil {
40
+ return err
41
+ }
42
+ if absolute {
43
+ if err := og .ToAbs (); err != nil {
44
+ return err
45
+ }
46
+ }
47
+ b , err := json .MarshalIndent (og , "" , "\t " )
48
+ if err != nil {
49
+ return err
50
+ }
51
+ fmt .Printf ("%+v\n " , string (b ))
52
+ return nil
53
+ }
0 commit comments